OpenVZ ááœááºááááºáá¬ááᯠKVM virtualization á¡ááŒáá·áºááŒáá·áº áá¬áá¬áá áºáá¯ááá¯á· ááœáŸá²ááŒá±á¬ááºážááẠááá¯á¡ááºáá°ááá¯ááºážááẠáááºážááá¯á·áááááœáẠá¡áááºážáá¯á¶ážáá áºááŒááẠááŒá¿áá¬á¡áá»áá¯á·ááᯠááŒá¯á¶ááœá±á·áá²á·ááááº-
- á¡áá»ááºá¡áááºá¡áá»á¬ážá á¯ááẠááá¯ážááá¯ážááŸááºážááŸááºáž áá±ááºáá±á¬ááºáá»áá±ááŒá®áž EOL áááºáááºááŸá¯ ááŒá¬ááŒáá·áºáá²á·áá±á¬ OS áá»á¬ážá¡ááœáẠáááºááá¯ááºáá«áááºá
- ááá°áá®áá±á¬ áááºáááºááŸá¯á áá áºáá»á¬ážá¡ááœáẠááá°áá®áá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠá¡ááŒá²áááºáž áá¶á·ááá¯ážáá±ážáá¬ážááŒá®áž ááŒá±á¬ááºážááœáŸá±á·ááŸá¯á¡ááœááºáž ááŒá áºááá¯ááºáá±á¬ á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáááºááá·áºá¡áá«áá»áŸ ááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá«á
- ááá«ááá¶ááŸá¬ ááœáŸá±á·ááŒá±á¬ááºážááŒá®ážááŒá®ážáá»ááºáž á¡áá¯ááºááá¯ááºáá»ááºáá±á¬á·áá²á· configuration ááœá±áá²á· áááºáá¶ááááºáá«áááºá
áá¬áᬠ1 áá¯ááᯠááœáŸá²ááŒá±á¬ááºážááá·áºá¡áá«ááœáẠáááºááẠáá áºáá¯áá¯ááᯠá¡ááŒá²áááºáž ááŒááºáááºááá¯ááºáá±á¬áºáááºáž á¡á á¯á¡áá±ážáá áºáá¯áá¯á¶ážááᯠááœáŸá²ááŒá±á¬ááºážááá·áºá¡áá«ááœááºá
á€áá±á¬ááºážáá«ážááœáẠOpenVZ ááœááºááááºáá¬ááᯠKVM ááá¯á· áááºáá²á·ááá¯á· ááŸááºáááºá áœá¬ ááœáŸá±á·ááŒá±á¬ááºážáááºááŸáá·áº ááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááŒááºááŒá±ááŸááºážáááºážááŒáá·áº á€áá±á¬ááºážáá«ážááœáẠáá»áœááºá¯ááºááŒá±á¬ááŒáá«áááºá
áá±ážáááºáá±á¬ ááá¬áá±ážááá¯ááºáᬠáááá¯ááááºáá áºáá¯- OpenVZ áá°ááẠá¡áááºáááºážá KVM áá°ááẠá¡áááºáááºážá
áá»áœááºá¯ááºááá¯á·ááẠáá±á«áá¬ááá±áááᯠáááºáá²á áœá¬ ááá±á·áá¬áá² áá±áá°áá»á¡á¬ážááŒáá·áº ááŒá±á¬áá«áááºá
OpenVZ - áááºáááºááŸá¯á áá áºá¡ááá·áºááœáẠvirtualizationá CPU ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŸáá·áº host machine ááœáẠvirtualization áááºážááá¬áá»á¬ážáááá¯á¡ááºáá±á¬ááŒá±á¬áá·áºáááºážááá¯ááá¯ááºáááá¯áá±á·áá±á«áºááœááºáááºá¡áá¯á¶ážáá»ááá¯ááºáááºá
KVM - CPU á áá«áá«á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááŒáá·áºá¡á virtualizationá áááºážááᯠá¡ááŸááºááá¯ááºááŸáá·áº crosswise ááŒááºáá±á¬ááºáᬠáááºááá·áºá¡áá¬ááá¯áááᯠvirtualizing áá¯ááºááá¯ááºá áœááºážááŸááááºá
OpenVZ ááẠhosting áááºáá±á¬ááºááŸá¯áá±ážáá°áá»á¬ážááŒá¬ážááœáẠoversold ááŒá áºáá¬áááºáá¯áá°ááŒáá¯ááºáá»á¬ážáá±á¬áá¯á¶ááŒááºáá»ááºááŸáá·áºááá·áºáá»ááºááẠKVM áááºáá¶áá±á¬ááºážáááºááŸá¬ááᯠKVM áááºáááºážáá¡á áºááá¯áááºáááá¯ážáá«á
áá«ááá¯á· áá¬ááᯠáá±á¬ááºááŒááá²á
ááœáŸá²ááŒá±á¬ááºážááŸá¯á¡ááœáẠá ááºážáááºááŸá¯áá¬áá¬áááºáá»á¬ážá¡áá±ááŸáá·áº OpenVZ: CentOS (6 ááŸáá·áº 7 áá¬ážááŸááºážáá»á¬áž)á Ubuntu (14á 16 ááŸáá·áº 18 LTS)á Debian 7 ááœááºáááŸáááá¯ááºááá·áº áááºáááºááŸá¯á áá áºáá áºáá±á¬áá áºáá¯áá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááááºááŒá áºáááºá
OpenVZ ááœááºááááºáá¬á¡áá»á¬ážá á¯ááẠLAMP á¡áá»áá¯ážá¡á á¬ážá¡áá»áá¯á·ááᯠá¡áá¯á¶ážááŒá¯áá±ááŒá®ááŒá áºááŒá®áž á¡áá»áá¯á·ááŸá¬ á¡ááœááºáááá»áá±á¬áá±á¬á·ááºáá²ááºá¡áá»áá¯á·ááŸááá±ááŒá®áᯠáá°áááááºá á¡áá»á¬ážá á¯ááŸá¬á áááºážááá¯á·ááẠISPmanagerá VestaCP ááááºážáá»á¯ááºááŸá¯áá±á¬áẠ(ááŸáá·áº á¡áá»á¬ážá¡á¬ážááŒáá·áº ááŸá áºáá±á«ááºážáá»á¬ážá áœá¬ ááœááºážáá¶ááœááºážáá¶ááŒááºáž) ááŒáá·áº ááœá²á·á ááºážááŸá¯áá»á¬ážááŒá áºáááºá áááºážááá¯á·á ááœáŸá²ááŒá±á¬ááºážáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááá¯áááºáž ááá·áºááœááºážá ááºážá á¬ážááááºááŒá áºáááºá
ááœáŸá²ááŒá±á¬ááºážáá¬ážáá±á¬ááœááºááááºáá¬á IP ááááºá á¬ááᯠááááºážááááºážáá¬ážá áẠááœáŸá±á·ááŒá±á¬ááºážááŒááºážá¡á¬áž áá¯ááºáá±á¬ááºáááºáá ááœááºááááºáá¬ááœááºááŸááá±á¬ IP ááᯠââVM ááœáẠááááºážáááºážááŒá®áž ááŒá¿áá¬áááŸááá² á¡áá¯ááºáá¯ááºáááºáᯠáá»áœááºá¯ááºááá¯á· áá°ááá«áááºá
áááœáŸá²ááŒá±á¬ááºážáá®á áá»áœááºá¯ááºááá¯á·ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááŸááá±ááŒá±á¬ááºáž áá±áá»á¬á á±ááŒáá«á áá¯á·á
- OpenVZ áá¬áá¬á áááºáá¶áá°á ááºááá¯á· á¡ááŒáá·áºá¡á á¡ááŒá áºáááºáá±á¬ááºááœáá·áºá ááœááºááááºáá¬áá»á¬ážááᯠáááºáááº/áááºáááº/á áááº/áá»ááºááá¯ááºááŸá¯
- KVM áá¬áá¬á áááºážááẠá¡áááá¹áá¬ááºááœáá·áºááá¯áá»ááºá¡á¬ážáá¯á¶ážááŸáá·áºá¡áá° host machine ááá¯á· á¡ááŒáá·áºá¡áá¡ááŒá áºáááºáá±á¬ááºááœáá·áºá á¡á¬ážáá¯á¶ážááŒááºáááºááŒá®ážááŒá®áž á¡áááºááá·áºááŒá áºáá±ááŒá®áᯠáá°ááá«áááºá
á áááºááœáŸá²ááŒá±á¬ááºážááŒáá«á áá¯á·
ááœáŸá²ááŒá±á¬ááºážááŒááºážáá áááºáá® ááá·áºá¡á¬áž á áááºááŸá¯ááºááœá±ážááŸá¯ááᯠááŸá±á¬ááºááŸá¬ážááẠáá°áá®áá±ážááá·áº á ááºážáááºážáá»ááºáá»á¬ážááᯠáááºááŸááºááŒáá«á áá¯á·á
KVM_NODE - KVM áááºáá¬ááá¬á
ááº
VZ_NODE - OpenVZ host á
ááº
CTID - OpenVZ ááœááºááááºáá¬
VM - KVM virtual áá¬áá¬
ááœáŸá±á·ááŒá±á¬ááºážááŒááºážááŸáá·áº virtual machines áááºáá®ážááŒááºážá¡ááœáẠááŒááºáááºááŒááºážá
ááŒá±ááŸááºáž 1
ááœááºááááºáá¬ááᯠáá
áºáá±áá¬áá¬ááᯠááœáŸá±á·ááá¯á· ááá¯á¡ááºáá¬ááŒá±á¬áá·áº áááºáá®ážáá«áááºá VM á¡áá¬ážáá° configuration ááŸáá·áº KVM_NODE.
á¡áá±ážááŒá®áž! CTID ááœáẠáááºááŸááá¯ááºáá±á¬ááºáá±áá±á¬ áááºáááºááŸá¯á
áá
áºááœáẠVM áá
áºáá¯ááᯠáááºáá®ážááẠááá¯á¡ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá Ubuntu 14 ááᯠCTID ááœáẠááá·áºááœááºážáá¬ážáá«áá Ubuntu 14 ááᯠVM ááœáẠááá·áºááœááºážááá«áááºá á¡áá±ážá¡ááœá²áá¬ážááŸááºážáá»á¬ážááẠá¡áá±ážáááŒá®ážáá«á áááºážááá¯á·á ááœá¬ááá»ááºááẠá¡ááœááºá¡áá±ážááŒá®ážáá±á¬áºáááºáž áá¬ážááŸááºážááŒá®ážáá»á¬ážááẠá¡áá°áá°áááºááŒá
áºááá·áºáááºá
VM ááá¯áááºáá®ážááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠCTID ááŸáá·áº VM áá±á«áºááŸá áááºáá±á·áá»áºáá»á¬ážááᯠá¡ááºááááºáá¯ááºááẠ(OS ááᯠá¡ááºááááºáá¯ááºááŒááºážááŸáá·áº ááá±á¬ááœá±ážáá« - áá»áœááºá¯ááºááá¯á· áááºážááᯠáá¡ááºááááºááá¯ááºáá«á áááºáá±á·áá»áºáá»á¬ážááá¯áᬠá¡ááºááááºáá¯ááºááŒá®ážá áááºážáá±á¬ááºááŸááá«á áááºáá¡ááœááºážááŸá OS áá¬ážááŸááºáž áá¬ážááŸááºáž)á
CentOS á¡ááœáẠá€áá¯ááºáááºážá ááºááẠá¡áá¹ááá¬ááºáááŸááá¯á¶áá±á«áºáááº-
# yum clean all
# yum update -y
Ubuntu ááŸáá·áº Debian á¡ááœáẠá¡áá¹ááá¬ááºááááºáááŸááá« á
# apt-get update
# apt-get upgrade
ááŒá±ááŸááºáž 2
ááá·áºááœááºážáá«á CTID, VZ_NODE О VM utility rsync:
CentOS:
# yum install rsync -y
Debianá Ubuntu
# apt-get install rsync -y
áá»áœááºá¯ááºááá¯á·ááẠááá¯áá±áá¬áááŒá áºá á± á¡ááŒá¬ážáááºááá·áºá¡áá¬ááá¯áá»áŸ ááá·áºááœááºážááŒááºážáááŒá¯áá«á
ááŒá±ááŸááºáž 3
áá«ááá¯á·á áá¬ážáááºá CTID á¡áá±á«áº VZ_NODE á¡áááºážá¡ááœá²á·
vzctl stop CTID
áá¯á¶ááᯠáááºáááºááŒááºážá CTID:
vzctl mount CTID
/vz/root/ folder ááá¯ááœá¬ážáá«áCTID ááŸáá·áº execute
mount --bind /dev dev && mount --bind /sys sys && mount --bind /proc proc && chroot .
á¡ááŒá áºá¡á±á¬ááºááœááºá /root/exclude.txt ááá¯ááºáá áºáá¯áááºáá®ážáá« - áááºážááœáẠáá¬áá¬á¡áá áºááá¯á· ááá±á¬ááºááá¯ááºáá±á¬ ááŒáœááºážáá»ááºá á¬áááºážáá áºáá¯áá«ááŸááááºá
/boot
/proc
/sys
/tmp
/dev
/var/lock
/etc/fstab
/etc/mtab
/etc/resolv.conf
/etc/conf.d/net
/etc/network/interfaces
/etc/networks
/etc/sysconfig/network*
/etc/sysconfig/hwconf
/etc/sysconfig/ip6tables-config
/etc/sysconfig/kernel
/etc/hostname
/etc/HOSTNAME
/etc/hosts
/etc/modprobe*
/etc/modules
/net
/lib/modules
/etc/rc.conf
/usr/share/nova-agent*
/usr/sbin/nova-agent*
/etc/init.d/nova-agent*
/etc/ips
/etc/ipaddrpool
/etc/ips.dnsmaster
/etc/resolv.conf
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-ens3
áá»áœááºáá±á¬áºááá¯á·á áá»áááºáááºáááºá KVM_NODE áá«ááá¯á·ááá¯ááœáá·áºáá«á VMááá¯á·ááŸáᬠáááºážááẠá¡áá¯ááºáá¯ááºá ááœááºáááºáá±á«áºááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºáááºá
á¡áá¯áá±á¬á· á¡á¬ážáá¯á¶áž ááŒá±á¬ááºážááœáŸá±á·ááá¯á· á¡áááºááá·áºááŒá áºáá±áá«ááŒá®á ááœá¬áž!
ááŒá±ááŸááºáž 4
ááŸáá¯á·ááŸáá¯ááºážááŸá¯á¡á±á¬ááºááœáẠáá»áœááºá¯ááºááá¯á·áá¯ááºáá±á¬ááºáá±áá«áááºá
rsync --exclude-from="/root/exclude.txt" --numeric-ids -avpogtStlHz --progress -e "ssh -T -o Compression=no -x" / root@KVM_NODE:/
rsync command ááẠááœáŸá²ááŒá±á¬ááºážááŒááºážááᯠáá¯ááºáá±á¬ááºáá±ážáááá·áºáááºá áá±á¬á·áá»á¬ážááẠááŸááºážááŸááºážáááºážáááºážááŸááááºáᯠáá»áœááºá¯ááºááá¯á· áá»áŸá±á¬áºááá·áºáá«ááẠ- ááœáŸá²ááŒá±á¬ááºážááŸá¯ááẠsymlinks áá»á¬ážá áááºáá±á¬ááºááœáá·áºá ááá¯ááºááŸááºáá»á¬ážááŸáá·áº á¡ááœá²á·áá»á¬ážááᯠááááºážááááºážáá¬ážááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºááŒá®áž ááá¯ááá¯ááŒááºáááºá á±ááẠáá¯ááºááŸááºááŒááºážááᯠááááºáá¬ážááẠ(áááºááá¯ááá¯ááŒááºáááºáá±á¬ cipher á¡áá»áá¯á·ááᯠáá¯á¶ážááá¯ááºáá±á¬áºáááºážá áá«á áá®áá¯ááºáááºážá¡ááœáẠááááºá¡áá±ážáááŒá®ážáá«áá°áž) á¡ááŒáẠcompression ááá¯áááºáž ááááºáá¬ážáá«áááºá
rsync ááŒá®ážáá«á chroot á០ááœááºáá« (ctrl+d) ááá¯ááŸáááºááŒá®áž execute
umount dev && umount proc && umount sys && cd .. && vzctl umount CTID
ááŒá±ááŸááºáž 5
OpenVZ ááŸááœáŸá²ááŒá±á¬ááºážááŒá®ážáá±á¬áẠVM ááá¯ááœáá·áºááẠáá°áá®áá±ážááá·áº á¡ááá·áºáá»á¬ážá
áœá¬ááᯠáá¯ááºáá±á¬ááºááŒáá«á
áá¯á·á
áá¬áá¬áá»á¬ážááŸáá·áºá¡áá° Systemd á¥ááá¬á VNC áá¬áá¬á
ááááºááŸáááá·áº áá¯á¶ááŸáẠááœááºááá¯ážááºááá¯á· áá±á¬á·ááºá¡ááºáááºááẠáá°áá®áá±ážááá·áº á¡áááá·áºááᯠáá¯ááºáá±á¬ááºááŒáá«á
áá¯á·á
mv /etc/systemd/system/getty.target.wants/[email protected] /etc/systemd/system/getty.target.wants/[email protected]
áá¬áá¬áá»á¬ážáá±á«áºááœáẠCentOS 6 О CentOS 7 á¡áá áºáá±á¬ kernel ááá¯ááá·áºááœááºážáááºáá±áá»á¬áá«á á±-
yum install kernel-$(uname -r)
áá¬áá¬ááᯠáááºážááŸáááºááá¯ááºáá±á¬áºáááºáž ááœáŸá²ááŒá±á¬ááºážááŒá®ážáá±á¬áẠáááºážááẠá¡áá¯ááºááá¯ááºáá±á¬á·áá² ááá¯á·ááá¯áẠáá»ááºáá áºááá¯ááºáááºá
áá¬áá¬áá±á«áºááœáẠCentOS 7 PolkitD á¡ááœáẠáá±ážáááºáá±á¬ ááŒááºáááºááŸá¯áá áºáá¯ááᯠáááºá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáááºá ááá¯á·ááá¯ááºáá«á áá¬áá¬ááẠáá¬áá áá»ááºá á®ážááœá¬ážáááá·áºáááº-
getent group polkitd >/dev/null && echo -e "e[1;32mpolkitd group already existse[0m" || { groupadd -r polkitd && echo -e "e[1;33mAdded missing polkitd groupe[0m" || echo -e "e[1;31mAdding polkitd group FAILEDe[0m"; }
getent passwd polkitd >/dev/null
&& echo -e "e[1;32mpolkitd user already existse[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "User for polkitd" polkitd && echo -e "e[1;33mAdded missing polkitd usere[0m" || echo -e "e[1;31mAdding polkitd user FAILEDe[0m"; }
rpm -Va polkit* && echo -e "e[1;32mpolkit* rpm verification passede[0m" || { echo -e "e[1;33mResetting polkit* rpm user/group ownership & permse[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }
áá¬áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááœááºá Apache á¡ááœáẠmod_fcgid ááᯠááá·áºááœááºážáá¬ážáá«áá áá»áœááºá¯ááºááá¯á·ááẠáá±ážáááºáá±á¬ ááŒááºáááºáá»ááºáá áºáᯠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá ááá¯á·ááá¯ááºáá«á mod_fcgid ááá¯á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ááá¯ááºáá»á¬ážááẠerror 500 ááŒáá·áº áá»ááºá á®ážááœá¬ážáááá·áºáááº-
chmod +s `which suexec` && apachectl restart
áá±á¬ááºáá¯á¶ážá¡áá»ááºááŸá¬ Ubuntu ááŸáá·áº Debian ááŒáá·áºáá±ááŸá¯áá»á¬ážá¡ááœáẠá¡áá¯á¶ážáááºáááºá ဠOS ááẠá¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááŒáá·áº áá¬ááá áááºááŒááºážááá¯á· áá»ááºááœá¬ážááá¯ááºáááºá
looping á¡áááºážááŒááºáááºá throttling ááœááºáá»ááºááŸá¯á¡áááºážáááº
OS áá¬ážááŸááºážáá±á«áº áá°áááºá á¡áááºáááŒá±áá±á¬áºáááºáž á¡ááœááºááá° ááŒááºáááºááá¯ááºáááºá
á¡áá±á«áº debian 9 ááŒá¯ááŒááºáá¯á¶ááẠá€áá²á·ááá¯á·ááŒá áºáááº-
áá»áœááºá¯ááºááá¯á·áá±á¬ááºááœááºáá«áááºá
dbus-uuidgen
á¡ááŸá¬ážáá áºáá¯ááááº
/usr/local/lib/libdbus-1.so.3: áá¬ážááŸááºáž `LIDBUS_PRIVATE_1.10.8â² áááœá±á·áá«
LIBDBUS áááŸá±á·ááŸá±á¬ááºááœááºá á áºáá±ážáá«á
ls -la /lib/x86_64-linux-gnu | grep dbus
libdbus-1.so.3 -> libdbus-1.so.3.14.15
libdbus-1.so.3.14.15 <-- ÐœÑжеМ ÑÑПÑ
libdbus-1.so.3.14.16
á¡á¬ážáá¯á¶ážá¡áááºááŒá±ááẠáá«ááá¯á·áá¯ááºáááºá
cd /lib/x86_64-linux-gnu
rm -rf libdbus-1.so.3
ln -s libdbus-1.so.3.14.15 libdbus-1.so.3
ááá°áá®áá«á áá¯áááááœá±ážáá»ááºááŸá¯ááᯠá ááºážááŒáá·áºáá«á
áá¯áááááŒá¿áá¬ááᯠááŒá±ááŸááºážáááºáž throttling ááœááºáá»ááºááŸá¯á¡áááºážááẠUbuntu ááŸáá·áº Debian ááŒáá·áºáá±ááŸá¯á¡á¬ážáá¯á¶ážáá®ážáá«ážá¡ááœáẠááá·áºáá»á±á¬áºáááºá
áá¯ááºáá±á¬ááº
bash -x /var/lib/dpkg/info/dbus.postinst configure
ááá¯á¡ááá¯á· Ubuntu ááᯠ14, debian 7 ááá¯á·á¡ááŒáẠáá»áœááºá¯ááºááá¯á· áá¯ááºáá±á¬ááºáááº-
adduser --system --home /nonexistent --no-create-home --disabled-password --group messagebus
rm -rf /etc/init.d/modules_dep.sh
áá«ááá¯á·áá¬áá¯ááºáá²á·áá²á Debian/Ubuntu áááºáááºááẠáá»á±á¬ááºáá¯á¶ážáá±ááá·áº messagebus ááᯠááŒááºáááºááá°ááŒá®áž OpenVZ ááŸáá¬áá±á¬ modules_dep ááᯠáááºááŸá¬ážááŒá®áž kernel module á¡áá»á¬ážá¡ááŒá¬ážááᯠáááºáá¬ááœáẠá¡ááŸá±á¬áá·áºá¡ááŸááºáá±ážáá«áááºá
ááŒá±ááŸááºáž 6
áá»áœááºá¯ááºááá¯á·ááẠVM ááᯠááŒááºáááºá áááºááŒá®áž VNC áááºáá²á·ááá¯á· loading ááá¯ážáááºáá¬áááºááᯠá á áºáá±ážááŒá®áž á¡áá±á¬ááºážáá¯á¶ážá¡á¬ážááŒáá·áºá á¡áá¬á¡á¬ážáá¯á¶ážááẠááŒá¿áá¬áááŸááá² áááºáá¬áááºááŒá áºáááºá ááœáŸá±á·ááŒá±á¬ááºážááŒááºážááŒá®ážáá±á¬áẠá¡áá»áá¯á·áá±á¬ááŒá¿áá¬áá»á¬áž áá±á«áºáá¬ááá¯ááºáá±á¬áºáááºáž áááºážááá¯á·ááẠá€áá±á¬ááºážáá«ážá áá±á¬ááºáá»á±á¬áºááœááºááŒá®áž áá±á«áºáá±á«ááºáá¬áá±á¬á¡áá«ááœáẠááŒá¯ááŒááºáá±ážáááºááŒá áºáááºá
á€á¡áá»ááºá¡áááºááẠá¡áá¯á¶ážáááºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá ð
source: www.habr.com