작은 파일에 대한 Lsyncd 업데이트 누락

작은 파일에 대한 Lsyncd 업데이트 누락

우리는 서버 1에서 서버 2로 데이터를 동기화 상태로 유지하기 위해 lsyncd를 실험하고 있습니다. 모두 잘 작동하는 것 같았지만 파일에 차이가 나타나기 시작했습니다.

우리는 디스크의 파일에 작업 출력을 쓰는 프로세스를 다루고 있습니다. 이러한 작업은 기존 출력 파일을 삭제한 다음 동일한 이름으로 새 출력 파일을 생성하여 출력을 작성합니다. 출력 파일의 크기는 몇 바이트에서 40G까지 다양합니다.

파일을 업데이트할 때마다 전체 파일을 반복해서 전송하는 대신, 출력 파일의 변경 사항이 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

관련 정보