У меня есть две виртуальные машины, хост ОС ESXi 3.5 и гостевая ОС Centos 4.6. Существует два удаленных сервера ESXi, каждый из которых содержит виртуальную машину Centos 4.6. Я хочу, чтобы любые изменения, которые я вносил в любой файл / папку на одной виртуальной машине, автоматически синхронизировались на другой удаленной виртуальной машине. Процесс синхронизации должен быть автоматическим. Он должен только синхронизировать различия, а не моделировать всю копию с помощью операции перезаписи. Синхронизация должна быть достаточно умной, чтобы искать, что изменилось, а что нет, и должна только обновлять измененные файлы / папки. Кроме того, должен быть некоторый обзор и выбор для синхронизации, например, если он показывает, что 4 файла изменились, должна быть возможность синхронизировать только два файла и оставить два других на данный момент. Таким образом, необходим некоторый интеллектуальный механизм синхронизации для Linux.
3 ответа
Я отправил подобный вопрос здесь. Все еще нет ответов.
Я много пробовал, но единственное, что действительно работает, это унисон. Его можно использовать в режиме без заголовка с cron (автоматический) или в режиме GUI, последний показывает различия между двумя каталогами, которые вы хотите сравнить.
Он имеет тенденцию быть «интенсивным на диске» на локальной машине, но вычисляет дельта-передачи и не тратит пропускную способность (он использует rsync для передач).
Вы также можете попробовать бесплатную синхронизацию файлов: это похоже, но менее популярно.
Одним из вариантов является использование rsync или графической версии (gnome) этого grsync.
Я использую эту программу для резервного копирования своих файлов, но она может быть использована для синхронизации.
Для автоматизации процесса вы можете использовать задание cron с желаемой частотой.
Синхронизация в нескольких направлениях очень трудно сделать хорошо. Что происходит, когда вы получаете неизбежный конфликт? т.е. файл A был отредактирован на узле 1 и узле 2 одновременно; или достаточно близко к одновременному, чтобы ваша система видела изменения в обоих. Какой из них предпочтительнее? Вы останавливаете синхронизацию и ждете ручного вмешательства?
Вы обнаружите, что когда нескольким системам требуется доступ к одним и тем же данным и их синхронизация, а также доступ для чтения и записи, у вас будет один из 3 методов:
- Клиент / сервер: что-то вроде NFS / SMB с сервером, на котором размещены файлы, к которым каждый может получить доступ сразу; сервер обрабатывает блокировку файлов и сообщает каждому узлу, когда произошло обновление файловой системы.
- Общее хранилище: т.е. SAN или какая-либо форма прямого доступа; возможно, на сервере работает цель iSCSI. С диспетчером распределенной блокировки и кластерной файловой системой
- Синхронизированное / кластерное хранилище: такие вещи, как Luster, Ceph и DRBD (с кластерной файловой системой сверху).
Из-за проблем, о которых я упоминал ранее, практически никто не использует одноранговый инструмент синхронизации. Если вы можете переработать его так, чтобы у вас всегда были обновления в одном направлении, то все становится чрезвычайно легко.