Преобразование OpenVZ в LXC
Перевод Convert OpenVZ to LXC
опубликованной 6 October 2015, at 12:04
Содержание
- Преобразование OpenVZ в LXC
- Введение
- Перемещение контейнера OpenVZ в LXC за 5 шагов
- Преобразование шаг за шагом
- Видео руководства
- Также смотрите
Эта статья описывает перенос контейнеров OpenVZ в Linux containers (LXC). OpenVZ не доступны начиная с ядер выше 2.6.32, следовательно необходима миграция. Технология Linux Container во всех ядрах Linux основной ветви и будущая проверенная технология введенная в сериях Proxmox VE 4.x.
{Прим. пер.: с более современной (31 марта 2016) информацией о контейнерах в версии Proxmox VE 4.1 вы можете ознакомиться в нашем переводе Изучение Proxmox VE.}
По существу вы должны выполнить следующие шаги:
в Proxmox VE 3.x узлах
-
записать где-то сетевые настройки используемые вашими контейнерами
-
сделать резервную копию вашего OpenVZ контейнера
в Proxmox VE 4.x узлах
-
создать LXC контейнер на основе вашей резервной копии
-
настроить сеть с предыдущими настройками
-
загрузить и voilà, все работает
Обратите внимание, что все упомянутые здесь шаги могут быть выполнены в веб-интерфейсе. Тем не менее, будет легче разделить эти шаги в действия командной строки. Это позволяет выполнять шаги в сценарии если существует большое количество контейнеров для преобразования.
Зарегистрируйтесь через ssh в вашем узле Proxmox VE 3.x.
Допустим, вы хотите перенести три различных контейнера: контейнер CentOS, Ubuntu и контейнер Debian.
vzlist CTID NPROC STATUS IP_ADDR HOSTNAME 100 20 running - centos6vz.proxmox.com 101 18 running - debian7vz.proxmox.com 102 20 running 192.168.15.142 ubuntu12vz.proxmox.com
A) Если ваш контейнер использует устройство venet, вы получите адрес напрямую в командной строке:.
vzlist 102 CTID NPROC STATUS IP_ADDR HOSTNAME 102 20 running 192.168.15.142 ubuntu12vz.proxmox.com
Если ваш контейнер использует veth, сетевая настройка выполнена внутри самого контейнера. Как найти сетевую настройку зависит от того какая операционная система работает внутри контейнера:
если у вас контейнер на основе CentOS, вы можете получить сетевую настройку примерно так:
# start a root shell inside the container 100 vzctl enter 100 cat /etc/sysconfig/network-scripts/ifcfg-eth0 exit
Если у вас Debian, Ubuntu или Turnkey Linux оборудование:
vzctl enter 101 cat /etc/network/interfaces exit
.
Сначала выберите в каком хранилище вы хотите сделать резервную копию контейнеров.
#list available storages pvesm status freenas nfs 1 27676672 128 27676544 0.50% local dir 1 8512928 2122088 6390840 25.43% nas-iso nfs 1 2558314496 421186560 2137127936 16.96%
Например, вы можете использовать "локальное" хранилище, которое соответствует каталогу
/var/lib/vz/dump
в стандартной установке Proxmox VE. По умолчанию, это хранилище не
допускает сохранение резервных копий, поэтому убедитесь что вы разрешили ее для резервного содержимого. (см.
http://pve.proxmox.com/wiki/Storage_Model#Storage_type_Content)
Затем сделайте резервные копии всех контейнеров
# stop the container, and # start a backup right after the shutdown vzctl stop 100 && vzdump 100 -storage local vzctl stop 101 && vzdump 101 -storage local vzctl stop 102 && vzdump 102 -storage local
На данный момент вы можете:
-
Обновить ваш узел Proxmox VE 3.x на Proxmox VE 4.x
-
Скопировать резервные копии на узел Proxmox VE 4.x и выполнить преобразование на узле Proxmox VE 4.x
Предположим, вы следуете варианту B. (перенос резервных копий на узел Proxmox VE 4.x и преобразование в формат LXC)
# copy each container tar backup to the pve4 node via ssh scp /var/lib/vz/dump/vzdump-openvz-100-2015_08_27-10_46_47.tar root@pve4:/var/lib/vz/dump scp /var/lib/vz/dump/vzdump-openvz-101-2015_08_27-10_50_44.tar root@pve4:/var/lib/vz/dump scp /var/lib/vz/dump/vzdump-openvz-102-2015_08_27-10_56_34.tar root@pve4:/var/lib/vz/dump
Теперь переключаемся на узел Proxmox VE 4 и создаем контейнеры на основе резервных копий.
pct restore 100 /var/lib/vz/dump/vzdump-openvz-100-2015_08_27-10_46_47.tar pct restore 101 /var/lib/vz/dump/vzdump-openvz-101-2015_08_27-10_50_44.tar pct restore 102 /var/lib/vz/dump/vzdump-openvz-102-2015_08_27-10_56_34.tar
На данный момент вы должны быть способны увидеть контейнеры в веб-интерфейсе, но они все еще не имеют сети.
LXC использует виртуальный сетевой адаптер который через мост соединяется с физическим интерфейсом вашего хоста. Это работает
очень похоже на устройство veth
функционирующее в OpenVZ.
В Proxmox VE 3.x настройка каждого контейнера использующего устройство
veth
должна выполняться внутри самого контейнера.
В Proxmox VE 4.x вы можете сделать это напрямую из хоста.
Для каждого контейнера.
-
Выберите контейнер кликнув на него
-
Перейдите в закладку
Network
-
Кликните
Add
устройство -
В панели устройства
veth
добавьте устройство со следующими параметрами:ID: net0 name eth0 поместите ваш IP адрес и соответствующую сетевую маску в следующем формате 192.168.5.75/24
pct set 101 -net0 name=eth0,bridge=vmbr0,ip=192.168.15.144/24,gw=192.168.15.1 pct set 102 -net0 name=eth0,bridge=vmbr0,ip=192.168.15.145/24,gw=192.168.15.1
pct start 100 pct start 101 pct start 102
И voilà, вы теперь можете зарегистрироваться в контейнере и проверить что все службы работают.
pct enter 100
Если вы этого еще не сделали раньше, вы можете добавить консоль в ваш контейнер, следовательно вы сможете регистрироваться в контейнере через веб-интерфейс.
Если вы используете OpenVZ bind mounts, вы должны перестроить его в LXC. Ознакомьтесь с LXC Bind Mounts.