Lsyncd falta actualizaciones para archivos pequeños

Lsyncd falta actualizaciones para archivos pequeños

Estamos experimentando con lsyncd para mantener sincronizados los datos del servidor 1 al servidor 2. Todo parecía funcionar bien, pero descubrimos que empiezan a aparecer diferencias en los archivos.

Estamos tratando con procesos que escriben la salida de trabajos en archivos en el disco. Estos trabajos eliminan cualquier archivo de salida existente y luego crean uno nuevo con el mismo nombre para escribir el resultado. El tamaño de los archivos de salida puede variar desde unos pocos bytes hasta 40G.

Se nos ocurrió la siguiente configuración para que lsyncd recoja los cambios en los archivos de salida y los transfiera al servidor remoto y los actualice en el lugar, en lugar de transferir todo el archivo una y otra vez después de cada actualización de los archivos.

Sin embargo, esta actualización parece molestarnos con archivos muy pequeños, donde, por ejemplo, solo se actualizaría una fecha en la primera línea del archivo. El script elimina el archivo, coloca la salida del trabajo en un nuevo archivo de salida con el mismo nombre y va tan rápido que lsyncd no parece darse cuenta.

¿Alguien aquí puede ayudarme a resolver esto?

Esta es la configuración en ejecución actual. Actualmente estamos ejecutando 4 directorios de entrada para acelerar un poco las cosas debido a la cantidad de datos con los que estamos tratando.

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

información relacionada