Download PDF
Download page Перенос OVZ-контейнера в LXD-кластер.
Перенос OVZ-контейнера в LXD-кластер
Вы можете перенести в LXD-кластер виртуальную машину (ВМ), созданную с помощью OVZ-виртуализации. Чтобы сделать это:
- Сохраните информацию о правах на файлы ВМ.
- Создайте LXD-контейнер для ВМ и очистите его.
- Перенесите каталог исходной ВМ в созданный LXD-контейнер.
Восстановите права на файлы ВМ.
Обратите внимание!
Вы можете применить этот способ только для переноса ВМ в LXD-кластер с типом настройки сети "Коммутация".
Пример для ОС CentOS 7
Обновите пакеты ПО до последней версии:
yum update
BASHНа запущенной ВМ установите пакет ПО acl:
yum install acl
BASHУстановите пакет ПО Cloud-init:
yum install cloud-init
CODECохраните информацию о правах на файлы и каталоги ВМ:
cd / && getfacl -R / > acl.save
BASHОстановите ВМ:
Обратите внимание!
Если вы используете VMmanager 5 OVZ, остановите ВМ в панели управления: Управление → Виртуальные машины → выберите ВМ → кнопка Стоп.
vzctl stop 109
BASH109 — id OVZ-контейнера ВМ
Сохраните каталог ВМ в архив:
Если вы используете simfs
cd /vz/private/109/;tar -czf /109.tgz .
BASHЕсли вы используете ploop
mount -t ploop /vz/private/109/root.hdd/DiskDescriptor.xml /media/;cd /media;tar -czf /109.tgz .
BASH- Скопируйте созданный архив на узел LXD-кластера.
В интерфейсе VMmanager cоздайте ВМ в LXD-кластере и остановите её.
Обратите внимание!
Создайте ВМ с той же ОС и теми же параметрами, что у исходной ВМ.
Определите, где находится контейнер с ВМ:
zfs list
BASHПримонтируйте контейнер с созданной ВМ:
zfs mount tank/containers/vm-624
BASHtank — имя ZFS-пула
vm-624 — имя ВМ
Очистите контейнер:
rm -rf /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/*
BASHРаспакуйте архив с исходной ВМ:
tar -xf 109.tgz -C /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs
BASHИзмените владельца файловой системы на root-пользователя LXD-контейнера:
chown 1000000:1000000 /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/ -R
BASHУдалите старые конфигурационные файлы сети:
rm /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/sysconfig/network-scripts/ifcfg-venet*
CODEОтредактируйте файл /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/sysconfig/network:
Пример файла
NETWORKING="yes" GATEWAYDEV="venet0" NETWORKING_IPV6="yes" IPV6_DEFAULTDEV="venet0" HOSTNAME="example.com"
CODEСоздайте новый конфигурационный файл для сетевого интерфейса:
touch /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/sysconfig/network-scripts/ifcfg-ens1
CODEСодержимое файла
# Created by cloud-init on instance boot automatically, do not edit. # BOOTPROTO=none DEFROUTE=yes DEVICE=ens1 DNS1=8.8.8.8 DNS2=1.1.1.1 DNS3=77.88.8.8 GATEWAY=10.13.0.1 IPADDR=10.13.0.156 IPADDR1=10.13.0.157 NETMASK=255.255.255.0 NETMASK1=255.255.255.255 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no
CODEОтмонтируйте контейнер:
zfs umount tank/containers/vm-624
BASHУдалите содержимое директории /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/.
Запустите ВМ в интерфейсе VMmanager.
Восстановите права на файлы ВМ:
lxc exec vm-624 bash
BASHcd / && setfacl --restore=acl.save
BASHПерезагрузите ВМ для применения настроек:
reboot
BASH
Пример для ОС Debian 9
Обновить пакеты ПО до последней версии:
apt update && apt upgrade
BASHНа запущенной ВМ установите пакет ПО acl:
apt install acl
BASH- Если на сервере не установлена утилита curl, установите её:
apt install curl
BASH Загрузите пакеты ПО Cloud-init:
curl -O https://download.ispsystem.com/external/cloud-init/stretch/cloud-guest-utils_0.29-1_all.deb -O https://download.ispsystem.com/external/cloud-init/stretch/cloud-image-utils_0.29-1_all.deb -O https://download.ispsystem.com/external/cloud-init/stretch/cloud-init_20.2-2~deb10u1_all.deb -O https://download.ispsystem.com/external/cloud-init/stretch/cloud-utils-euca_0.29-1_all.deb -O https://download.ispsystem.com/external/cloud-init/stretch/cloud-utils_0.29-1_all.deb
CODEУстановите ПО Cloud-init:
dpkg -i cloud-*
BASHapt --fix-broken install -y
BASHdpkg -i cloud-*
BASHCохраните информацию о правах на файлы и каталоги ВМ:
cd / && getfacl -R / > acl.save
BASHОстановите ВМ:
Обратите внимание!
Если вы используете VMmanager 5 OVZ, остановите ВМ в панели управления: Управление → Виртуальные машины → выберите ВМ → кнопка Стоп.
vzctl stop 109
BASH109 — id OVZ-контейнера ВМ
Сохраните каталог ВМ в архив:
Если вы используете simfs
cd /vz/private/109/;tar -czf /109.tgz .
BASHЕсли вы используете ploop
mount -t ploop /vz/private/109/root.hdd/DiskDescriptor.xml /media/;cd /media;tar -czf /109.tgz .
BASH- Скопируйте созданный архив на узел LXD-кластера.
В интерфейсе VMmanager cоздайте ВМ в LXD-кластере и остановите её.
Обратите внимание!
Создайте ВМ с той же ОС и теми же параметрами, что у исходной ВМ.
Определите, где находится контейнер с ВМ:
zfs list
BASHПримонтируйте контейнер с созданной ВМ:
zfs mount tank/containers/vm-624
BASHtank — имя ZFS-пула
vm-624 — имя ВМ
Очистите контейнер:
rm -rf /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/*
BASHРаспакуйте архив с исходной ВМ:
tar -xf 109.tgz -C /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs
BASHИзмените владельца файловой системы на root-пользователя LXD-контейнера:
chown 1000000:1000000 /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/ -R
BASHОтредактируйте конфигурационный файл сетевого интерфейса:
vi /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/network/interfaces
CODEСодержимое файла
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback source /etc/network/interfaces.d/*
CODEОтредактируйте конфигурационный файл сетевых настроек для Cloud-init:
vi /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-882-deb9v1/rootfs/etc/network/interfaces.d/50-cloud-init
CODEСодержимое файла
# This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-init's # network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled} auto lo iface lo inet loopback auto ens1 iface ens1 inet static address 10.13.0.162/24 dns-nameservers 77.88.8.8 8.8.8.8 1.1.1.1 gateway 10.13.0.1
CODEОтмонтируйте контейнер:
zfs umount tank/containers/vm-624
BASHУдалите содержимое директории /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/.
Запустите ВМ в интерфейсе VMmanager.
Восстановите права на файлы ВМ:
lxc exec vm-624 bash
BASHcd / && setfacl --restore=acl.save
BASHПерезагрузите ВМ для применения настроек:
reboot
BASH