
我們有一個外部 USB 2 驅動器,用作配置的備份驅動器。我們用快照用於備份。它使用一些標準命令來管理快照:
rm -rf
:刪除過期的快照mv
:將較舊的快照移到一個插槽下cp -al
:將最後一個快照複製到新插槽rsync -a --delete --numeric-ids --relative
:同步新快照
從下面的日誌可以看出,大部分時間都花在了rm -rf
和cp -al
步驟上:
[25/Dec/2010:14:00:02] rsnapshot hourly: started
[25/Dec/2010:14:00:02] echo 21012 > /var/run/rsnapshot.pid
[25/Dec/2010:14:00:02] rm -rf /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.4/ /mnt/extdrive/snapshots/hourly.5/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.3/ /mnt/extdrive/snapshots/hourly.4/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.2/ /mnt/extdrive/snapshots/hourly.3/
[25/Dec/2010:14:15:48] mv /mnt/extdrive/snapshots/hourly.1/ /mnt/extdrive/snapshots/hourly.2/
[25/Dec/2010:14:15:48] cp -al /mnt/extdrive/snapshots/hourly.0 /mnt/extdrive/snapshots/hourly.1
[25/Dec/2010:14:23:32] rsync -a --delete --numeric-ids --relative /etc /mnt/extdrive/snapshots/hourly.0/sm4/
[25/Dec/2010:14:23:52] touch /mnt/extdrive/snapshots/hourly.0/
[25/Dec/2010:14:23:52] rm -f /var/run/rsnapshot.pid
[25/Dec/2010:14:23:52] rsnapshot hourly: completed successfully
我的問題:
我目前使用 ext4 作為檔案系統。也許這不是紅帽中可用的最佳選擇。有人有任何可以加快這個過程的建議嗎?
該分割區的掛載選項是
sync,dirsync 1 2
。有沒有辦法優化它,因為它僅用於 rsnapshot?當然,推理將不勝感激。
答案1
ext4 沒問題。
「sync,dirsync」選項可讓資料和元資料更新同步,這對大多數工作負載的效能產生重大負面影響。刪除這些選項很可能會提高效能,但您必須記住在拉扯電纜之前卸載設備,否則您可能會丟失資料(大概這就是為什麼首先添加這些選項的原因,它們不是預設選項,或者也許這是您的發行版為USB 設備所做的某種特殊魔法)。
noatime 停用 atime 更新,這會減少檔案系統的寫入量。或多或少所有應用程式(包括 rsnapshot)都不需要 atime,因此這應該是完全安全的。
data=writeback 減少了日誌記錄的開銷,但代價是稍微增加了斷電時遺失資料的可能性。根據發行版的不同,這可能已經是預設值。
使用 ext4 也可以完全停用日誌(從核心 2.6.29 開始),儘管我不建議這樣做。這仍然具有 ext4 的所有其他改進,因此這應該比使用 ext2、fwiw 更快。
Barrier=0 禁用屏障,這會提高寫入效能,但代價是增加崩潰時資料遺失的可能性。
答案2
您可以設定 rsnapshot 以保留更多快照(例如 9999 個),並使用 crontab 自行從磁碟中刪除它們。這將使快照的速度更加可預測。
答案3
另請注意,使用--link-dest
還會改變如何完成的計劃cp
,這可能會顯著影響效能(它基本上只是rm
使用hourly.$old
,然後同時從來源rsync
複製和同步)。hourly.1
hourly.0
還有更多討論替代技術在這裡- 基本上將最後一個每小時快照旋轉到新的快照中,mv hourly.$old hourly.0
而不是rm
-ing 它,並執行cp -afl
從hourly.1
到hourly.0
最新的操作,但我還沒有嘗試過 - 你必須手動進行旋轉,而不是依賴rsnapshot
去做吧