Вы можете перенести в LXD-кластер виртуальную машину (ВМ), созданную с помощью OVZ-виртуализации. Чтобы сделать это:
- Сохраните информацию о правах на файлы ВМ.
- Создайте LXD-контейнер для ВМ и очистите его.
- Перенесите каталог исходной ВМ в созданный LXD-контейнер.
-
Восстановите права на файлы ВМ.
Обратите внимание!Вы можете применить этот способ только для переноса ВМ в LXD-кластер с типом настройки сети "Коммутация".
Пример для ОС CentOS 7
-
Обновите пакеты ПО до последней версии:
yum update
-
На запущенной ВМ установите пакет ПО acl:
yum install acl
-
Установите пакет ПО Cloud-init:
yum install cloud-init
-
Cохраните информацию о правах на файлы и каталоги ВМ:
cd / && getfacl -R / > acl.save
-
Остановите ВМ:
Обратите внимание!Если вы используете VMmanager 5 OVZ, остановите ВМ в панели управления: Управление → Виртуальные машины → выберите ВМ → кнопка Стоп.vzctl stop 109
Пояснения к команде -
Сохраните каталог ВМ в архив:
Если вы используете simfscd /vz/private/109/;tar -czf /109.tgz .
Если вы используете ploopmount -t ploop /vz/private/109/root.hdd/DiskDescriptor.xml /media/;cd /media;tar -czf /109.tgz .
- Скопируйте созданный архив на узел LXD-кластера.
-
В интерфейсе VMmanager cоздайте ВМ в LXD-кластере и остановите её.
Обратите внимание!Создайте ВМ с той же ОС и теми же параметрами, что у исходной ВМ. -
Определите, где находится контейнер с ВМ:
zfs list
-
Примонтируйте контейнер с созданной ВМ:
zfs mount tank/containers/vm-624
Пояснения к команде -
Очистите контейнер:
rm -rf /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/*
-
Распакуйте архив с исходной ВМ:
tar -xf 109.tgz -C /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs
-
Измените владельца файловой системы на root-пользователя LXD-контейнера:
chown 1000000:1000000 /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/ -R
-
Удалите старые конфигурационные файлы сети:
rm /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/sysconfig/network-scripts/ifcfg-venet*
-
Отредактируйте файл /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"
-
Создайте новый конфигурационный файл для сетевого интерфейса:
touch /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/sysconfig/network-scripts/ifcfg-ens1
Содержимое файла# 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
-
Отмонтируйте контейнер:
zfs umount tank/containers/vm-624
- Удалите содержимое директории /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/.
- Запустите ВМ в интерфейсе VMmanager.
-
Восстановите права на файлы ВМ:
lxc exec vm-624 bash
cd / && setfacl --restore=acl.save
-
Перезагрузите ВМ для применения настроек:
reboot
Пример для ОС Debian 9
-
Обновить пакеты ПО до последней версии:
apt update && apt upgrade
-
На запущенной ВМ установите пакет ПО acl:
apt install acl
- Если на сервере не установлена утилита curl, установите её:
apt install curl
-
Загрузите пакеты ПО 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
-
Установите ПО Cloud-init:
dpkg -i cloud-*
apt --fix-broken install -y
dpkg -i cloud-*
-
Cохраните информацию о правах на файлы и каталоги ВМ:
cd / && getfacl -R / > acl.save
-
Остановите ВМ:
Обратите внимание!Если вы используете VMmanager 5 OVZ, остановите ВМ в панели управления: Управление → Виртуальные машины → выберите ВМ → кнопка Стоп.vzctl stop 109
Пояснения к команде -
Сохраните каталог ВМ в архив:
Если вы используете simfscd /vz/private/109/;tar -czf /109.tgz .
Если вы используете ploopmount -t ploop /vz/private/109/root.hdd/DiskDescriptor.xml /media/;cd /media;tar -czf /109.tgz .
- Скопируйте созданный архив на узел LXD-кластера.
-
В интерфейсе VMmanager cоздайте ВМ в LXD-кластере и остановите её.
Обратите внимание!Создайте ВМ с той же ОС и теми же параметрами, что у исходной ВМ. -
Определите, где находится контейнер с ВМ:
zfs list
-
Примонтируйте контейнер с созданной ВМ:
zfs mount tank/containers/vm-624
Пояснения к команде -
Очистите контейнер:
rm -rf /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/*
-
Распакуйте архив с исходной ВМ:
tar -xf 109.tgz -C /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs
-
Измените владельца файловой системы на root-пользователя LXD-контейнера:
chown 1000000:1000000 /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/ -R
-
Отредактируйте конфигурационный файл сетевого интерфейса:
vi /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/rootfs/etc/network/interfaces
Содержимое файла# 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/*
-
Отредактируйте конфигурационный файл сетевых настроек для Cloud-init:
vi /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-882-deb9v1/rootfs/etc/network/interfaces.d/50-cloud-init
Содержимое файла# 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
-
Отмонтируйте контейнер:
zfs umount tank/containers/vm-624
- Удалите содержимое директории /var/snap/lxd/common/lxd/storage-pools/zfs_pool/containers/vm-624/.
- Запустите ВМ в интерфейсе VMmanager.
-
Восстановите права на файлы ВМ:
lxc exec vm-624 bash
cd / && setfacl --restore=acl.save
-
Перезагрузите ВМ для применения настроек:
reboot