. У меня есть несколько файлов "tar", созданных на старом сервере proxmox 6 с помощью инструмента vzdump.
Человек, который первоначально создал их, покинул компанию, и компания изменила свой контейнерный сервер с «Proxmox VE» на стандартный сервер Linux Ubuntu 20.04 LTS, на котором установлена последняя версия LXD для его контейнерной системы.
теперь меня спросили, могу ли я взять эти tar-файлы Vzdump и превратить их в обычные стандартные развертывания на основе LXC, работающие на новом сервере.
Кажется, что каждый поиск, который я делаю, ТОЛЬКО приводит к преобразованию пустых контейнеров LXC в контейнеры Proxmox VE, и спрашивать на форумах proxmox меня ни к чему не приведет, потому что все, что они хотят сделать, это вернуть меня на proxmox, который мой клиент больше не хочет использовать.
Я могу vzrestore на новый сервер, но метаданные в контейнеры несовместимы с LXD/LXC, поэтому шляпа оказалась тупиком до сих пор.
В том же духе я также пытался преобразовать контейнер в образ шаблона LXC и построить его, но опять же, это не сработало, как я надеялся.
Итак, после двух недель исследований и прочтения множества постов в блогах я, наконец, понял, как это сделать.
Это не особенно прямолинейно, но это и не ракетостроение, тем не менее, у меня возникает чувство (и враждебность), когда я спрашиваю на форумах proxmox, что они предпочли бы, чтобы вы не уходили с платформы proxmox, временно или в противном случае.
В любом случае, шаги, которые вам нужно выполнить, по существу
в командной строке proxmox, "pct list", чтобы получить ID контейнера, который вы хотите скопировать.
в той же командной строке "vzdump -compress gzip -dumpdir /tmp" вам не нужен параметр dump dir, но по умолчанию вложена дурацкая папка, поэтому я бы посоветовал использовать tmp дир для легкости.
затем вам нужно создать «файл метаданных», используя следующие команды (ВНИМАНИЕ: перед копированием и вставкой/использованием команды символы # должны быть заменены на BACKTICKS, я должен был использовать символ # поскольку уценка в сообщении SO не может отображать символ обратной галочки из-за того, как его использует уценка):
echo architecture: #pct config $1 | grep arch: | awk '{print $2}'# > metadata.yaml
echo creation_date: #date +%s# >> metadata.yaml
tar -czvf metadata.tar.gz metadata.yaml
rm metadata.yaml
Переместите созданные вами файлы «.tar.gz» на целевую машину, на которой работает современная версия LXD, я использовал rsync для этого.
В командной строке вашего компьютера LXD используйте следующую команду для импорта метаданных и файла дампа в образ lxc:
sudo lxc image import metadata.tar.gz <имя vzdump>.tar.gz
Это импортирует контейнер как образ, который не может быть запущен напрямую, введите
lxc image list
и получите отпечаток образа, который вы только что создали
в командной строке LXD, используя отпечаток вашего образа. :
lxc launch <отпечаток пальца> <имя, которое вы хотите дать своему контейнеру>
На этом этапе у вас будет новый контейнер, который является точной копией вашего исходного запущенного proxmox.
Однако у вас могут отсутствовать те же сетевые настройки. Для меня все в моей сети работает с DHCP, включая статическую аренду, поэтому было важно, чтобы мои новые контейнеры имели тот же MAC-адрес, что легко было сделать с помощью
pct config <container id>
в клиентской программе proxmox для отображения оборудования. конфигурации, затем скопируйте и вставьте MAC-адрес из него, а затем
lxc stop <container name>
lxc config set <container name> volatile.eth0.hwaddr <copied mac address>
lxc start <container name>
. Если ваши статические аренды DHCP управляются с MAC-адреса, это гарантирует, что они получат один и тот же IP-адрес, пока ваш хост LXD настроен для моста IP-адресов в той же сети, что и ваш исходный хост proxmox.
Я написал сообщение в блоге, которое можно найти по адресу: https://shawtyds.wordpress.com/2021/11/16/converting-containers-from-proxmox-ve-back-to-plain. -old-lxd-lxc/, который содержит более подробную информацию.
После запуска скопированного контейнера достаточно использовать lxc для удаления временного образа (если вы не хотите его сохранить) и стереть файлы «.tar.gz» с обоих серверов и, возможно, удалить старый контейнер от proxmox, если он вам больше не нужен.