NFSv4 错误,但不在 NFSv3 中

Ung*_*uer 7 rhel nfs mount onc-rpc

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

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

该解决方案最初是为使用 NFSv4 而精心设计的,而 NFSv4 正在不断发展壮大。然而,RHEL6.5 主机没有 RHEL7 主机那么热衷。挂载成功,但文件访问不起作用,例如cp, less. 在终端,他们挂了。tail-ing 客户的/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 错误代码。时,这是唯一可见的tcpdump-ing的NFS通信将会在接口: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”来回答这个问题,但这个问题可能太小众了,永远看不到答案。

Bil*_*gle 0

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