WWW.LUSHNIKOV.NET

linux

Перенос контейнера из OpenVZ в LXD

TL;DR: Сохранить права в файл, перенести каталог на новый сервер в новую виртуалку, восстановить права из файла, поправить настройки сетевухи.

Прощай, OpenVZ. Ты был прекрасен, но недавно я познакомился с LXD и теперь всё время думаю о нём.

Пост-шпаргалка для переезжающих.

Для начала на новом сервере установить и настроить LXD в соответствии с официальной документацией.

Процесс переноса:
На всё еще запущенной в OpenVZ виртуалке установить пакет acl (есть в официальных репозитариях убунты и дебиана) и сохранить права файлов и каталогов:


vm# apt install acl
vm# cd /
vm# getfacl -R / > acl.save

Выключить виртуалку (101) и сохранить каталог с ее корнем в архив:


vz# vzctl stop 101
vz# cd /vz/private/101/
vz# tar -czf /101.tgz .

Скопировать архив на новый сервер с LXD. На новом сервере создать новый контейнер (назовем vm101):


lxc# lxc launch images:debian/jessie vm101
lxc# lxc stop vm101

Если виртуалки хранятся в zfs, то примонтировать датасет с этой виртуалкой:


lxc# zfs mount zfs/virt/lxc/containers/vm101

Очистить контейнер, распаковать в него архив и перебить все права на локального рута:


lxc# rm -rf /var/snap/lxd/common/lxd/storage-pools/lxd-zfs/containers/vm101/rootfs/*
lxc# tar -xf 101.tgz -C /var/snap/lxd/common/lxd/storage-pools/lxd-zfs/containers/vm101/rootfs
lxc# chown 1000000:1000000 /var/snap/lxd/common/lxd/storage-pools/lxd-zfs/containers/vm101/rootfs/ -R

Запустить виртуалку и восстановить права:


lxc# lxc start vm101
lxc# lxc exec vm101 bash
vm101# cd /
vm101# setfacl --restore=acl.save
vm101# reboot

После загрузки виртуалки останется только исправить сетевые настройки, убрав упоминания venet0 и добавив eth0.

Leave a Reply