linux – 为什么rsync比NFS快?
几天前我注意到一些奇怪的东西(至少对我而言).我运行rsync复制相同的数据,然后将其删除到NFS挂载,名为/ nfs_mount / TEST.此/ nfs_mount / TEST从nfs_server-eth1托管/导出.两个网络接口上的MTU均为9000,其间的交换机也支持巨型帧.如果我做rsync -av dir / nfs_mount / TEST /我获得网络传输速度X MBps.如果我做rsync -av dir nfs_server-eth1:/ nfs_mount / TEST /我的网络传输速度至少为2X MBps.我的NFS挂载选项是nfs rw,nodev,relatime,vers = 3,rsize = 1048576,wsize = 1048576,namlen = 255,hard,proto = tcp,timeo = 600,retrans = 2,sec = sys,mountvers = 3,mountproto = TCP.
底线:两个传输都通过相同的网络子网,相同的线路,相同的接口,读取相同的数据,写入同一目录等.只有一个是通过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 / =最慢传输; 使用cp和scp进行测试: > cp -r dir / nfs_mount / TEST / =比rsync -av dir / nfs_mount / TEST /稍快,但仍然明显慢于rsync -av dir nfs_server-eth1:/ nfs_mount / TEST /. 结论,基于此结果: 在这种情况下,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. 谢谢你们! 解决方法
也许它的传输速度并不慢,但写入延迟会增加.尝试挂载NFS共享异步而不是同步,看看是否关闭了速度差距.通过ssh rsync时,远程rsync进程异步(快速)写入.但是当写入同步挂载的nfs共享时,不会立即确认写入:NFS服务器等待它们到达磁盘(或更可能是控制器缓存)之后再向NFS客户端发送写入成功的确认.
如果’async’修复了您的问题,请注意,如果NFS服务器中间发生某些事情,那么您很可能最终会在磁盘上出现不一致的数据.只要此NFS挂载不是此(或任何其他)数据的主存储,您可能会没问题.当然,如果你在rsync-over-ssh运行期间/之后拔出nfs服务器上的插件,你就会在同一条船上(例如rsync返回’完成’,nfs服务器崩溃,写缓存中的未提交数据现在丢失了在磁盘上留下不一致的数据). 尽管测试不是问题(rsyncing new data),但请注意,在计算校验和并生成需要的文件列表时,ssh上的rsync会在传输单个字节之前对远程服务器产生重大的CPU和IO需求.更新. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |