Я ищу файловую систему, которая может реплицироваться на большие расстояния и допускать отключение в течение продолжительных периодов времени с использованием локального буфера, который должен быть дисковым буфером, для постановки изменений в очередь для репликации.
DRBD был идеальным кандидатом для DRBD Proxy, но он буферизуется в ОЗУ. Не уверен, что этого будет достаточно.
Я стараюсь избегать таких вещей, как Ceph, у которых гораздо больше функций, чем нужно.
Он должен обрабатывать порядка миллиарда файлов в одной файловой системе, и ему нужно только реплицировать из файловой системы A в файловую систему B. Файлов будет много, но они будут только записываться, а не изменяться. Умеренный объем данных будет записываться все время, но не настолько, чтобы репликация не могла наверстать упущенное даже через несколько дней нахождения в автономном режиме. Никакой кластеризации или чего-то подобного не требуется.
На самом деле я ищу что-то, что работает как репликация MySQL, но для файловой системы.
Я нашел много комментариев о репликации файловых систем, но для меня недостающая часть - это возможность буферизовать обновления на диск, если ссылка не работает в течение длительного периода.
Существует полностью асинхронная репликация на уровне ядра, основанная на файлах журнала транзакций: https://github.com/schoebel/mars
Возможно, использование zfs send / receive поможет?
Я уже много лет использую zfs в linux, чтобы добиться чего-то подобного.
Я могу представить себе своего рода цикл, который создает моментальный снимок, а затем отправляет его по сети, если он терпит неудачу, повторяет попытку с постоянно увеличивающимся временем между попытками.
Вы даже можете отделить процесс создания снимков от процесса репликации, чтобы сохранить меньшие приращения для повышения устойчивости к сбоям сети при отправке обновлений.