几天前,我注意到了一件相当奇怪的事情(至少对我而言)。我运行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从那做文件dir。这是模式:
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达到相同命令的传输速度。
与通过SSH写入同一位置相比,写入NFS共享的速度为何慢2倍?
EDIT3(NFS服务器的/ etc / exports中的选项)rw,no_root_squash,no_subtree_check,sync。客户端的/ proc / mounts显示: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。
谢谢你们!