Преобразование OpenVZ в LXC

Перевод Convert OpenVZ to LXC

опубликованной 6 October 2015, at 12:04

 Введение

Эта статья описывает перенос контейнеров OpenVZ в Linux containers (LXC). OpenVZ не доступны начиная с ядер выше 2.6.32, следовательно необходима миграция. Технология Linux Container во всех ядрах Linux основной ветви и будущая проверенная технология введенная в сериях Proxmox VE 4.x.

{Прим. пер.: с более современной (31 марта 2016) информацией о контейнерах в версии Proxmox VE 4.1 вы можете ознакомиться в нашем переводе Изучение Proxmox VE.}

 Перемещение контейнера OpenVZ в LXC за 5 шагов

 Общий обзор

По существу вы должны выполнить следующие шаги:

в Proxmox VE 3.x узлах

  1. записать где-то сетевые настройки используемые вашими контейнерами

  2. сделать резервную копию вашего OpenVZ контейнера

в Proxmox VE 4.x узлах

  1. создать LXC контейнер на основе вашей резервной копии

  2. настроить сеть с предыдущими настройками

  3. загрузить и 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
	  

 Получение сетевых настроек контейнеров OpenVZ и ее запись куда-нибудь

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
      

На данный момент вы можете:

  1. Обновить ваш узел Proxmox VE 3.x на Proxmox VE 4.x

  2. Скопировать резервные копии на узел 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
      

 Создание контейнера LXC на основе резервной копии

Теперь переключаемся на узел 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 вы можете сделать это напрямую из хоста.

 Добавление сетевых настроек через GUI

Для каждого контейнера.

  • Выберите контейнер кликнув на него

  • Перейдите в закладку Network

  • Кликните Add устройство

  • В панели устройства veth добавьте устройство со следующими параметрами:

        ID: net0 
        name eth0 
        поместите ваш IP адрес и соответствующую сетевую маску в следующем формате 192.168.5.75/24 
          
 Добавление сетевых настроек через CLI
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

Если вы используете OpenVZ bind mounts, вы должны перестроить его в LXC. Ознакомьтесь с LXC Bind Mounts.

 Видео руководства

см. оригинал.

 Также смотрите

см. оригинал.