Синхронизировать две огромные файловые системы

Мне нужно регулярно синхронизировать две огромные файловые системы в одном направлении. Обе стороны работают под Linux с полным доступом к руту.

Мое предпочтительное решение: я могу прочитать список измененных файлов и каталогов и синхронизировать только измененные файлы. Но как я могу получить список изменений? I notify нужен обработчик для каждого каталога, но их слишком много. Может из журнала файловой системы?

Вот некоторые решения и почему они не подходят:

  • rsync: необходимо рекурсивно проверять все файлы. Есть несколько миллионов файлов и только небольшие изменения. Проверка занимает слишком много времени.
  • inotify: мне нужен обработчик для каждого каталога и там слишком много. I notify не был создан для сценариев "смотреть все файлы".
  • DRDB: обе стороны должны действовать независимо. Может случиться так, что хосты не смогут подключиться в течение нескольких дней.

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

2 ответа

Как насчет GlusterFS? Я обнаружил, что развиваемый им трафик значительно меньше, чем DRBD.

+1 для GlusterFS, это пользовательская платформа Storage Clustering, она довольно проста в настройке и работает на уровне файлов.

После установки все, что вам нужно сделать, это создать новый реплицированный том кластера на главном сервере, он будет реплицировать содержимое в режиме реального времени через TCP/IP. Затем настройте клиент (который в основном монтирует файловую систему), вы даже можете сделать это на одном из серверов и затем всегда записывать данные в эту новую смонтированную файловую систему.

Другие вопросы по тегам