如何实现与同一服务器的多个 NFS/TCP 连接?

如何实现与同一服务器的多个 NFS/TCP 连接?

我正在尝试通过 10Gbps 链路最大化 Linux 客户端和单个 NFS 服务器之间的 NFS/TCP 带宽。尽管每个 NFS 挂载都有自己的设备(主要/次要),但一切都归结为单个 TCP 连接,这是一个瓶颈。

使用 iperf 和多个 TCP 连接,我可以达到~8Gbps,但 NFS 卡在单个 TCP 流上并限制为~2Gbps(尚未进行 TCP 调整)。

在 Solaris 上,系统设置rpcmod:clnt_max_conns允许设置系统能够与单个 NFS 服务器建立多少个并发 TCP 连接。

是否有 Linux 等效物或方法可以做到这一点?

作为一种解决方法,我知道我可以在 NFS 服务器上设置许多 IP,然后在它们上对挂载点进行负载平衡,但这不是最佳的。

答案1

从...开始Linux 内核 5.3新的挂载选项“nconnect=X”可用,其中 X 指定要使用的服务器的 TCP 连接数。

答案2

您可以切换回 UDP 并使用巨型数据包(例如 4k 数据报)。让整个网络支持巨型帧可能会有很大帮助,这样您就不必在每一端重新组装 IP 数据包。

答案3

如果您使用的是 NFS v4.1 或更高版本,您可能能够使用 pNFS(并行 NFS)。根据 Red Hat 的以下发布信息,它在 RHEL 6.4 中可用,但我没有看到任何更新表明它在其他 Linux 发行版中可用。

https://www.redhat.com/about/news/press-archive/2013/2/red-hat-announces-general-availability-of-next-minor-release-of-red-hat-enterprise-linux-6

pNFS 在 2010 年的 RFC5661 中定义。您可能需要调查您的存储设备是否完全支持 pNFS。

相关内容