我在使用 NFS v3 挂载主目录的两个系统(Solaris 客户端和 Linux 服务器)上遇到问题。(NFS v4 根本不起作用,因为另一个系统管理员告诉我这是一个“已知问题”。)NFS v2 似乎可以正常工作。
我的问题是:使用 NFS v2 和 NFS v3 之间的权衡是什么?我需要决定是继续尝试调试这个问题,还是只决定为这个客户端使用 NFS v2。
我知道 v2 有文件大小限制,尽管我看到了相互矛盾的信息——它是 2 GB 还是 4GB 的限制?v2 也有性能损失;是否有可能以一般方式量化 v2 的速度限制,或者这是否过于依赖所涉及的特定系统和网络?(就其价值而言,我在系统之间安装了千兆位以太网。)两者之间还有哪些权衡取舍?有什么我应该注意的安全问题吗?
根据维基百科, NFSv2 使用 32 位文件大小值,这将其限制为 4GiB 文件,但显然一个常见的错误是使值签名,这将其限制为 2GiB。NFSv3 还具有异步操作和许多优化的操作,因此需要完成的操作更少。这确实对性能有很大影响,即使在 LAN 上也是如此,因为网络延迟与本地机器延迟完全不同。只有在不支持 NFSv3 的情况下才应使用 NFSv2。尝试找出 NFSv4 不起作用的原因。也许这是你可以解决的问题。
除了现有的答案。
NFSv3 具有 READDIRPLUS 操作,允许立即获取包含文件属性的目录列表 - 对目录列表的巨大性能改进。此外,V3 具有较弱的缓存一致性,这可以让客户端缓存保持快乐,并允许客户端不询问太多信息。另外,TCP 作为一种传输方式。使用 UDP,您可能会丢失大读写 IO 缓冲区大小的数据。ACCESS 调用,允许客户端在其他用户想要访问同一文件时重新使用缓存的数据。