Перенос сервера с OpenVZ на KVM

Для начала закажем тестовую VPS OpenVZ и KVM  https://www.ukrnames.com/hosting/vps/  и https://www.ukrnames.com/vds/
Поставим на VPS(OpenVZ) бесплатную панель VestaCP, чтобы убедиться в правильности переноса файлов.

Ставим VestaCP:

 wget http://vestacp.com/pub/vst-install.shbash vst-install.sh

Получили ошибку:

Following packages are already installed:httpd bind-9

Удаляем данные пакеты:

yum remove httpd httpd-tools bind bind-libs -y либо yum remove httpd* bind* -y

Проверим, что еще может помешать установке панели VestaCP (ssh удалять не нужно):

netstat -nlp tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      529/sendmail

Удаляем sendmail:

yum remove sendmail -y

Устанавливаем панель:

bash vst-install-rhel.sh -f (файл называется теперь не vst-install.sh, а vst-install-rhel.sh, потому как скрипт установки определил ОС как Centos и скачал с сайта VestaCP нужный файл установки панели, а именно vst-install-rhel.sh )

И вновь ошибка:

chown: cannot access `/etc/dovecot’: No such file or directoryAdding user dovecot to group mailError: dovecot start failed

Редактируем скрипт установки vst-install-rhel.sh строка 734, заменяем содержимое # Dovecot configuration на:

# Dovecot configuration

if [ “$release” -eq ‘5’ ]; then

wget $CHOST/$VERSION/dovecot.conf -O /etc/dovecot.conf

else

wget $CHOST/$VERSION/dovecot.tar.gz -O  /etc/dovecot.tar.gz

cd /etc/

#rm -rf dovecot

tar -xzf dovecot.tar.gz

rm -f dovecot.tar.gz

mv -y /etc/dovecot.conf /etc/dovecot/dovecot.conf

echo “log_path = /var/log/dovecot.log” >> /etc/dovecot/dovecot.conf

chown -R root:root /etc/dovecot

fi

gpasswd -a dovecot mail

chkconfig dovecot on

service dovecot start

if [ “$?” -ne 0 ]; then

echo “Error: dovecot start failed”

exit 1

fi

Устанавливаем панель:

bash vst-install-rhel.sh-f

Данные ошибки были актуальны на момент написания статьи, возможно в данный период времени установка VestaCP уже происходит нормально!

Теперь переходим непосредственно к переносу с VPS(OpenVZ IP A.B.C.D VestaCP: https://A.B.C.D:8083 ) на VDS(KVM IP W.X.Y.Z )

Заходим по SSH на W.X.Y.Z и выполняем команды:

#: echo “/tmp

/boot

/lib/modules

/etc/blkid

/etc/mtab

/etc/fstab

/etc/udev

/etc/inittab

/etc/sysconfig/network

/etc/sysconfig/network-scripts

/etc/sysctl.conf

/etc/sysctl.d

/etc/rc.sysinit

/usr/lib/sysctl.d ” > /root/list.txt – в данном файле будут находиться файлы и директории, которые не будут перенесены с другого сервера.

С помощью утилиты rsync (если ее нет, то выполняем yum install rsync) выполняем перенос файлов с сервера OpenVZ на сервер KVM:

rsync -avz -H -X –one-file-system –numeric-ids –exclude-from=/root/list.txt -e ssh root@A.B.C.D:/ /

После завершения переноса, заменяем во всех файлах сервера IP с A.B.C.D на W.X.Y.Z:

find / -type f -exec sed -i -r ‘s/A.B.C.D/W.X.Y.Z/g’ {} \;

После замены IP адресов, хоть мы и указывали в файле /root/list.txt директорию /etc/udev , сбросим все данные о сетевых интерфейсах, чтобы после перезагрузки сеть поднялась нормально:

echo “” > /etc/udev/rules.d/70-persistent-net.rules

reboot – перезагружаем сервер

После перезагрузки проверяем все службы сервера (netstat -nlp), все работает, теперь ссылка на VetsaCP активна и для IP адреса W.X.Y.Z (https://W.X.Y.Z:8083).

После переноса все же возникла проблема с паролем к пользователю VestaCP. Решилось это с помощью данных команд:

yum reinstall sudo

passwd admin

v-change-user-password admin *******

На этом все, перенос с OpenVZ на KVM окончен.

Но все же хочу отметить, что лучшим вариантом переноса будет – перенос между нодами, на которых размещены данные VPS/VDS, при этом данные виртуальные сервера OpenVZ и KVM должны быть выключены, т.к. при активном переносе, который указан в данной статье, есть вероятность того, что возникнет много ошибок.