У меня есть ежечасное задание 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 завершается:
Есть ли более разумный способ реплицировать общие ресурсы Samba как можно ближе к реальному времени?
Есть что-нибудь, что поддерживает «удаленное дифференциальное сжатие» в Linux?
Вы должны серьезно подумать DRBD. DRBD - это программное обеспечение RAID1 через TCP-IP. Он будет реплицировать блочное устройство по любому каналу в реальном времени. Каждый раз, когда вы изменяете HD-блок, он будет копировать его.
Он не зависит от FS, поэтому вы можете поставить любую FS поверх него. Он также будет работать рука об руку с тактом, что позволит вам запустить горячий резерв, как только исходный узел умрет.