Рейтинг:0

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

флаг in

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

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

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

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

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

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

djdomi avatar
флаг za
proxmox использует стандартную настройку lxc. Пожалуйста, просто попробуйте использовать его
флаг in
Эммм... вы действительно правильно прочитали мой вопрос? Я хорошо знаю, что использует Proxmox под капотом, но я спрашиваю не об этом, не так ли?
djdomi avatar
флаг za
я прочитал и использовал файл backuo, который в основном представляет собой просто копию файловой системы для копирования и запуска контейнера, единственное, о чем вы можете подумать, это восстановить его, потому что это файл резервной копии, а не шаблон
флаг in
Вот ответ, который я ищу, как взять файл архива, созданный vzdump, и заставить его работать с обычным LXD/LXC, который НЕ установлен как часть Proxmox, если вы можете это объяснить, то это будет ответ.
djdomi avatar
флаг za
Я думаю, вам просто нужно использовать lxc import tarfile
флаг in
Хорошо, спасибо, попробуем и посмотрим, что получится.
флаг in
Попробовал, получил следующее: «Ошибка: резервная копия отсутствует index.yaml», так что, по крайней мере, мне есть за чем охотиться.
Рейтинг:1
флаг in

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

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

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

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

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

  3. затем вам нужно создать «файл метаданных», используя следующие команды (обратите внимание: символы # необходимо изменить на BACKTICKS, прежде чем копировать и вставлять/использовать команду, мне пришлось использовать символ # как уценку в сообщение SO не может отображать символ обратной галочки из-за того, как его использует уценка):

    эхо-архитектура: #pct config $1 | арка grep: | awk '{print $2}'# > metadata.yaml

    эхо-дата создания: #date +%s# >> metadata.yaml

    tar -czvf metadata.tar.gz metadata.yaml

    метаданные rm.yaml
  1. Переместите созданные вами файлы «.tar.gz» на целевую машину с современной версией LXD, для этого я использовал rsync.

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

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

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

lxc список изображений

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

Список образов LXC

  1. все еще в командной строке LXD, используя отпечаток пальца из вашего изображения:

    lxc launch <fingerprint> <имя, которое вы хотите дать своему контейнеру>

На этом этапе у вас будет новый контейнер, который является точной копией вашего оригинального работающего proxmox.

Однако у вас может не быть одинаковых сетевых настроек. Для меня все в моей сети работает через DHCP, включая статическую аренду, поэтому было важно, чтобы мои новые контейнеры имели один и тот же MAC-адрес, что было легко сделать с помощью

pct config <идентификатор контейнера>

на proxmox cli, чтобы отобразить конфигурацию оборудования, затем скопируйте и вставьте MAC-адрес оттуда, а затем

lxc stop <имя контейнера>
lxc config set <имя контейнера> volatile.eth0.hwaddr <скопированный mac-адрес>
lxc start <имя контейнера>

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

Ответить или комментировать

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