btrfs 上的 Rsync 備份非常緩慢

btrfs 上的 Rsync 備份非常緩慢

我的環境是 Ubuntu 15.04,核心為 3.19.0-28-generic,Btrfs v3.17。

我有兩個相同的外部 USB 硬碟,用於備份腳本。其中一份的格式為btrfs,另一份的格式為ext4.來源檔案系統始終是ext4.該rsync指令如下圖所示:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"

我剛剛意識到執行備份btrfs需要一個時間極為長時間:略長於 1 小時,相較之下,執行相同的複製操作需要 4 分鐘ext4

為了排除磁碟故障,我dd使用 Ubuntu 附帶的「磁碟實用程式」進行了一些基準測試,但我在兩個磁碟上都獲得了相同的效能。緩慢的部分似乎是與先前的備份進行硬連結。即使在進行碎片整理和清理之後,以下命令在 上也需要大約 53 分鐘btrfs,但在 上只需要 1 分鐘ext4

cp -arl "$previousBackup" "$destDir"

透過在網路上進行研究,我發現了btrfs硬連結的效能受到影響的暗示,但我沒想到會這樣巨大的不同之處。我發現這個命令更快,但仍然需要 30 分鐘以上才能完成:

cp -ar --reflink "$previousBackup" "$destDir"

有誰有這種行為的經驗並且可以確認嗎?是否有任何簡單的方法來糾正它(例如不同的安裝選項),或者我應該嘗試刪除盡可能多的硬連結並只使用引用連結?

編輯

我剛剛發現即使刪除一個目錄btrfs需要一個多小時。相同的操作在「雙胞胎」ext4磁碟上是即時的。這裡的元數據顯然有問題。

答案1

你說你正在複製硬鏈接rsync命令,但是標誌在哪裡-H?我在你的命令中沒有看到它:

rsync --inplace --no-whole-file --link-dest="$previousBackup" "$sourceDir" "$destDir"

我理解硬鏈接如何工作的方式rsync是,如果沒有該-H標誌,則複製實際數據而不是硬鏈接,如rsync手冊頁:

-H, --硬鏈接

這告訴 rsync 在傳輸中查找硬連結文件,並將接收端的相應文件連結在一起。如果沒有此選項,傳輸中的硬連結檔案將被視為單獨的檔案。

我可以想像這樣一個過程,其中許多類似的文件被一遍又一遍地複製而不是硬鏈接,這會增加傳輸時間。

另外,也可以考慮使用-z( --compress) 標誌:

-z, --壓縮

使用此選項,rsync 在將檔案資料傳送到目標電腦時對其進行壓縮,從而減少傳輸的資料量——這在慢速連接中很有用。

是的,這是同一系統上的 USB 到 USB 傳輸,因此速度可能已經優化,但看到它-z也許會幫助您克服自然的 USB 資料傳輸瓶頸也沒什麼壞處。

一個很好、簡單的教程,解釋了這些標誌以及其他標誌可以在這裡找到

相關內容