处理networking拥塞

我正在一个专用的GBE LAN上的linux服务器上添加新的集中式存储。 过去大约有十几台客户端机器通过TCP完成NFS v3挂载。 有时局域网拥塞和丢弃的数据包导致在NFS上超时。 还有什么我应该看? 例如,我会比较喜欢NFS v4,SMB或iSCSI吗?

我不看AFS或其衍生工具,因为我不想在本地caching文件。 对于我的应用程序,我需要在同步模式下运行服务器,以确保写入的所有内容都保存到磁盘。 局域网在防火墙后面,所有的客户端都在我的控制之下,所以我不担心安全问题。 唯一不在桌面上的是光纤通道,因为我买不起SAN。 我目前有timeo = 30和重新=默认(3)。 系统在大多数情况下工作正常,只是当局域网忙碌时,由于错误导致吞吐量下降。

如果是端到端的Windows,SMB3 真的很擅长这一点。 微软做得很好。 非常好,他们甚至允许HyperV机器从Server 2012开始在装载驱动器上运行。

但是,我不认为你是Windows端到端。

iSCSI在这里是一个不好的select,因为操作系统中的存储堆栈不太适合分组到达的随机延迟。 这是他们说iSCSInetworking专用networking的最大原因之一。 这听起来像是你有一个,但是如果你有很多的拥塞,我甚至会专心致志地避开iSCSI。

NFS4比NFS3好得多,因为他们实际上已经configuration了协议来调整TCP设置。 尝试一下,你可能会发现这些数据包丢失/延迟问题大大减less。

在这一点上SMB不是我推荐用于非Windows系统的东西,我会使用NFSv4。 支持在那里,但个人而言,我不相信协议栈足够强大的重击。 一个区别是如果你的Filer是一个Windows服务器; 在这种情况下,如果我推荐通过SMB的NFSv4,那就是一个折腾了。