如何提高千兆局域网的NFS性能?

我有一台Solaris 10服务器,在千兆局域网上有一台Mac OS X客户端。 Solaris服务器导出一个RAID-Z支持的NFS共享,所有客户端连接到它。 但是,传输文件比我认为的要慢。 我启用了巨型帧,并将最大吞吐量从18MB / s提高到了30MB / s,但仍然比我认为的要慢。 我认为目前的瓶颈是我的交换机,它似乎不能像我的机器能够每秒钟那样交换数据包。 另外,两台机器使用大约30-40%的CPU进行传输。

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

几件事情:

  • 要确定开关是否是问题,请将开关置于等式之外并进行testing。 将机器背靠背重新testing。 GigE卡将为您自动交叉连接,不需要特殊的电缆。

  • 之后,NFS调整是一种黑色艺术。 从我所看到的情况来看,NFS服务器和NFS客户端往往是非常特定的。 幸运的是,Google似乎有很多这方面的论文。 读一堆。

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

至less有两种解决scheme可以提高NFS的性能:

  • 为ZIL使用专用的快速存储设备 (比如NVRAM或SSD)。 你甚至可以在两个设备中创build一个ZIL镜像。 警告:AFAIR将ZIL设备添加到池后,无法删除ZIL设备。 仔细想想。 如果你想尝试固态硬盘为你ZIL你可能想读这个有趣的博客文章: 有点稳定的固态
  • 禁用 ZFS文件服务器上的ZIL 。 那么,这当然会破坏同步写入的协议承诺,但是这样做会更快。 在尝试这个select之前,阅读ZFS Evil Tuning Guide的 这一部分 ,并确保你了解后果。

几个提示:

  • 尝试通过SMB / CIFS挂载服务器并查看您获得的性能
  • 尝试使用ttcp或iperf进行testing,以查看从客户端到服务器的networking带宽

OS X NFS在我们的经验(OS X客户端,Linux服务器)方面并不出色。 我们通过使用桑巴来获得更好的性能。 因人而异!