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

Есть ли что-нибудь еще, кроме fastcheck, для ускорения Unison?

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

Синхронизация выполняется в звездообразной топологии с унисонным сервером RAID-6 в центре. Некоторые рабочие станции используют Windows (с NTFS), некоторые Linux с Ext-4 или BTRFS (!).

На момент написания есть один пользователь, домашний каталог которого имеет размер 45 ГБ и 100 КБ файлов, а полная синхронизация занимает около 30 минут. Обратите внимание, что простой обход каталога с find >null занимает менее 2 минут.

Каковы стратегии дальнейшего ускорения процесса? (за исключением уменьшения количества файлов для синхронизации) Я считаю, что теоретически Unison можно ускорить, но fastcheck варианта недостаточно.

Хорошо, я нашел виновника: унисон игнорирует fastcheck вариант для xls и mpp файлы и всегда выполняет для них полное сравнение. Это происходит потому, что Excel имеет обыкновение изменять файлы xls без изменения даты последнего изменения.

К сожалению для нас, xls составляет около 20% от общего объема документов.

Редактирование /usr/bin/unison в шестнадцатеричном редакторе и заменив xls для чего-то, что вряд ли можно будет найти (например, xxx) сделали свое дело.

В файловых системах Unix (btrfs, ext4) эта процедура должна быть безопасной, так как любое изменение файла должно изменить номер inode, и предполагается, что unison использует эту информацию, если она доступна. Что касается клиентов, основанных на ntfs, я думаю, мы должны страдать от медленного времени ... или, может быть, есть какая-то альтернатива (отказ от Excel или изменение файловой системы).

После этого взлома унисон увеличился более чем в десять раз!