我能做些什么来优化1GBit家庭networking上的NFS拷贝速度?

我有一个1 GBit / sec交换机作为中心点的家庭networking,所有计算机都有1 GBit / sec的NIC。 但是,我通过NFS共享最多可以获得200 MBit / sec的拷贝速度。 看来我应该可以得到更多。 我现实的期望是什么,如何调整我的系统和NFS服务器以获得更高的速度?

所有涉及的系统都是Linux,顺便说一下(CentOS和Fedora的组合)。

你被头顶打了 你想看看巨型帧,并扩大你的nfs读/写数据大小。 networking上的NFS性能调整有很多指导,就像这个看起来不太过时的指南。

也意识到你永远不会比磁盘速度做得更好,所以确保这不是一个瓶颈。

你应该挑衅地看着巨型框架。 即使是便宜的5端口GbE集线器,现在也可以这样做,但是必须在连接的两端启用巨型帧。 要启用巨型帧,请执行此操作

ifconfig eth0 mtu 9000 

以下是从我们的文件pipe理器自动挂载主目录时使用的挂载选项

 rw,intr,soft,nfsvers=3.tcp,nolock,noatime,rsize=32768,wsize=32768 

请更新问题,并让我们知道这是否改善的情况

巨型框架当然可以提供帮助,但是不要期望它能够神奇地给你100%的吞吐量增加。 在另一个问题中查看我的post,讨论如何在不将磁盘I / O放入图片的情况下testingnetworking吞吐量的方法。 这将给你一个基准,看看是否有其他因素与networking无关。

如果您打算启用巨帧,请按照此处的build议,了解一些限制和要求。

  • path上的所有设备都必须支持并启用巨型帧。 这包括:
    • 发送和接收networking
    • 设备连接的两个交换机端口
    • 从发送方到接收方的path上的所有L2交换机端口(交换机到交换机的连接)
    • 所有path上的L3接口(如果适用)
  • 请确保同一vlan中的所有设备都支持并configuration了巨型帧。

第二个项目符号的原因:考虑在相同vlan中设置两台PC,一台configuration为9000字节帧,另一台configuration为1500字节帧。 configuration为标准帧的PC1将能够成功发送数据包给PC2。 但是,PC2发送的回复都是9000字节帧。 由于PC1configuration为标准帧,所以无法处理巨型帧,并且会丢弃。 要解决这个问题,您需要在两台PC之间插入一个L3设备(路由器),以便能够进行通信。

瓶颈可以是你的networking或你的硬盘。 首先检查哪些是,然后优化。

你有能力打开网卡中断合并,接收端缩放或任何forms的TCP卸载(校验和或全包)? 如果你可以启用它们,它们将会产生巨大的影响,这取决于你的网卡和IP协议栈。

有关NFS的具体信息,请注意,较新的NFS实现不仅支持UDP,还支持TCP。 默认仍然是通常的UDP。 奇怪的是,在非常快的networking上,由于窗口化,TCP可以更快。 尝试两种方式并进行比较。

对于其他技巧,只需search网站。 这个话题的一般forms已经被击败了七十亿次。 🙂

不要忘记确保启用巨型帧,并确保您使用的任何networking交换机也支持巨型帧,然后启用。 您可能想要在NFS共享上运行RAID分条以提高速度。