
我有一個新安裝的 Ubuntu 伺服器,它應該是我們虛擬機器儲存的新備份伺服器。該伺服器有 4 個網路卡,其中 2 個 10Gbit(實際上是具有最新可用驅動程式的 intel x540-T2),用於連接到 SAN。我在本地安裝了 nfs-share,並比較了複製包含約 30 個檔案、大約 15 個虛擬機器映像和對應日誌檔案的目錄時的速度差異。影像大小在 8 GB 到 600 GB 之間。
使用:
cp -rf /mnt/nfs-share /backup-storage/
bmon 顯示約 600 MiB/s。
使用
rsync -av /mnt/nfs-share /backup-storage/
bmon 在最初幾秒鐘內顯示一些資料包,暫停約 30 秒,然後增加到約 60-75 MiB/s。 CPU佔用率約60%。
我應該/可以改變什麼來使用rsync
與相同的性能cp
?
答案1
cp
我認為這些差異在和之間是相當明確的rsync
。請參閱這篇文章作為參考,標題為:rsync 效能概覽。
The four commands tested were:
rsync $SRC $DEST
echo $SRC | cpio -p $DEST
cp $SRC $DEST
cat $SRC > $DEST/$SRC
The results for rsync, cpio, cp, and cat were:
user sys elapsed hog MiB/s test
5.24 77.92 101.86 81% 100.53 cpio
0.85 53.77 101.12 54% 101.27 cp
1.73 59.47 100.84 60% 101.55 cat
139.69 93.50 280.40 83% 36.52 rsync
我rsync
每天都使用。您可以採取一些措施來改善這種情況。
例如,您可以嘗試使用-W
開關:
-W, --whole-file copy files whole (w/o delta-xfer algorithm)
另外我建議確保您擁有 3.x 版本的rsync
.當我們升級到新版本時,有明顯的改進。
答案2
使rsync具有與cp相同性能的方法是將其拼寫為“cp”。
儘管淨效果可能相同,但這兩個命令之間的差異仍然很大。特別是,rsync 會進行大量讀取以查看是否應複製某個文件或文件的一部分。
您有什麼原因想要使用 rsync 嗎?因為 cp “盲目”複製,您將看到更高的原始效能。如果對於一組觸發條件,使用 rsync 的「增量傳輸」機制,您將看到傳輸速率下降,CPU 使用率按照您報告的方式大幅上升。
答案3
對於此用例,rsync
是一台不必要的複雜機器。如果您同意基於比較檔案修改時間和檔案大小的同步,則應僅在兩端收集檔案系統元資料並進行比較,並且應透過(本機)命令複製變更的(或新的)檔案cp
。
您可能對這個小型且簡單的同步器感興趣,它可以執行以下操作:Fitus/Zaloha.sh
它的使用方法如下:
$ Zaloha.sh --sourceDir="test_source" --backupDir="test_backup"
為了實現分析階段的最大速度,您可能想要跳過復原腳本的產生:使用選項--noRestore
。此外,如果您安裝了快速mawk
安裝程序,請選擇--mawk
使用它。
Zaloha.sh
透過指令收集檔案系統元資料find
。剩下的一個問題是關於find
NFS 共享的效能...