Привет всем,

В рамках небольшой заметки решил продемонстрировать, как в ручном формате можно перенести виртуальную машину между хостами c proxmox. Для реализации этого воспользуемся утилитой vzdump, которая входит в состав программного обеспечения Proxmox VE и используется для создания снепшотов.

Создание бекапа

Собственно подключаемся на первый сервер c proxmox по ssh, и создаем бекап виртуальной машины. Предварительно нам потребуется узнать vmid нашей виртуальной машины, для этого достаточно выполнить команду:

root@prox01:~# qm list

Если же список виртуалок большой можно grep-пнуть машину по имени:

root@prox01:~# qm list | grep testvm
    117 testvm.nixhub.ru running    8096             150.00 299334

На файлухе моего сервера, монтирован отдельный локальный диск для бекапов и соответственно виртуалку буду бекапить туда. Для создания бекапа воспользуемся командой:

root@prox01:~# vzdump 117 --compress gzip --mode stop --dumpdir /mnt/vol1/backup

С командой передаются аргументы,

  • --compress gzip задает тип сжатия бекап файла, в данном случаи используем gzip-сжатие. По умолчанию используется алгоритм сжания zstd, который является самым быстрым из всех трех представленных алгоритмов. Мы же используем gzip, для максимального сжатия.
  • --mode stop при использовании этого режима, мы полностью стопим виртуальную машину. Если же стопить виртуальку для вас не приемлемый вариант, то можно воспользоваться режимом snaphot. В данном случаи виртуальная машина будет в запущенном состоянии, но потеряется какая-то часть (дельта) данных после создания снепшота.
  • --dumpdir /mnt/vol1/backup тут все просто, указывается путь для сохранения бекапа.

По итогу выполнения команды, нас будет ждать такой вывод:

INFO:  90% (136.0 GiB of 150.0 GiB) in 5m 56s, read: 1.3 GiB/s, write: 121.3 KiB/s
INFO:  93% (139.8 GiB of 150.0 GiB) in 5m 59s, read: 1.3 GiB/s, write: 0 B/s
INFO:  95% (143.0 GiB of 150.0 GiB) in 6m 2s, read: 1.1 GiB/s, write: 5.4 MiB/s
INFO:  97% (146.5 GiB of 150.0 GiB) in 6m 5s, read: 1.2 GiB/s, write: 2.6 MiB/s
INFO:  98% (148.5 GiB of 150.0 GiB) in 6m 8s, read: 676.1 MiB/s, write: 19.1 MiB/s
INFO: 100% (150.0 GiB of 150.0 GiB) in 6m 10s, read: 775.5 MiB/s, write: 0 B/s
INFO: backup is sparse: 145.71 GiB (97%) total zero data
INFO: transferred 150.00 GiB in 370 seconds (415.1 MiB/s)
INFO: archive file size: 2.10GB
INFO: Finished Backup of VM 117 (00:06:17)
INFO: Backup finished at 2024-06-09 13:31:32
INFO: Backup job finished successfully

Дамп файл виртуальной машины будет лежать в каталоге /mnt/vol1/backup, с разрешением файлы gz:

root@prox01:~# ls /mnt/vol1/backup/*gz
/mnt/vol1/backup/vzdump-qemu-117-2024_06_09-13_25_15.vma.gz

Восстанавлием виртуалку

После копируем бекап-файл на второй сервер,

root@prox01:~# scp /mnt/vol1/backup/vzdump-qemu-117-2024_06_09-13_25_15.vma.gz root@prox02.nixhub.local:/mnt/vol1/backup/

На новом хосте, создавать виртуалку не нужно. При восстановлении она будет создана автоматически. Теперь при помощи утилиты qmrestore восстанавливаем виртуальную машину, командой.

root@prox02:~# qmrestore /mnt/vol1/backup/vzdump-qemu-117-2024_06_09-13_25_15.vma.gz 117 --storage local-lvm

При помощи аргумента --storage local-lvm, указываем на какой датастор хотим захостить виртуальную машину. Чтобы просмотреть доступные дисковые пули (датасторы), можно воспользоваться командой:

root@prox02:~# pvesm status
Name             Type     Status           Total            Used       Available        %
BackupDS          dir     active       389877764        10044780       379832984    2.58%
local             dir     active        98497780         4747860        88700372    4.82%
local-lvm     lvmthin     active       736530432        23053402       713477029    3.13%

После восстановления запускаем виртуальную машину, командой:

root@prox02:~# qm start 117

Задача выполнена, теперь может сходить и выпить лавандового рафа =)