Go to content Go to menu Go to search

Миграция контейнеров из OpenVZ в LXC

Введение

В интернете инструкций на данную тему не нашел, пришлось разбираться что к чему самостоятельно, в результате родилась данная шпаргалка. Именно шпаргалка, ибо не претендует на глубину и полный охват затронутой темы. Просто описано какие действия пришлось предпринять в данном конкретном случае с конкретными версиями по и ОС.

Итак.
Есть задача перенести (мигрировать, перетащить) виртуалку из окружения OpenVZ (хост на CentOS-5) в окружение LXC (хост на Ubuntu 12.0.4). Сама виртуалка на debian 6.0.

Реализация

Переносим контейнер

  • Для начала нужно убедиться что знаем логин-пароль, при входе на vz-контейнер (или меняем пароль root).
  • Останавливаем vz-контейнер, архивируем rootfs, переносим на хост с lxc.
  • Создаем на хосте lxc новую виртуальную машину (с тем же именем что и vz-контейнер, в моем случае 43). Это необходимо что бы создался конфиг и нужные каталоги, но можно создать все и вручную.
    lxc-create -t ubuntu -n 43
  • Удаляем создавшийся rootfs и на его место распаковываем архив vz-контейнера.

Далее необходимо “заточить” наш бывший vz-контейнер для работы в lxc:

  • Заменить в настройках сети venet на eth0.
    у меня в файле /etc/network/interfaces помимо прочего получилось следующее (IP lxcbr0 на хосте 10.0.3.1):

    auto eth0
    iface eth0 inet manual
    up ifconfig eth0 up
    up ifconfig eth0 10.0.3.43
    up route add default gw 10.0.3.1
    down route del default gw 10.0.3.1
    down ifconfig eth0 down

  • прописать в /etc/resolv.conf адрес lxcbr0 на хосте (там запущен dnsmasq) (nameserver 10.0.3.1)

  • удалить содержимое файла /etc/fstab (теперь за нас все смонтирует lxc)
  • убрать из автозапуска лишние сервисы, для чего сделать chroot в каталог, куда распакована виртуалка.

    chroot /var/lib/lxc/43/rootfs
    update-rc.d console-cyrillic disable
    update-rc.d console-screen.sh disable
    update-rc.d hwclock.sh disable
    update-rc.d hwclockfirst.sh disable
    update-rc.d keymap.sh disable
    update-rc.d udev-mtab disable
    update-rc.d udev disable
    update-rc.d checkfs.sh disable
    update-rc.d checkroot.sh disable

  • Добавить в /etc/inittab следующие строки (старт консоли getty):
    5:23:respawn:/sbin/getty 38400 console
    6:23:respawn:/sbin/getty 38400 tty1
    7:23:respawn:/sbin/getty 38400 tty2
    8:23:respawn:/sbin/getty 38400 tty3
    9:23:respawn:/sbin/getty 38400 tty4

Выходим из chroot, запускаем виртуальную машину, смотрим что получилось.

root@ valynkin :~# lxc-start -n 43
INIT: version 2.88 booting
Using makefile-style concurrent boot in runlevel S.
Loading kernel modules...done.
Cleaning up ifupdown....
Mounting local filesystems...done.
Activating swapfile swap...done.
Setting up networking....
Cleaning up temporary files....
Setting kernel variables ...done.
Configuring network interfaces...done.
Cleaning up temporary files....
INIT: Entering runlevel: 2
Using makefile-style concurrent boot in runlevel 2.
Starting system log daemon....
Starting SASL Authentication Daemon: saslauthd.
Starting web server: apache2.
Starting internet superserver: xinetd.
Starting periodic command scheduler: cron.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
Starting Mail Transport Agent (MTA): sendmail.

Debian GNU/Linux 6.0 vps-43 console

vps-43 login:

Готово!


при публикации материалов с данного сайта обратная ссылка на сайт обязательна.
valynkin.ru © no rights reserved