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.