Это отличная функция, и я понимаю, что она пока экспериментальная, но у меня регулярно перестает синхронизироваться весь мой список виртуальных машин. Мне приходится перезапускать сервис pvesr, после чего всё снова работает день или два, а потом снова перестает. Мне кажется, что она просто застревает на операции заморозки файловой системы у некоторых контейнеров, и из-за этого перестают работать все.
Например, сейчас 2017-08-06, когда я это пишу, и вот последний лог-файл, который я вижу:
Код:
2017-08-03 05:30:01 700-0: start replication job
2017-08-03 05:30:01 700-0: guest => CT 700, running => 1
2017-08-03 05:30:01 700-0: volumes => main:subvol-700-disk-1
2017-08-03 05:30:02 700-0: freeze guest filesystem
Думаю, проблема возникает, когда репликация совпадает с задачей резервного копирования, поскольку этот контейнер настроен на бэкап ровно в 05:30 каждый день.
Конфиг replication.cfg для этого контейнера такой:
Код:
local: 700-0
target kt-proxmox-02
rate 10
То есть репликация запускается каждые 15 минут по умолчанию. Думаю, в коде репликации нужно проверить, не выполняется ли в этот момент резервное копирование, и если да — пропускать репликацию. Или ещё лучше — чтобы репликация запускалась одновременно с бэкапом, но с каким-то алгоритмом, который не замораживает файловую систему в одно и то же время, а просто немного задерживает репликацию, пока завершится заморозка у резервного копирования.
Например, сейчас 2017-08-06, когда я это пишу, и вот последний лог-файл, который я вижу:
Код:
2017-08-03 05:30:01 700-0: start replication job
2017-08-03 05:30:01 700-0: guest => CT 700, running => 1
2017-08-03 05:30:01 700-0: volumes => main:subvol-700-disk-1
2017-08-03 05:30:02 700-0: freeze guest filesystem
Думаю, проблема возникает, когда репликация совпадает с задачей резервного копирования, поскольку этот контейнер настроен на бэкап ровно в 05:30 каждый день.
Конфиг replication.cfg для этого контейнера такой:
Код:
local: 700-0
target kt-proxmox-02
rate 10
То есть репликация запускается каждые 15 минут по умолчанию. Думаю, в коде репликации нужно проверить, не выполняется ли в этот момент резервное копирование, и если да — пропускать репликацию. Или ещё лучше — чтобы репликация запускалась одновременно с бэкапом, но с каким-то алгоритмом, который не замораживает файловую систему в одно и то же время, а просто немного задерживает репликацию, пока завершится заморозка у резервного копирования.

. У меня стоит Proxmox 5.0-33. Сейчас у меня один LXC синхронизируется на ZFS уже 7 часов по центральноевропейскому времени, сейчас 13:00 CET (машины синхронизируются каждые 15 минут, остальные машины в последний раз синхронизировались в 6:45). Предыдущая синхронизация заняла 6,8 секунд согласно таблице репликации. Лог показывает, что один бэкап (не репликация) начался примерно в 6:00 и закончился спустя 3,5 минуты, а другой бэкап начался в 7:00:01 и длился примерно 13 минут для той машины (удалённое хранилище, поэтому медленнее). Получается, что именно бэкап негативно влияет на репликацию. Думаю, что снапшот для бэкапа создаётся не полностью независимо от репликации. Настроить расписание так, чтобы этого не происходило, сложно, ведь бэкап всех машин занимает несколько часов. Поэтому всегда есть вероятность, что снапшот для бэкапа создаётся в критический для репликации момент (когда бы он ни был). Репликацию нужно останавливать на время бэкапа. Определить подходящее расписание для cron — тоже не простая задача, как мне кажется. Есть идеи, как этого избежать?
Поэтому, хотя остановка 'lxc-freeze' с помощью 'lxc-unfreeze' останавливала задачу резервного копирования, статус репликации оставался "синхронизация". В отчёте указана продолжительность 23,0 часа, но разморозка произошла более чем через 23 часа после начала репликации. То, что в "Next Sync" стоит ожидание, связано с тем, что я отключил эту репликацию. Включение её заново запустило репликацию, и она завершилась успешно.