在NFS导出上执行“cp -al”的性能较差

我正在实施WD My Book Live Duo的备份过程。 该设备configuration有软件RAID0。 备份源目录是设备的根目录,目标是同一文件系统内的一个目录(适当注意避免备份文件本身的recursion复制)。 备份文件有一层encryption(源文件是明文),需要比NAS能够提供更多的计算能力。 因此,在同一networking中的服务器上执行耗费CPU的操作。

NAS正在通过NFS导出两个目录。 一个是只读的,包含整个文件系统(它是备份源),另一个是读写(它是备份根目录)。 configuration细节在post结尾处陈述。

备份服务器使用encfs作为encryption层,使用encfs rsnapshot执行备份。

问题是:备份的第一步是将上一个备份目录的cp -al到一个新的目录中,需要大约两个小时才能完成。

到目前为止,我已经在NFS服务器端执行了以下testing:

  • 如果直接在NAS中执行,则相同的cp -al操作需要五分钟
  • dd /dev/zero ~/test.tmp显示的吞吐量非常接近100 MiB / s
  • top显示CPU消耗低。 然而, 平均负荷很高(〜4)
  • iperf传输速率为1000 Mpbs,因此networking链路正在以预期的满容量运行
  • vmstat 1显示非常高的wa (等待IO)值(〜80-90%)
  • 设置MTU为9000(用ping -M do mybackuptestingping -M do mybackup )似乎没有任何影响
  • async导出似乎没有任何效果

以下testing已经在NFS客户端进行了:

  • dd /dev/zero /e/test.tmp (已encryption)显示与dd /dev/zero /b (未encryption)相同的吞吐量。 所以encryption层似乎不成问题。 传输速率是〜30 MiB / s,这是相当低的,艰难的。 使用SMB来执行这个testing会得到类似的结果
  • top显示CPU消耗低。 负载平均值低于2(服务器有2个核心)
  • vmstat 1显示系统几乎空闲
  • 设置tcp,hard,intr,nfsvers=3,rsize=32768,wsize=32768挂载选项似乎没有任何影响

configuration文件

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

参考讨论