Синхронизировать две огромные файловые системы
Мне нужно регулярно синхронизировать две огромные файловые системы в одном направлении. Обе стороны работают под Linux с полным доступом к руту.
Мое предпочтительное решение: я могу прочитать список измененных файлов и каталогов и синхронизировать только измененные файлы. Но как я могу получить список изменений? I notify нужен обработчик для каждого каталога, но их слишком много. Может из журнала файловой системы?
Вот некоторые решения и почему они не подходят:
- rsync: необходимо рекурсивно проверять все файлы. Есть несколько миллионов файлов и только небольшие изменения. Проверка занимает слишком много времени.
- inotify: мне нужен обработчик для каждого каталога и там слишком много. I notify не был создан для сценариев "смотреть все файлы".
- DRDB: обе стороны должны действовать независимо. Может случиться так, что хосты не смогут подключиться в течение нескольких дней.
Обе машины должны синхронизироваться примерно каждые 15 минут. Начальная синхронизация не проблема, этот вопрос только о синхронизации изменений.
2 ответа
Как насчет GlusterFS? Я обнаружил, что развиваемый им трафик значительно меньше, чем DRBD.
+1 для GlusterFS, это пользовательская платформа Storage Clustering, она довольно проста в настройке и работает на уровне файлов.
После установки все, что вам нужно сделать, это создать новый реплицированный том кластера на главном сервере, он будет реплицировать содержимое в режиме реального времени через TCP/IP. Затем настройте клиент (который в основном монтирует файловую систему), вы даже можете сделать это на одном из серверов и затем всегда записывать данные в эту новую смонтированную файловую систему.