Performance

通過 NFS 導出執行“cp -al”性能不佳

  • July 27, 2014

我正在實施 WD My Book Live Duo 的備份。此設備配置有軟體 RAID0。備份源目錄是設備的根目錄,目標是同一文件系統內的目錄(注意避免遞歸複製備份文件本身)。備份文件有一層加密(源文件是明文),這需要比 NAS 能夠提供的更多計算能力。因此,消耗 CPU 的操作在同一網路中的伺服器中執行。

NAS 正在通過 NFS 導出兩個目錄。一個是只讀的,包含整個文件系統(它是備份源),另一個是讀寫的(它是備份根)。配置詳細資訊在文章末尾說明。

備份伺服器encfs用作加密層並rsnapshot自行執行備份。

**問題是:**備份的第一步,包括cp -al將最後一個備份目錄放入一個新目錄,大約需要兩個小時才能完成。

到目前為止,我已經在 NFS 伺服器端執行了以下測試:

  • cp -al如果直接在 NAS 中執行,同樣的操作需要 5 分鐘
  • dd /dev/zero ~/test.tmp顯示非常接近 100 MiB/s 的吞吐量
  • top顯示 CPU 消耗低。但是,平均負載很高(~4)
  • iperf傳輸速率為 1.000 Mpbs,因此網路連結正在以預期的全容量執行
  • vmstat 1顯示非常高的wa(等待 IO)值(~80-90%)
  • 將 MTU 設置為 9000(用 測試ping -M do mybackup)似乎沒有任何效果
  • 導出async似乎沒有任何效果

在 NFS 客戶端進行了以下測試:

  • dd /dev/zero /e/test.tmp(加密)顯示與(未加密)相同的吞吐量dd /dev/zero /b。所以加密層似乎不是問題。傳輸速率約為 30 MiB/s,這是相當低的、艱難的。使用 SMB 執行此測試會產生類似的結果
  • top顯示 CPU 消耗低。平均負載低於 2(伺服器有 2 個核心)
  • vmstat 1表明系統幾乎是空閒的
  • 設置tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768掛載選項似乎沒有任何效果

配置文件

NFS 伺服器

# /etc/exports

# 'mybackup' is the name of the backup server
/               mybackup(ro,sync,no_subtree_check,no_root_squash,crossmnt)

# This export has to be explicitly declared to enable clients to access /DataVolume/b
/DataVolume     mybackup(ro,async,no_subtree_check,no_root_squash)

# This is the backup root.
/DataVolume/b   mybackup(rw,async,no_subtree_check,no_root_squash)

NFS 客戶端

# /etc/fstab

# 'ewnas' is the name of the NAS
ewnas:/                 /r      nfs     auto,noatime,tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768    0       0
ewnas:/DataVolume/b     /b      nfs     auto,noatime,tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768    0       0

我已經堅持了好幾天了。任何貢獻將不勝感激。

提前致謝,

吉列爾莫

您是否嘗試過 rsync 以查看性能是否更好?

rsync -Paz --exclude-from 'rsync-exclude.txt' fromssh@server:path tossh@server:path

參考討論

引用自:https://serverfault.com/questions/615783