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

Есть ли способ реплицировать очень большие общие файловые ресурсы в реальном времени?

У меня есть ежечасное задание cron, которое копирует около 40 ГБ данных из исходной папки в новую папку с добавленным часом в конце.

Когда это будет сделано, работа удалит все, что старше 24 часов. Эти данные очень часто меняются в рабочее время и находятся в общей папке samba. Вот как выглядит структура папок:

\ сервер \ Версия.1
\ сервер \ Версия.2
\ сервер \ Версия.3
...
\ server \ Version.24

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

Теперь вы можете подумать, что я идиот из-за того, что все это выдумал. По правде говоря, я только что узнал. На самом деле он использовался годами и настолько невероятно прост, что любой мог удалить ВЕСЬ общий ресурс 40 ГБ (представьте, что диалоговое окно буферизуется ... удаление тысяч и тысяч файлов), и на самом деле было бы быстрее восстановить, переместив последнюю копию обратно в источник, чем нужно было удалить.

Гениально!

Теперь, в довершение всего, мне нужно эффективно реплицировать эти 960 ГБ «в основном похожих» данных на удаленный сервер по каналу WAN, причем репликация происходит как можно ближе к реальному времени - подумайте о горячем резерве, аварийном восстановлении и т. Д.

Первой моей мыслью был rsync.

Полный провал.

Rsync видит, что он видит удаление папки, которой 24 часа, и добавление новой папки с 30 ГБ данных для синхронизации! Я также посмотрел на rdiff-backup и unison, они оба, похоже, используют похожие алгоритмы и не хранят достаточно метаданных, чтобы делать это разумно.

Лучшее, что я могу найти "из коробки" для этого, - это Windows Server "Репликация распределенной файловой системы", в которой используется "удаленное разностное сжатие". После прочтения справочной информации о том, как это работает, это действительно похоже на то, что мне нужно. .

Проблема: Оба сервера работают под управлением Linux. Ооо! Я рассматриваю один из подходов к этому, скажем, 5 утра, и работа cron завершается:

  1. Новая папка версии 5 поступает на локальный сервер
  2. SSH на удаленный сервер и скопируйте версию 4 в версию 5
  3. Запустите rsync на локальном сервере, отправив изменения на удаленный сервер. Rsync наконец-то знает, как сделать дифференциальную копию между Version.4 и Version.5

Есть ли более разумный способ реплицировать общие ресурсы Samba как можно ближе к реальному времени?

Есть что-нибудь, что поддерживает «удаленное дифференциальное сжатие» в Linux?

Вы должны серьезно подумать DRBD. DRBD - это программное обеспечение RAID1 через TCP-IP. Он будет реплицировать блочное устройство по любому каналу в реальном времени. Каждый раз, когда вы изменяете HD-блок, он будет копировать его.

Он не зависит от FS, поэтому вы можете поставить любую FS поверх него. Он также будет работать рука об руку с тактом, что позволит вам запустить горячий резерв, как только исходный узел умрет.