====== Миграция OpenVZ контейнера на KVM ====== ===== Основной процесс ===== Исходные данные: * сервер-источник - контейнер OpenVZ * пустой сервер-приемник - виртуальная машина KVM Используем следующий алгоритм: * на сервере-приемнике устанавливаем ОС, аналогичную работающей на сервере-источнике * на сервере-источнике и сервере-приемнике устанавливаем rsync * на сервере-источнике создаём файл со списком исключений, например **/root/exclude.txt** : /boot /dev /etc/conf.d/net /etc/fstab /etc/hosts /etc/init.d/nova-agent* /etc/ips /etc/ipaddrpool /etc/ips.dnsmaster /etc/mtab /etc/modprobe* /etc/modules /etc/network/interfaces /etc/networks /etc/rc.conf /etc/resolv.conf /etc/sysconfig/network* /etc/sysconfig/hwconf /etc/sysconfig/ip6tables-config /etc/sysconfig/kernel /lib/modules /net /proc /sys /tmp /usr/share/nova-agent* /usr/sbin/nova-agent* /var/lock * на сервере источнике устанавливаем **mingetty** * на сервере-источнике правим **/etc/inittab** примерно к следующему виду: id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 ca::ctrlaltdel:/sbin/shutdown -t3 -r now pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" x:5:respawn:/etc/X11/prefdm -nodaemon * останавливаем основные демоны на сервере-источнике (MySQL, веб-сервер и т.д.) * запускаем на сервере-источнике rsync со следующими параметрами: rsync -e "ssh -p 22" --delete --numeric-ids -avpogtSlHz --exclude-from="/root/exclude.txt" / root@<куда>:/ Описание опций: ^ Опция ^ Значение ^ | **%%-e%%** | указывает замену программы удаленной оболочки. В приведённом примере можно опустить, но в случае, например, с SSH на нестандартном порту будет полезно | | **%%--delete%%** | удалять файлы, которых нет на передающей стороне | | **%%--numeric-ids%%** | не преобразовывать значения uid/gid по именам пользователя/группы | | **%%-a%%** | архивный режим, эквивалент для -rlptgoD | | **%%-v%%** | Этот параметр увеличивает сумму подробностей, которые выводятся в течение передачи. По умолчанию, rsync работает молча. Один -v будет иметь следствием выдачу списка переданных файлов и короткий итог в конце. Два -v раскрывают детали о пропущенных файлах и выдают несколько больше информации в завершение. Большее число может понадобится только при отладке rsync. | | **%%-p%%** | Копирует все права на приемную сторону точь в точь с оригиналом. Без указания этого параметра каждый новый файл получает те права доступа, что имеет исходный с учетом umask, действующей на приемной стороне, в то время как все другие (включая обновляемые) сохраняют свои уже существующие разрешения (это то же поведение, что имеют другие утилиты копирования файлов, такие как cp). | | **%%-o%%** | Копирует атрибуты владельца на приемную сторону в точности с оригиналом. На большинстве систем только супер-пользователь имеет право устанавливать владельца файла. Нужно заметить, что если удаленный демон действует в chroot-окружении, то подразумевается наличие параметра --numeric-ids, потому что на удаленной стороне в этом случае нет доступа к именам пользователей в /etc/passwd. | | **%%-g%%** | Копирует атрибуты группы на приемную сторону в точности с оригиналом. Если удаленная сторона не действует из-под супер-пользователя, то сохранятся только те значения групп, членом которых является пользователь приемной стороны (имеет значение имя группы, а не ее id). | | **%%-t%%** | Указывает передавать время модификации файлов и обновлять им соответствующий атрибут на приемной стороне. Обратите внимание, что если этот параметр не установлен, то становится неэффективной оптимизация передачи по исключению не изменявшихся по времени файлов; другими словами, пропуск -t или -a будет означать, что следующая передача будет осуществляться с параметром -I, для всех файлов будут сравниваться контрольные суммы, а в журнале появятся соответствующие сообщения о них, даже если они не изменялись. | | **%%-S%%** | Пытаться эффективнее обработать фрагментацию файлов, чтобы сэкономить пространство на приемной стороне. | | **%%-l%%** | Если обнаружена символьная ссылка, то она же создается и на приемной стороне. | | **%%-H%%** | Указывает пересоздать жесткие ссылки на конечной стороне в соответствии с тем, что имеется на исходной. Без этого параметра жесткие ссылки обрабатываются как обычные файлы. | | **%%-z%%** | С этим параметром rsync сжимает все передаваемые данные файлов. Это полезно на медленных линиях. Метод сжатия, используемый при этом, тот же, что реализует gzip. | * перезагружаем сервер-приемник. ---- ===== Источники ===== * [[https://www.linux.org.ru/forum/general/11736440?lastmod=1435764467926|Миграция серверов с Digital Ocean]] * [[http://victor-tsedrik.livejournal.com/4740.html|Миграция виртуальных машин с OpenVZ на KVM. Часть 1. Машины на Centos.]] * [[https://www.linux.org.ru/forum/general/614249|С чем едят mingetty]] * [[https://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=rsync&category=1|rsync]] * [[https://habrahabr.ru/post/102849/|Перенос Linux на другой компьютер]]