У меня есть ~ 700 ГБ хранилища, где я храню ~ 15 миллионов файлов, поэтому средний размер файла составляет ~ 50 КБ. Чтобы подкрепить это, за ночь я запускаю простой rsync
скрипт со следующим набором флагов:
--archive --update --compress --numeric-ids --human-readable --stats
На это уходит 8+ часов rsync
для выполнения своей работы в среднем ежедневно перемещается около 1–4 ГБ данных. Мне это кажется невероятно неэффективным.
Могу я настроить свой rsync
скрипт любой как? Я полагаю, что лучше всего перенести данные на MongoDB
или что-то подобное, но с этим есть проблема, потому что текущая инфраструктура полагается на файлы, к которым осуществляется доступ, как на posix
файловая система, перенос их во что-то совершенно другое может потребовать дополнительной работы, потенциально слишком много работы ... Какая еще может быть лучшая стратегия?
Столько времени требуется rsync, чтобы проанализировать такое количество файлов, даже если передача выполняется эффективно. Он должен выполнять более 15 миллионов операций ввода-вывода плюс-минус кэширование. Вы можете использовать очень быстрое хранилище, но это может быть дорогостоящим.
Предложение zfs состоит в том, чтобы использовать копии уровня блока, в которых это становится одним гигантским файлом для передачи.
Эти концепции также применимы к lvm, хотя для этого может потребоваться больше сценариев, поскольку удаленные снимки не встроены. См. Что-то вроде lvmsync для идей.