
우리는 서버 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