Назад | Перейти на главную страницу

Асинхронная репликация файлов на большие расстояния с буферизацией

Я ищу файловую систему, которая может реплицироваться на большие расстояния и допускать отключение в течение продолжительных периодов времени с использованием локального буфера, который должен быть дисковым буфером, для постановки изменений в очередь для репликации.

DRBD был идеальным кандидатом для DRBD Proxy, но он буферизуется в ОЗУ. Не уверен, что этого будет достаточно.

Я стараюсь избегать таких вещей, как Ceph, у которых гораздо больше функций, чем нужно.

Он должен обрабатывать порядка миллиарда файлов в одной файловой системе, и ему нужно только реплицировать из файловой системы A в файловую систему B. Файлов будет много, но они будут только записываться, а не изменяться. Умеренный объем данных будет записываться все время, но не настолько, чтобы репликация не могла наверстать упущенное даже через несколько дней нахождения в автономном режиме. Никакой кластеризации или чего-то подобного не требуется.

На самом деле я ищу что-то, что работает как репликация MySQL, но для файловой системы.

Я нашел много комментариев о репликации файловых систем, но для меня недостающая часть - это возможность буферизовать обновления на диск, если ссылка не работает в течение длительного периода.

Существует полностью асинхронная репликация на уровне ядра, основанная на файлах журнала транзакций: https://github.com/schoebel/mars

Возможно, использование zfs send / receive поможет?

Я уже много лет использую zfs в linux, чтобы добиться чего-то подобного.

Я могу представить себе своего рода цикл, который создает моментальный снимок, а затем отправляет его по сети, если он терпит неудачу, повторяет попытку с постоянно увеличивающимся временем между попытками.

Вы даже можете отделить процесс создания снимков от процесса репликации, чтобы сохранить меньшие приращения для повышения устойчивости к сбоям сети при отправке обновлений.