Живая миграция требует общего хранилища или переноса всего диска по сети в момент переключения. Репликация ZFS решает эту проблему иначе: диск виртуальной машины заранее синхронизируется на соседний узел, и при аварии остаётся включить копию за секунды, а не ждать копирования терабайтов.
Как работает репликация ZFS в Proxmox VE
Механизм построен на снапшотах ZFS и команде zfs send/receive. Proxmox VE по расписанию создаёт снапшот диска VM, отправляет разницу с предыдущим снапшотом на целевой узел и хранит там актуальную копию. Между узлами передаётся только дельта, а не весь диск, поэтому повторная репликация занимает секунды даже для диска на сотни гигабайт.
Требования к хранилищу перед настройкой
На обоих узлах — источнике и получателе — должен быть настроен пул ZFS с одинаковым названием (например rpool/data), а сами узлы обязаны входить в один кластер Proxmox VE. Проверить название пула и его состояние можно командой:
zpool status rpool
zfs list rpool/data
Если пулы называются по-разному, репликацию придётся настраивать через ручной storage.cfg с явным указанием целевого пула.
Настройка задания репликации в интерфейсе
Задание создаётся в свойствах виртуальной машины, в разделе Replication. Заполните параметры:
| Параметр | Значение | Комментарий |
|---|---|---|
| Target | имя узла-получателя | второй или третий узел кластера |
| Schedule | */15 | интервал репликации в минутах |
| Rate limit | 50 MB/s | ограничение полосы на общей сети |
После сохранения задание появится в общем списке репликации узла и начнёт первый полный снапшот — он самый долгий, дальше пойдут только инкрементальные передачи.
Как запустить репликацию вручную и проверить статус
Для разовой синхронизации или диагностики используйте команду из консоли узла:
pvesr run --id 101-0
pvesr status
Команда pvesr status показывает время последней успешной репликации по каждому заданию и причину сбоя, если он был. Типичная ошибка — рассинхронизация снапшотов после ручного удаления диска или переноса VM без обновления задания.
Что делать при обрыве репликации
Если задание падает с ошибкой про отсутствующий общий снапшот, восстановите синхронизацию, удалив локальную копию на получателе и запустив полную репликацию заново:
pvesr delete 101-0 --force
qm set 101 --delete replicate
После этого создайте задание репликации заново через интерфейс — Proxmox VE снимет свежий базовый снапшот и перезапустит цепочку инкрементов с нуля.
Чем репликация ZFS отличается от бэкапа
Репликация — это не замена регулярному резервному копированию через расписание бэкапов. Она хранит только последнюю копию на соседнем узле и не защищает от логических ошибок вроде удаления файлов внутри гостевой ОС, которые тут же реплицируются вместе с диском. Репликацию стоит использовать для быстрого failover, а бэкапы — для восстановления на точку во времени.
Чек-лист рабочей репликации
- Пул ZFS с одинаковым именем присутствует на обоих узлах.
- Команда
pvesr statusпоказывает свежее время последней успешной синхронизации. - Rate limit подобран так, чтобы репликация не мешала обычному сетевому трафику кластера.
- Параллельно с репликацией настроено обычное резервное копирование на отдельное хранилище.