Lsyncd 缺少小檔案更新

Lsyncd 缺少小檔案更新

我們正在嘗試使用 lsyncd 來保持伺服器 1 到伺服器 2 的資料同步。一切似乎都運作正常,但我們發現文件開始出現差異。

我們正在處理將作業輸出寫入磁碟上的檔案的進程。這些作業刪除任何現有的輸出文件,然後建立一個同名的新文件來寫入輸出。輸出檔案的大小範圍可以從幾個位元組到 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

相關內容