我正在实施 WD My Book Live Duo 的备份。此设备配置了软件 RAID0。备份源目录是设备的根目录,目标是同一文件系统内的目录(注意避免递归复制备份文件本身)。备份文件有一层加密(源文件是明文),这需要比 NAS 能够提供的更多的计算能力。因此,耗费 CPU 的操作是在同一网络中的服务器中执行的。
NAS 通过 NFS 导出两个目录。一个是只读的,包含整个文件系统(它是备份源),另一个是读写的(它是备份根)。配置详细信息在文章末尾说明。
备份服务器encfs
用作加密层并rsnapshot
自行执行备份。
问题是:备份的第一步是将cp -al
最后的备份目录复制到新目录中,大约需要两个小时才能完成。
我目前已经在NFS服务器端进行了以下测试:
cp -al
如果直接在 NAS 上执行相同的操作,则需要五分钟dd /dev/zero ~/test.tmp
显示吞吐量非常接近 100 MiB/stop
显示 CPU 消耗较低。然而,平均负载较高(~4)iperf
传输速率为 1.000 Mpbs,因此网络链路以预期的最大容量运行vmstat 1
显示非常高哇(等待 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
我已经为此困扰好几天了。任何贡献都将不胜感激。
提前致谢,
吉列尔莫
答案1
您是否尝试过 rsync 来查看性能是否更好?
rsync -Paz --exclude-from 'rsync-exclude.txt' fromssh@server:path tossh@server:path