Могу ли я восстановить tar-архив Vzdump в контейнер LXD/LXC

. У меня есть несколько файлов "tar", созданных на старом сервере proxmox 6 с помощью инструмента vzdump.

Человек, который первоначально создал их, покинул компанию, и компания изменила свой контейнерный сервер с «Proxmox VE» на стандартный сервер Linux Ubuntu 20.04 LTS, на котором установлена ​​последняя версия LXD для его контейнерной системы.

теперь меня спросили, могу ли я взять эти tar-файлы Vzdump и превратить их в обычные стандартные развертывания на основе LXC, работающие на новом сервере.

Кажется, что каждый поиск, который я делаю, ТОЛЬКО приводит к преобразованию пустых контейнеров LXC в контейнеры Proxmox VE, и спрашивать на форумах proxmox меня ни к чему не приведет, потому что все, что они хотят сделать, это вернуть меня на proxmox, который мой клиент больше не хочет использовать.

Я могу vzrestore на новый сервер, но метаданные в контейнеры несовместимы с LXD/LXC, поэтому шляпа оказалась тупиком до сих пор.

В том же духе я также пытался преобразовать контейнер в образ шаблона LXC и построить его, но опять же, это не сработало, как я надеялся.

0
задан 11 November 2021 в 12:24
1 ответ

Итак, после двух недель исследований и прочтения множества постов в блогах я, наконец, понял, как это сделать.

Это не особенно прямолинейно, но это и не ракетостроение, тем не менее, у меня возникает чувство (и враждебность), когда я спрашиваю на форумах proxmox, что они предпочли бы, чтобы вы не уходили с платформы proxmox, временно или в противном случае.

В любом случае, шаги, которые вам нужно выполнить, по существу

  1. в командной строке proxmox, "pct list", чтобы получить ID контейнера, который вы хотите скопировать.

  2. в той же командной строке "vzdump -compress gzip -dumpdir /tmp" вам не нужен параметр dump dir, но по умолчанию вложена дурацкая папка, поэтому я бы посоветовал использовать tmp дир для легкости.

  3. затем вам нужно создать «файл метаданных», используя следующие команды (ВНИМАНИЕ: перед копированием и вставкой/использованием команды символы # должны быть заменены на 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
  1. Переместите созданные вами файлы «.tar.gz» на целевую машину, на которой работает современная версия LXD, я использовал rsync для этого.

  2. В командной строке вашего компьютера LXD используйте следующую команду для импорта метаданных и файла дампа в образ lxc:

    sudo lxc image import metadata.tar.gz <имя vzdump>.tar.gz

Это импортирует контейнер как образ, который не может быть запущен напрямую, введите

lxc image list

и получите отпечаток образа, который вы только что создали

LXC image list

  1. в командной строке 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, если он вам больше не нужен.

1
ответ дан 17 November 2021 в 00:47

Теги

Похожие вопросы