Перенос виртуальных машин между серверами (нодами) гипервизора Proxmox VE не входящими в кластер довольно часто встречающаяся задача. На первый взгляд она довольно простая, но имеет свои особенности, которые могут поставить в тупик начинающих администраторов этой системы виртуализации. Основная сложность заключается в том, что Proxmox может использовать различные виды хранилищ и форматов виртуальных дисков и, подходящие в одном случае рекомендации окажутся бесполезны в другом. Поэтому нужен универсальный способ, о котором мы хотим рассказать в этой статье.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Богатство возможностей вариантов хранения в Proxmox, являющееся несомненным преимуществом, в данной задаче поворачивается к нам обратной стороной медали. Во множестве гуляющие по сети рекомендации: скопировать образ диска виртуальной машины и настройки еще больше запутывают и сбивают с толку. А при использовании некоторых вариантов хранилища у вас просто может не быть привычного файла, который можно скопировать.
Но есть один простой и универсальный способ - резервное копирование. Резервная копия - это единственный файл, содержащий как образ диска, так и настройки виртуальной машины или контейнера, его легко перемещать и еще легче восстанавливать. Весь процесс потребует всего лишь нескольких команд. Работать мы будем в командной строке от имени суперпользователя, потому что это гораздо проще и удобнее, нежели через веб-интерфейс.
Первым делом выясним ID виртуальной машины или контейнера которые мы собираемся переносить, затем перейдем в любое удобное расположение, скажем в домашнюю директорию суперпользователя /root, единственное условие - на файловой системе должно хватать места для создания резервной копии виртуалки.
Затем создадим дамп виртуальной машины или контейнера, явно указав его размещение и режим копирования:
vzdump 105 --dumpdir /root --mode stop
В нашем случае ID - 105, директория назначения /root и режим копирования с остановкой виртуальной машины - stop, последнее - важно, данный режим обеспечивает максимальную согласованность резервной копии и при переносе между серверами следует использовать именно его.
Мы не использовали никакого алгоритма сжатия, так как не видим в этом особого смысла если образ будет передаваться по локальной сети или при помощи съемного носителя, но при необходимости можете ее сжать, мы рекомендуем использовать современный быстрый и эффективный алгоритм Zstandard:
vzdump 105 --dumpdir /root --mode stop --compress zstd
В результате в целевой директории появится файл образа с именем подобным vzdump-qemu-105-2021_12_10-16_47_51.vma, которое содержит тип виртуальной машины - qemu/lxc, ее ID, а также дату и время создания. Расширение .vma соответствует несжатому образу, при использовании компрессии добавится еще одно расширение архиватора, для Zstandard - .vma.zstd. Также рядом появится файл с расширением .log, в нем находится показанное на скриншоте выше содержимое и для восстановления он не нужен. Хотя, если вы собираетесь хранить данный образ, то мы советуем копировать его вместе с файлом лога, в последующем это позволит проще и быстрее разобраться с назначением данного дампа.
Теперь передадим копию на новый сервер виртуализации любым удобным способом, например, можно использовать SCP:
scp /root/vzdump-qemu-105-2021_12_10-16_47_51.vma root@192.168.99.8:/root
Где 192.168.99.8 - адрес нового гипервизора, местом расположения также укажем /root, но вы можете выбрать любую иную локацию.
Покинем старый гипервизор и перейдем в командную строку нового, но перед этим уточним с какого номера начинаются на нем свободные идентификаторы и в каком хранилище располагаются образа дисков.
В нашем примере видно, что свободные ID начинаются со 105, а хранилищем образов является local-lvm. Далее все зависит от того, что мы восстанавливаем, виртуальную машину или контейнер. Для виртуалки выполним:
qmrestore /root/vzdump-qemu-105-2021_12_10-16_47_51.vma 105 -storage local-lvm
Где мы сначала указываем путь к резервной копии, затем любой свободный ID (он может отличаться от старого ID, в нашем случае просто совпало) и хранилище local-lvm при помощи ключа -storage, если этого не сделать, то виртуальная машина будет восстановлена в хранилище local.
Для контейнеров команда будет немного иной:
pct restore 107 /root/vzdump-lxc-103-2021_12_10-16_49_32.vma -storage local-lvm
В ней мы сначала указываем желаемый свободный ID, а затем путь к архиву.
После завершения восстановления не спешите включать новую виртуальную машину, особенно если оба сервера находятся в пределах одной сети. Сначала выключите виртуальную машину на старом сервере, а потом внимательно проверьте настройки новой, иначе вы вполне можете получить глупые и досадные ошибки, например, такую:
А всего лишь потому, что на старом узле в привод виртуалки был смонтирован образ, который на новом месте отсутствует. Также внимательно проверьте все внешние устройства, например USB, удалите неиспользуемые и добавьте новые. После чего включите виртуальную машину или контейнер. Также не забудьте добавить ее в планы резервного копирования на новом сервере.
Затем тщательно проверяем работоспособность, после чего виртуальную машину со старого сервера желательно удалить. Также удалите использовавшиеся для переноса резервные копии на обоих узлах.
Как видим, перенос виртуальных машин или контейнеров между узлами Proxmox VE достаточно прост и универсален, все что вам нужно - это свободное место и знание нескольких команд.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии