底线:两个传输都通过相同的网络子网,相同的线路,相同的接口,读取相同的数据,写入同一目录等.只有一个是通过NFSv3,另一个是通过rsync.
客户端是Ubuntu 10.04,服务器Ubuntu 9.10.
为什么rsync要快得多?如何让NFS匹配那个速度?
谢谢
编辑:请注意我使用rsync写入NFS共享或SSH到NFS服务器并在那里写入.两次我都做rsync -av,从清除目标目录开始.明天我会试着用普通的副本.
Edit2(附加信息):文件大小范围为1KB-15MB.文件已经压缩,我试图进一步压缩它们没有成功.我从那个目录制作了tar.gz文件.这是模式:
> rsync -av dir / nfs_mount / TEST / =最慢传输;
> rsync -av dir nfs_server-eth1:/ nfs_mount / TEST / =启用了巨型帧的最快rsync;没有巨型帧有点慢,但仍然比直接到NFS的速度快得多;
> rsync -av dir.tar.gz nfs_server-eth1:/ nfs_mount / TEST / =与其非tar.gz等价物大致相同;
使用cp和scp进行测试:
> cp -r dir / nfs_mount / TEST / =比rsync -av dir / nfs_mount / TEST /稍快,但仍然明显慢于rsync -av dir nfs_server-eth1:/ nfs_mount / TEST /.
> scp -r dir / nfs_mount / TEST / =总体上最快,稍微克服了rsync -av dir nfs_server-eth1:/ nfs_mount / TEST /;
> scp -r dir.tar.gz / nfs_mount / TEST / =与其非tar.gz等价物大致相同;
结论,基于此结果:
对于此测试,如果使用tar.gz大文件或许多小文件,则没有显着差异.巨型帧开启或关闭也几乎没有区别. cp和scp比它们各自的rsync -av等价物快.无论使用何种方法,直接写入导出的NFS共享要比通过SSH写入同一目录要慢得多(至少2倍).
在这种情况下,cp和rsync之间的差异无关紧要.我决定尝试cp和scp只是为了看看它们是否显示相同的模式,他们确实 – 2倍的差异.
由于我在两种情况下都使用rsync或cp,我无法理解是什么阻止NFS通过SSH达到相同命令的传输速度.
如何写入NFS共享比通过SSH写入同一位置慢2倍?
Edit3(NFS服务器/ etc / exports选项):rw,no_root_squash,no_subtree_check,sync.客户端的/ proc / mounts显示:nfs rw,mountproto = TCP.
谢谢你们!
解决方法
如果’async’修复了您的问题,请注意,如果NFS服务器中间发生某些事情,那么您很可能最终会在磁盘上出现不一致的数据.只要此NFS挂载不是此(或任何其他)数据的主存储,您可能会没问题.当然,如果你在rsync-over-ssh运行期间/之后拔出nfs服务器上的插件,你就会在同一条船上(例如rsync返回’完成’,nfs服务器崩溃,写缓存中的未提交数据现在丢失了在磁盘上留下不一致的数据).
尽管测试不是问题(rsyncing new data),但请注意,在计算校验和并生成需要的文件列表时,ssh上的rsync会在传输单个字节之前对远程服务器产生重大的cpu和IO需求.更新.