Привет всем,
В рамках небольшой заметки решил продемонстрировать, как в ручном формате можно перенести виртуальную машину между хостами 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
Задача выполнена, теперь может сходить и выпить лавандового рафа =)