Много лет назад из всех игроков на рынке виртуализации выбрали с коллегами Proxmox VE, как самый интересный open source проект уровня enterprise. Спустя некоторое время, получили железо под Proxmox Backup Server, что вместе с Proxmox Virtual Environment дало законченное решение. В данной статье хочется немного рассказать об самых удивительных возможностях PVE + PBS.
Читая в документации проекта все возможности, проникаешься на практике только когда сам начнёшь их использовать.
Приятное слово reused - значит передавать эти данные по сети не нужно, итоговое время создания резервной копии снижается за счёт передачи только изменений. При желании можно увеличить частоту создания резервных копий у очень важных виртуальных машины. При настроенной вами схеме очистки старых копий (Backup Retention) в Proxmox Backup Server, автоматически останутся нужные резервные копии (дневные, недельные, месячные, годовые).
У меня у всех виртуальных жёстких дисков виртуальных машин выставлена опция Discard. В современных Linux системах должен исправно работать fstrim через таймер раз в неделю по умолчанию - sudo systemctl status fstrim.timer
Сам лично могу дополнительно вызвать sudo fstrim -v --all
, если на сервере удалял много данных.
На современных MS Windows платформах у меня в Планировщике вызывается PowerShell скрипт fstrim.ps1 с содержимым типа:
Optimize-Volume -DriveLetter C -ReTrim
Optimize-Volume -DriveLetter D -ReTrim
Ключевая мысль - с помощью отправки TRIM быстрее сообщаем нижележащему слою хранилища какие блоки данных уже не используются, а значит потом в резервную копию они не попадут. Если ваше хранилище Thin Provisioning (Snapshots = yes), то TRIM позволяет быть стройнее вашим виртуальным машинам и их резервным копиям.
INFO: Starting Backup of VM 119 (qemu)
INFO: Backup started at 2023-11-08 11:29:14
INFO: include disk 'virtio0' 'rbd:vm-119-disk-0' 80G
INFO: include disk 'virtio1' 'rbd:vm-119-disk-1' 1000G
INFO: include disk 'virtio2' 'rbd:vm-119-disk-2' 1500G
INFO: virtio0: dirty-bitmap status: OK (5.1 GiB of 80.0 GiB dirty)
INFO: virtio1: dirty-bitmap status: OK (1.6 GiB of 1000.0 GiB dirty)
INFO: virtio2: dirty-bitmap status: OK (10.9 GiB of 1.5 TiB dirty)
INFO: using fast incremental mode (dirty-bitmap), 17.6 GiB dirty of 2.5 TiB total
INFO: 1% (180.0 MiB of 17.6 GiB) in 3s, read: 60.0 MiB/s, write: 60.0 MiB/s
...
INFO: 99% (17.4 GiB of 17.6 GiB) in 6m 23s, read: 45.0 MiB/s, write: 45.0 MiB/s
INFO: 100% (17.6 GiB of 17.6 GiB) in 6m 27s, read: 38.0 MiB/s, write: 38.0 MiB/s
INFO: backup was done incrementally, reused 2.50 TiB (99%)
INFO: transferred 17.57 GiB in 387 seconds (46.5 MiB/s)
INFO: Finished Backup of VM 119 (00:06:29)
INFO: Backup finished at 2023-11-08 11:35:43
Proxmox Backup Server с помощью ZFS эффективно хранит данные резервных копий. Так как резервные копии мало чем отличаются друг от друга в рамках конкретной виртуальной машины, то, в целом, ожидаемо видишь большой фактор дедупликации. Хранилище не так быстро исчерпывает своё дисковое пространство, что не может не радовать.
Особо удивляют случаи создания первой резервной копии виртуальной машины (created new). Инстинктивно думаешь что сейчас будет отправлена полная копия, а Proxmox Backup Server снова тебе пишет reused, так как внутри виртуальной машины операционная система, чьи копии он уже хранит. Особо стоит напомнить, что резервная копия создаётся в онлайн режиме, благодаря механизму снапшотов, без остановки работы гостевой операционной системы виртуальной машины (status = running).
138: 2023-11-08 09:43:14 INFO: Starting Backup of VM 138 (qemu)
138: 2023-11-08 09:43:14 INFO: status = running
138: 2023-11-08 09:43:14 INFO: VM Name: OpenDCIM
138: 2023-11-08 09:43:14 INFO: include disk 'scsi0' 'rbd:vm-138-disk-0' 32G
138: 2023-11-08 09:43:14 INFO: backup mode: snapshot
138: 2023-11-08 09:43:14 INFO: ionice priority: 7
138: 2023-11-08 09:43:14 INFO: creating Proxmox Backup Server archive 'vm/138/2023-11-08T06:43:14Z'
138: 2023-11-08 09:43:14 INFO: issuing guest-agent 'fs-freeze' command
138: 2023-11-08 09:43:16 INFO: issuing guest-agent 'fs-thaw' command
138: 2023-11-08 09:43:16 INFO: resuming VM again
138: 2023-11-08 09:43:16 INFO: scsi0: dirty-bitmap status: created new
138: 2023-11-08 09:43:19 INFO: 7% (2.3 GiB of 32.0 GiB) in 3s, read: 769.3 MiB/s, write: 158.7 MiB/s
...
138: 2023-11-08 09:44:31 INFO: 77% (24.7 GiB of 32.0 GiB) in 1m 15s, read: 785.3 MiB/s, write: 150.7 MiB/s
138: 2023-11-08 09:44:34 INFO: 96% (30.8 GiB of 32.0 GiB) in 1m 18s, read: 2.0 GiB/s, write: 116.0 MiB/s
138: 2023-11-08 09:44:35 INFO: 100% (32.0 GiB of 32.0 GiB) in 1m 19s, read: 1.2 GiB/s, write: 60.0 MiB/s
138: 2023-11-08 09:44:35 INFO: backup is sparse: 21.11 GiB (65%) total zero data
138: 2023-11-08 09:44:35 INFO: backup was done incrementally, reused 21.45 GiB (67%)
138: 2023-11-08 09:44:35 INFO: transferred 32.00 GiB in 79 seconds (414.8 MiB/s)
138: 2023-11-08 09:44:36 INFO: Finished Backup of VM 138 (00:01:22)
Реально крутая возможность восстановить из резервной копии конкретный файл (Single File Restore). Шаловливые ручки пользователей обычно случайно стирают-затирают конкретные файлы или папки.
Если нужно восстановить всю виртуальную машину, то и тут может здорово помочь технология Live-Restore и разительно сократить итоговое время восстановления работоспособного состояния. Выигрыш особо виден у виртуальных машин с виртуальными дисками большого размера. Данные на таких дисках обычно не нужны сразу все одномоментно, поэтому опция Live-Restore позволит сразу запустить виртуальную машину с небольшим штрафом по чтению своего диска, в то время как с Proxmox Backup Server налету будут подтягиваться требуемые данные. Виртуальная машина будет иметь возможность обслуживать своих пользователей, в то время как её диски в фоне восстанавливаются из резервной копии. Причём, если запросы пользователей, вынуждают ВМ прочесть конкретные данные, именно они и будут затребываться в первую очередь. Снижение времени простоя (downtime) при восстановлении - это реально круто!
Возможности Proxmox Virtual Environment 8.0
Дополнительные материалы:
Proxmox VE API.
Старая и не актуальная статья Отдайте моё назад.