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

Репликация 1 миллиона файлов в двух направлениях - в основном только для чтения

У меня есть коллекция файлов, которая в настоящее время находится на NAS в нашей локальной сети, это около 1,1 миллиона файлов с общим размером 2 ТБ. Нам нужно реплицировать это на AWS, чтобы начать его обработку. Однако изменения также должны синхронизироваться с нашей локальной сетью, если они сделаны на стороне облака.

На данный момент самая низкая задержка синхронизации, которую мы смогли получить, составляет около часа или двух. Подключение локального NAS к нашему экземпляру EC2 и простое перечисление всех файлов find [path] &> /dev/null занимает более часа.

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

Пропускная способность не является проблемой (около 100 МБ / с в обе стороны), а задержка из офиса в выбранный нами регион AWS составляет около 35 мс.

Есть ли лучший способ справиться с этим? У нас есть возможность запускать виртуальные машины локально в нашей локальной сети, если это необходимо.

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

Или используйте файловую систему со встроенными снимками для отправки и получения, например btrfs или zfs.

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

Лучше всего для двусторонней связи использовать клиент-серверный подход, который работает с обеих сторон локально, например, rsync может.

Если вы можете уменьшить синхронизацию до односторонней для определенных папок и просто реплицировать, у вас есть гораздо больше вариантов, например, копировать в зависимости от флага архива (Windows) или использовать tar через удаленный канал (Linux).

В любом случае вы также можете использовать местные временные метки («что нового с момента последней синхронизации?»).