如何提高千兆 LAN 上的 NFS 性能?

如何提高千兆 LAN 上的 NFS 性能?

我在千兆 LAN 上有一个 Solaris 10 服务器和一个 Mac OS X 客户端。Solaris 服务器导出一个 RAID-Z 支持的 NFS 共享,所有客户端都连接到它。但是,文件传输速度比我认为的要慢。我启用了巨型帧,将最大吞吐量从 18MB/s 提高到了 30MB/s,但这仍然比我认为的要慢。我认为当前的瓶颈是我的交换机,它似乎无法每秒交换我的机器可以发送的那么多数据包。此外,两台机器在传输时都使用了大约 30-40% 的 CPU。

除了我计划更换交换机之外,我还能做些什么来降低 CPU 使用率并提高吞吐量?

答案1

有几件事:

  • 要确定问题是否出在交换机上,请将交换机从方程式中移除并进行测试。将机器背对背连接并再次测试。GigE 卡将自动为您交叉连接,无需特殊电缆。

  • 之后,NFS 调优就有点像是一门黑魔法了。据我所知,它往往非常具体地针对 NFS 服务器,有时也针对 NFS 客户端。幸运的是,Google 似乎有很多关于这个主题的论文。多读一些吧。

答案2

通常ZFS 意向日志 (ZIL)是 ZFS 文件服务器的 NFS 瓶颈。ZFS 严格遵守 NFS 协议,并确保同步写入的数据确实到达磁盘,然后才会向写入器报告成功。ZFS 使用 ZIL 临时存储此数据,然后再将其以更大的块写入池中。如果对 ZIL 的写入速度很慢(高延迟),那么 NFS 性能可能也会很慢。此问题的一个很好的测试用例是将大型 tarball(许多文件)提取到 NFS 导出。

至少有两种解决方案可以提高 NFS 性能:

  • 用一个ZIL 的专用快速存储设备(想想 NVRAM 或 SSD)。您甚至可以用两个设备创建一个 ZIL 镜像。警告:据我所知,将 ZIL 设备添加到池后无法将其移除。请三思。如果您想尝试使用 SSD 来存储 ZIL,您可能需要阅读这篇有趣的博客文章:比较稳定 固态
  • 禁用 ZIL在您的 ZFS 文件服务器上。当然,这违反了同步写入的协议承诺,存在数据完整性的风险,但速度会快得多。阅读这部分ZFS Evil 调优指南在尝试这个替代方案之前,请确保您了解其后果。

答案3

一些提示:

  • 尝试通过 SMB/CIFS 安装服务器,看看能获得什么样的性能
  • 尝试使用 ttcp 或 iperf 进行测试,看看从客户端到服务器的网络带宽如何

根据我们的经验(OS X 客户端、Linux 服务器),OS X NFS 并不理想。使用 samba 可以获得更好的性能。YMMV!

相关内容