自从我使用 NFS(10 多年)以来,我就一直遇到这个问题,但随着最近 SSD 的出现,这个问题变得更加明显。
我有一个 LAN 设置,其中有两台直接连接的服务器,每台服务器都有两张 1GBit/s 绑定以太网卡。NFS 服务器和客户端都是 Debian 8。我从位于 SSD 上的服务器导出一个目录。
我对吞吐量没有问题,我以超过 150MB/s 的速度读取文件,atop
显示峰值传输为 1.6Gbps/s,这没问题。同步写入速度约为 125MB/s,异步写入速度约为 160MB/s。
但是,随机访问+写入时间似乎是一个问题。我实际的基准测试是构建一个 Java 应用程序。构建过程是并行的,最多 6 个线程,CPU 性能不是问题。在本地 SSD 上,构建过程大约需要 90 秒。
当我在 NFS 挂载上构建相同的应用程序时,性能非常糟糕。在 NFSv3(异步)上构建大约需要 4 分钟,在 NFSv4(异步)上构建大约需要 7 分钟。我没有尝试使用同步进行测试,它甚至更慢。
运行 NFS 测试套件显示,使用 NFSv4,写入委派似乎失败。我还没有找到任何关于如何启用它的提示。
我并不期望任何网络文件系统的性能能够和本地文件系统一样好,但是 3 或 4 倍的误差确实会让它变得无法使用。
构建过程读取约 500MB 并写入约 1GB。