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

Amo*_*mok 2 solaris zfs nfs mac-osx performance-tuning

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

除了更换交换机(我打算这样做)之外,我还能做些什么来降低 CPU 使用率并提高吞吐量?

knw*_*iss 5

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

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

  • 为 ZIL使用专用的、快速的存储设备(想想 NVRAM 或 SSD)。您甚至可以用两个设备创建一个 ZIL 镜像。警告:AFAIR 将 ZIL 设备添加到池后无法删除它。三思而后行。如果您想为您的 ZIL 尝试 SSD,您可能需要阅读这篇有趣的博客文章:有点稳定的固态
  • 在 ZFS 文件服务器上禁用 ZIL。好吧,这当然会以数据完整性的风险打破同步写入的协议承诺,但它会更快。在尝试此替代方案之前,请阅读ZFS Evil Tuning Guide 的这一部分,并确保您了解后果。