You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

特定用户在指定客户端访问NFS共享遇Remote I/O error排查求助

环境配置

NFS服务器: NFSServerHOST
NFS共享目录: NFSServerHOST:/MYSHARE
NFS客户端1: CLNT1
NFS客户端2: CKNT2
NFS客户端3: CLNT3
客户端操作系统: RHEL 7 和 8 
客户端用户: User1、User2
客户端本地挂载点: /var/NFSSHARE

mount -t nfs4 NFSServerHOST:/MYSHARE /var/NFSSHARE

问题现象

所有客户端均成功挂载NFS共享,User1和User2原本可在3台客户端上对/var/NFSSHARE进行读写操作。之后CLNT1出现未知变化(暂未确认是否与服务器补丁或定时任务相关),仅User1无法在CLNT1上对/var/NFSSHARE执行读写操作,User2仍可正常操作;两位用户在CLNT2和CLNT3上均能正常读写。

User1在CLNT1执行读写时的错误为:Remote I/O error

重启CLNT1后问题消失,User1可恢复正常操作。

已完成的检查项

  • 无版本不匹配:NFS客户端与服务器均配置为NFS V4;
  • 白名单正常:3台客户端IP均已加入NFS服务器白名单;
  • inode及lsof使用量均在正常范围内;
  • 执行nfs4_getafacl /var/NFSSHARE结果:
    # file: /var/NFSSHARE
    A::EVERYONE@:rwaDxtTnNcy
    
  • 以User1身份在CLNT1上执行getfacl /var/NFSSHARE结果:
    # file: var/MQHA/
    # owner: nobody
    # group: nobody
    user::rwx
    group::rwx
    other::rwx
    
  • 对比CLNT1(失败)与CLNT2(成功)执行I/O操作时的rpcdebug日志:
    kernel: NFS: nfs_update_inode(0:57/3963604504 fh_crc=0xbf9e74c8 ct=2 info=0x427e7f)
    kernel: NFS: (0:57/3963604504) revalidation complete
    kernel: NFS: permission(0:57/3963604504), mask=0x1, res=0
    kernel: NFS: permission(0:57/3963604504), mask=0x3, res=0
    kernel: NFS: atomic_open(0:57/3963604504), Abhi
    kernel: --> nfs_put_client({2})
    kernel: --> nfs4_alloc_slot used_slots=0002 highest_used=1 max_slots=1024
    kernel: <-- nfs4_alloc_slot used_slots=0003 highest_used=1 slotid=0
    日志从此处开始出现差异,此前成功与失败日志基本一致,仅数值不同。
    Client1(失败)
        kernel: nfs4_free_slot: slotid 0 highest_used_slotid 1
        kernel: NFS: permission(0:57/3963604504), mask=0x81, res=-10 
        kernel: --> nfs4_alloc_slot used_slots=0002 highest_used=1 max_slots=1024
        kernel: <-- nfs4_alloc_slot used_slots=0003 highest_used=1 slotid=0
        kernel: decode_attr_type: type=00
    
    Client2(成功)
        kernel: decode_attr_type: type=0100000
        kernel: decode_attr_change: change attribute=7148460619683717735
        kernel: decode_attr_size: file size=0
    

问题咨询

现寻求问题排查建议:请问在客户端或服务器端还可开启哪些更详细的日志,以进一步定位错误原因?


客户端侧可开启的详细日志

  1. 细化NFS及RPC调试类别
    在现有rpcdebug基础上,追加更针对性的调试项:

    # 开启NFS V4全类别调试
    rpcdebug -m nfs -s nfs4
    # 开启权限、inode、缓存相关调试
    rpcdebug -m nfs -s permission,inode,cache
    # 开启RPC传输层调试,跟踪网络交互细节
    rpcdebug -m rpc -s xprt
    

    调试完成后用rpcdebug -m nfs -c all和rpcdebug -m rpc -c all关闭。

  2. 系统调用跟踪
    用strace捕获User1执行读写操作的完整系统调用流程,定位具体错误触发点:

    strace -o user1_nfs_trace.log -f -e trace=file,network,ioctl <User1执行的读写命令>
    
  3. NFS缓存状态监控
    开启nfs_cache调试,同时记录问题发生时/proc/fs/nfsfs/volumes和/proc/net/rpc/nfs下的缓存状态文件内容。

服务器侧可开启的详细日志

  1. NFS服务器V4详细日志
    修改RHEL系统NFS配置,开启服务端 verbose 日志:

    # 编辑/etc/sysconfig/nfs,添加或修改
    RPCNFSDARGS="-vvv"
    RPCMOUNTDARGS="-vvv"
    # 重启服务生效
    systemctl restart nfs-server
    

    日志会输出到/var/log/messages,重点关注User1来源请求的权限校验、会话处理过程。

  2. NFS服务器ACL与权限调试
    开启服务端权限与ACL相关调试:

    rpcdebug -m nfsd -s acl,auth
    

    关闭调试用rpcdebug -m nfsd -c all。

  3. 客户端会话状态跟踪
    监控服务器端NFS客户端会话信息,对比异常与正常客户端的差异:

    nfs4-sysstat
    cat /proc/fs/nfsd/clients
    

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:10:33