NFSv4 错误,但 NFSv3 中没有错误

NFSv4 错误,但 NFSv3 中没有错误

我正在为带有 RHEL6.5 和 RHEL7 主机的 RHEL6.5 客户端(所有虚拟机)开发 NFS 解决方案。目前,RHEL7主机与RHEL6.5客户端工作正常。问题出在RHEL6.5主机上。

这些问题可能是由于我无法控制的服务器的某些方面造成的,因为服务器最近出现了去年没有的问题。如果您认为这就是问题所在,请建议我向我的上级证明这一点的方法,并开始购买新机器的过程。

该解决方案最初是为了使用 NFSv4 而设计的,该解决方案进展顺利。然而,RHEL6.5主机并不像RHEL7主机那么热衷。挂载成功,但文件访问不起作用,例如cpless.在终端中,它们挂起。tail- 观看客户的/var/log/messages节目state manager: lease expired failed on NFSv4 server nfs_master with error 10018。根据标准,该错误代码适用于NFS4ERR_RESOURCE,已记录这里。我尝试解决资源问题是nfsd通过命令行增加进程数量,并在/etc/sysconfig/nfs.这没有帮助。如果导出的目录安装在 NFS 服务器本身上,也会出现此问题。

主机或客户端的日志中未显示的是另一个错误10022,或者至少我假设这是一个 NFSv4 错误代码。仅当tcpdumpNFS 通信所经过的接口时才可见:IP test-host.nfs > test_client-1.3297002672: reply ok 52 getattr ERROR: unk 10022如果此错误代码确实是 NFSv4 错误代码,则将其NFS4ERR_STALE_CLIENTID记录在案这里

mount命令更改为 set时nfsvers=3,类似的操作cp会成功,并且不会在客户端或主机上生成任何错误。第一次尝试会花一点时间,也许 5 秒,然后以后的动作会快得多。

一次最多有四个客户端安装导出并从中读取,并且可能有相同的文件。

所以,我的问题是:

  1. 描述中引用了哪些服务器端资源NFS4ERR_RESOURCE
  2. 我如何解决NFS4ERR_RESOURCENFS4ERR_STALE_CLIENTID错误?
  3. 为什么 NFSv3 可以按预期运行,但 NFSv4 却不能?

nfs-utils版本和发行版(适用于客户端和 RHEL6.5 主机):1.2.3.39.el6

mount命令:

  • mount -n -t nfs -o ro,noexec,timeo=10,retrans=3,retry=0,soft,rsize=32768,intr,noatime
  • mount -n -t nfs -o nfsvers=3,ro,noexec,timeo=10,retrans=3,retry=0,soft,rsize=32768,intr,noatime

编辑:我们对此问题的解决方案是退回到 NFSv3 协议。一切都很好。我不会用“退回到 NFSv3”来回答这个问题,但这个问题可能太小众,无法找到答案。

答案1

既然您说您无法控制有问题的 RHEL 6.5:您是否检查过 NFS 域是否匹配? NFSv3 没有这样的东西,但在 NFSv4 中你需要它(否则挂载仍然可以工作,但文件访问会表现得很奇怪,就像你所描述的那样)。

您在 /etc/idmapd.conf 中配置 NFS 域,可能值得一看。

答案2

尝试-fstype=nfs4,rw,intr,hard,proto=tcp,port=2049,acl进行测试并确保 2049/tcp 对服务器上的客户端开放。如果中间有防火墙,也需要通过 2049/tcp。

相关内容