一、客户端:lockd: server <nfs_server_address> not responding, still trying

1.1 原因1:udp丢包

在客户端抓包,定位问题

# tcpdump 抓包
tcpdump -i eth0 -s 0 -w /tmp/tcpdump.pcap host <nfs-server-address>

# iperf 测试
## 服务端
iperf -s <nfs-server-ip>

## 客户端
iperf -c <nfs-server-address> -u -b 100M -t 300

根据上述命令的返回结果判断UDP协议是否丢包,如果丢包严重,则确定了原因

解决方案:修改nfs 挂载参数,mount -o proto=tcp <nfs_server_address>,挂载时添加 proto=tcp 参数

1.2 原因2:文件锁定

nolock 参数的作用

  • 作用nolock 参数用于禁用 NFS 客户端的文件锁定功能。当指定此参数时,客户端不会使用 RPC 锁定服务来处理文件锁定操作。这通常在以下几种情况下是有用的:

    • 简化配置:在不需要文件锁定的情况(例如,只有一个客户端或对文件的并发访问不是问题)时,可以避免使用额外的锁定机制,从而简化配置。
    • 解决锁服务不可用的问题:如果 NFS 服务器上的锁定服务不可用,客户端可以使用 nolock 来绕过这个问题,仍然能够访问共享文件。

优点

  • 提高性能:禁用锁定可以减少网络开销和延迟,尤其是在对文件的高频读写操作时,因此可能会提高性能。
  • 简化配置:在一些简单的或特定用例中,省略锁定可以简化 NFS 的配置和管理。
  • 解决特定问题:如果遇到因锁服务引起的挂载或访问失败的问题,使用 nolock 可能是一个临时的解决方案。

缺点和风险

  • 数据一致性问题:不使用锁定会导致数据一致性问题,尤其是当多个客户端对同一文件进行写操作时。没有锁定的情况下,多个客户端可能同时更改同一个文件,这将导致数据损坏和不一致。
  • 并发访问问题:在多用户环境中,多个客户端可能同时对文件进行操作而不进行任何控制,会导致意外的结果。例如,两个客户端可能同时读取和写入文件,导致一个客户端的更改被另一个客户端覆盖。
  • 调试困难:当出现由于缺乏锁定导致的数据一致性问题时,调试和追踪问题可能会变得更复杂,因为缺乏“锁”的调试信息。
  • 不适用于所有应用:对于需求高的应用程序(如数据库等)来说,不使用锁是不可取的,因为这会严重影响数据的完整性和可靠性。

解决方案:修改nfs 挂载参数,mount -o nolock <nfs_server_address>,挂载时添加 nolock 参数

二、服务端:kernel: statd: server rpc.statd not responding, timed out

详细日志:

kernel: statd: server rpc.statd not responding, timed out
kernel: cannot monitor <nfs_client_address>

原因:文件锁定

解决方案:修改nfs 挂载参数,mount -o nolock <nfs_server_address>,挂载时添加 nolock 参数

三、服务端:kernel: NFSD: client <nfs_client_address> testing state ID with incorrect client ID

详细日志:

kernel: NFSD: client <nfs_client_address> testing state ID with incorrect client ID
kernel: nfsd4_validate_stateid: 119 callbacks suppressed

原因:nfs 客户端协议版本不兼容,建议使用 nfs v3版本。v4支持了acl等特性。但是部分老系统兼容性有问题,不建议使用

解决方案:

在 CentOS 8.2.2004 中,编辑 /etc/nfs.conf 文件中的 [nfsd] 模块:

vers4=n
vers4.0=n
vers4.1=n
vers4.2=n

重启 nfs-server 服务,systemctl restart nfs-server.service

四、参考链接

https://www.ovirt.org/develop/troubleshooting-nfs-storage-issues.html
https://access.redhat.com/zh_CN/solutions/1386653
https://www.cnblogs.com/jasmine456/p/18061458
https://serverfault.com/questions/527463/desperate-statd-timed-out-lockd-cannot-monitor-unmonitor
END
本文作者:
文章标题: NFS 各种问题处理记录
本文地址: https://blog.imwlw.com/archives/25/
版权说明:若无注明,本文皆 ITShare Studio 原创,转载请保留文章出处。
最后修改:2025 年 01 月 24 日
如果觉得我的文章对你有用,请随意赞赏