База знаний

Миграция OpenVZ контейнера на KVM

  • 0

Исходные данные:

  • сервер-источник - контейнер 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.
  • Смена IP адреса в файлах

    Бывает необходимость менить IP в файлах, к примеру если вдс перенесли со сменой IP но в конфигурационных файлах остался старый, то менять можено так:
    grep -l 10.10.10.10 * | xargs perl -p -i -e 's/10.10.10.10/20.20.20.20/g'

    где 10.10.10.10 - старый адрес, 20.20.20.20 - новый

    если нужно рекурсивно по каталогам пройтись, то так:

    grep -l -R 10.10.10.10 * | xargs perl -p -i -e 's/10.10.10.10/20.20.20.20/g'
  • перезагружаем сервер-приемник.
  •  


Помог ли вам данный ответ?