የOpenVZ መያዣን በህይወቱ ቢያንስ አንድ ጊዜ ሙሉ የKVM ቨርቹዋል ወደሆነ አገልጋይ ማስተላለፍ የፈለገ ማንኛውም ሰው አንዳንድ ችግሮች አጋጥሞታል፡
- አብዛኛው መረጃ በቀላሉ ጊዜ ያለፈበት እና የEOL ዑደትን ለረጅም ጊዜ ላለፉ OSes ጠቃሚ ነው።
- ለተለያዩ ኦፕሬቲንግ ሲስተሞች የተለያዩ መረጃዎች ሁልጊዜ ይሰጣሉ፣ እና በስደት ጊዜ ሊፈጠሩ የሚችሉ ስህተቶች በጭራሽ አይታሰቡም።
- አንዳንድ ጊዜ ከስደት በኋላ መስራት የማይፈልጉትን አወቃቀሮችን ማስተናገድ አለቦት
1 አገልጋይ ስታስተላልፍ ሁል ጊዜ በበረራ ላይ የሆነ ነገር ማስተካከል ትችላለህ ነገር ግን ሙሉ ዘለላ ስታስተላልፍ?
በዚህ ጽሑፍ ውስጥ የ OpenVZ መያዣን ወደ KVM በትንሽ ጊዜ እና ለችግሮች ፈጣን መፍትሄ እንዴት በትክክል ማዛወር እንደሚቻል ልነግርዎ እሞክራለሁ ።
አነስተኛ የትምህርት ፕሮግራም-OpenVZ ምንድን ነው እና KVM ምንድን ነው?
ወደ ቃላቶች ጠልቀን አንገባም፣ ነገር ግን በጥቅሉ እንናገራለን፡-
OpenVZ - በስርዓተ ክወናው ደረጃ ላይ ያለው ቨርችዋል, በማይክሮዌቭ ውስጥ እንኳን ማሰማራት ይችላሉ, ምክንያቱም በአስተናጋጅ ማሽን ላይ የሲፒዩ መመሪያዎች እና ምናባዊ ቴክኖሎጂዎች ስለሌለ.
KVM - ሙሉ ቨርቹዋል፣ ሁሉንም የሲፒዩ ሃይል በመጠቀም እና ማንኛውንም ነገር ቨርቹዋል ማድረግ የሚችል፣ በማንኛውም መንገድ፣ ርዝመቱን እና አቋራጩን መቁረጥ።
ከታዋቂ እምነት በተቃራኒ፣ በአካባቢ ላይ የማስተናገጃ አቅራቢዎች ኦፕንቪዜድ ከልክ በላይ ተሸጧል፣ ነገር ግን ኬቪኤም አልተሸጠም። እንደ እድል ሆኖ፣ ኬቪኤም አሁን ልክ እንደ ወንድሙ ከመጠን በላይ ተሸጧል።
ምን እንሸከማለን?
В качестве подопытных для переноса пришлось использовать весь лес операционных систем, которые доступны на OpenVZ: CentOS (6 и 7 версии), Ubuntu (14, 16 и 18 LTS), Debian 7.
አብዛኞቹ የOpenVZ ኮንቴይነሮች አንድ ዓይነት LAMP እያሄዱ እንደነበሩ ይታሰብ ነበር፣ እና አንዳንዶቹ ደግሞ በጣም የተለየ ሶፍትዌር ነበራቸው። ብዙ ጊዜ፣ እነዚህ ከአይኤስፒአናጀር፣ ከ VestaCP የቁጥጥር ፓነል (እና ብዙ ጊዜ፣ ለዓመታት ያልዘመነ) ውቅሮች ነበሩ። የዝውውር ጥያቄዎቻቸውም ግምት ውስጥ መግባት አለባቸው።
ፍልሰት የሚከናወነው በመጠበቅ ነው የአይፒ አድራሻዎች ለተንቀሳቃሽ ኮንቴይነር፣ የኮንቴይነሩ የአይፒ አድራሻ በVM ላይ እንደተቀመጠ እና ያለምንም ችግር እንደሚሰራ እንገምታለን።
ከማስተላለፋችን በፊት ሁሉም ነገር በእጃችን እንዳለን እናረጋግጥ፡-
- ክፍት ቪዜድ አገልጋይ፣ ወደ አስተናጋጅ ማሽን ሙሉ ስርወ መዳረሻ፣ መያዣዎችን የማቆም/ለመሰካት/መጀመር/መሰረዝ ችሎታ
- KVM አገልጋይ፣ ወደ አስተናጋጅ ማሽን ሙሉ ስርወ መዳረሻ፣ ከሚያመለክተው ሁሉ ጋር። ሁሉም ነገር አስቀድሞ የተዋቀረ እና ለመሄድ ዝግጁ እንደሆነ ይገመታል.
ማስተላለፍ እንጀምር
ዝውውሩን ከመጀመራችን በፊት፣ ግራ መጋባትን ለማስወገድ የሚረዱዎትን ቃላት እንገልፅ፡-
KVM_NODE - KVM አስተናጋጅ ማሽን
VZ_NODE - OpenVZ አስተናጋጅ ማሽን
ሲቲአይዲ - ክፍትVZ መያዣ
VM - KVM ምናባዊ አገልጋይ
ለስደት መዘጋጀት እና ምናባዊ ማሽኖችን መፍጠር.
1 ደረጃ
መያዣውን ወደ አንድ ቦታ ማንቀሳቀስ ስለሚያስፈልገን እንፈጥራለን VM ጋር ተመሳሳይ ውቅር ጋር KVM_NODE.
አስፈላጊ! Создавать VM нужно именно на той операционной системе, которая сейчас крутится на CTID. Например, если на CTID установлена Ubuntu 14, то и на VM нужно ставить Ubuntu 14. Минорные версии не важны и их несовпадение не столь критично, а вот мажорные — должны быть одинаковыми.
ቪኤምን ከፈጠርን በኋላ በሲቲአይዲ እና በVM ላይ ያሉትን ጥቅሎች እናዘምነዋለን (ስርዓተ ክወናውን ከማዘመን ጋር ላለመምታታት - እኛ አናዘምነውም ፣ ጥቅሎችን ብቻ እናዘምነዋለን እና ከደረሰም የስርዓተ ክወናው ስሪት በዋናው ውስጥ ስሪት)።
ለ CentOS этот процесс выглядит безобидно:
# yum clean all
# yum update -yИ не менее безобидно для Ubuntu, Debian:
# apt-get update
# apt-get upgrade2 ደረጃ
ጫን በርቷል ሲቲአይዲ, VZ_NODE и VM መገልገያ rsync:
CentOS:
# yum install rsync -yDebian, Ubuntu:
# apt-get install rsync -yእኛ እዚያም ሆነ እዚያ ምንም ነገር አንጫንም።
3 ደረጃ
ማቆሚያ እናደርጋለን ሲቲአይዲ ላይ VZ_NODE ቡድን
vzctl stop CTIDምስሉን በመጫን ላይ ሲቲአይዲ:
vzctl mount CTIDወደ /vz/root/ አቃፊ ይሂዱሲቲአይዲ እና አስፈጽም
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 ትዕዛዙ ዝውውሩን ያከናውናል ፣ ቁልፎቹ ግልጽ እንደሆኑ ተስፋ እናደርጋለን - ዝውውሩ የሚከናወነው በሲምሊንኮች ፣ በመዳረሻ መብቶች ፣ በባለቤቶች እና በቡድኖች ተጠብቆ ነው ፣ እና ምስጠራ ለበለጠ ፍጥነት ተሰናክሏል (አንዳንድ ፈጣን ምስጢሮችን መጠቀም ይችላሉ ፣ ግን ይህ ለዚህ ተግባር በጣም አስፈላጊ አይደለም) , እንዲሁም መጨናነቅ ተሰናክሏል.
Rsyncን ከጨረሱ በኋላ ከ chroot ይውጡ (ctrl+d ን በመጫን) እና ያስፈጽሙ
umount dev && umount proc && umount sys && cd .. && vzctl umount CTID5 ደረጃ
ከOpenVZ ከተሸጋገርን በኋላ VMን ለማስጀመር የሚረዱን ብዙ እርምጃዎችን እናድርግ።
ጋር አገልጋዮች ላይ Systemd ወደ መደበኛ ኮንሶል ለመግባት የሚረዳን ትእዛዝ እንፈጽም ለምሳሌ በቪኤንሲ አገልጋይ ስክሪን
mv /etc/systemd/system/getty.target.wants/getty@tty2.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceበአገልጋዮች ላይ CentOS 6 и CentOS 7 አዲስ አስኳል መጫንዎን እርግጠኛ ይሁኑ፡-
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; }በሁሉም አገልጋዮች ላይ mod_fcgid for Apache ከተጫነ ከመብቶች ጋር ትንሽ ማስተካከያ እናደርጋለን፣ አለበለዚያ mod_fcgid የሚጠቀሙ ጣቢያዎች በስህተት 500 ይወድቃሉ፡
chmod +s `which suexec` && apachectl restartИ последнее, пригодится для Ubuntu, Debian дистрибутивов. Эта ОС может упасть в вечный бут с ошибкой
በጣም በፍጥነት ማዞር. ስሮትልንግ አፈፃፀም ትንሽ
በስርዓተ ክወናው ስሪት ላይ በመመስረት ደስ የማይል, ግን በቀላሉ ተስተካክሏል.
በ Debian 9 ማስተካከያው ይህንን ይመስላል
እንፈጽማለን
dbus-uuidgenስህተት ካገኘን
/usr/local/lib/libdbus-1.so.3፡ እትም 'LIBDBUS_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ካልረዳ, ሁለተኛውን አማራጭ ይሞክሩ.
ለችግሩ ሁለተኛው መፍትሄ በ ስሮትልንግ አፈፃፀም ትንሽ подходит практически для всех 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 Что мы сделали? Восстановили messagebus, которого не хватало для запуска Debian/Ubuntu и удалили modules_dep, который пришел от OpenVZ и мешал загрузки многих модулей ядра.
6 ደረጃ
VMን እንደገና እናስጀምረዋለን ፣ ጭነቱ እንዴት እየሄደ እንደሆነ VNC ን እንፈትሻለን እና በጥሩ ሁኔታ ሁሉም ነገር ያለችግር ይጫናል ። ምንም እንኳን ከስደት በኋላ አንዳንድ የተለዩ ችግሮች ሊታዩ ቢችሉም, ከዚህ ጽሑፍ ወሰን ውጭ ናቸው እና ሲነሱ ይስተካከላሉ.
ይህ መረጃ ጠቃሚ እንደሆነ ተስፋ አደርጋለሁ! 🙂
ምንጭ: hab.com
