
Мы экспериментируем с lsyncd, чтобы синхронизировать данные с сервера 1 на сервер 2. Все работало нормально, но мы обнаружили, что в файлах начинают появляться различия.
Мы имеем дело с процессами, записывающими вывод заданий в файлы на диске. Эти задания удаляют все существующие файлы вывода, а затем создают новый с тем же именем для записи вывода. Размер файлов вывода может варьироваться от нескольких байт до 40 ГБ.
Мы придумали следующую конфигурацию, чтобы изменения в выходных файлах подхватывались lsyncd и передавались на удаленный сервер и обновлялись на месте, вместо того чтобы снова и снова передавать весь файл после каждого обновления файлов.
Однако это обновление на месте, похоже, кусает нас за задницу с очень маленькими файлами, где, например, только дата будет обновлена в первой строке файла. Скрипт удаляет файл, помещает вывод задания в новый выходной файл с тем же именем, и это происходит так быстро, что lsyncd, похоже, не замечает этого.
Кто-нибудь здесь может мне помочь разобраться?
Это текущая текущая конфигурация. В настоящее время мы работаем с 4 входными каталогами, чтобы немного ускорить процесс из-за объема данных, с которыми мы имеем дело.
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 1,
nodaemon = false,
inotifyMode = "CloseWrite or Modify",
insist = true
}
dirs = {
'/data/dir1',
'/data/dir2',
'/data/dir3',
'/data/dir4',
}
for _, directory in ipairs( dirs )
do
sync {
default.rsyncssh,
source = directory,
targetdir = directory,
host = "remote_host",
delay = 0,
rsync = {
compress = false,
whole_file = false,
update = true,
inplace = true,
checksum = true,
owner = true,
archive = true,
perms = true,
group = true,
xattrs = true,
_extra = { "--append-verify" },
rsh = "/usr/bin/ssh -q -l lsyncd_ssh_user -i /home/lsyncd_ssh_user/.ssh/id_rsa -o StrictHostKeyChecking=no -o User=lsyncd_ssh_user"
},
}
end