nfs 错误kernel: NFS: nfs4_discover_server_trunking unhandled error -512. Exiting with error EIO
很久没挂载过nfs,忘记客户端怎么挂在nfs的了,服务端很早就安装好了,今天一台客户机需要挂载nfs,然后居然报错了,然后找了一圈居然没找到怎么解决,然后又重新看了一次centos nfs的配置。
在客户端挂载nfs的提示很慢,长时间无响应,强行结束看看是什么问题,查看日志
1 | $ sudo tail -f /var/log/messages |
1、nfs服务端
登录nfs服务器查看nfs服务正常,查看rpc服务正常,查看服务貌似没有看出异常。查看nfs日志,在日志里面发现比较奇怪的东西。
1 | Nov 13 14:53:41 dev-nfs systemd-logind: New session 11875 of user root. |
继续看日志发现一致在这里循环操作,懵逼啊。利用rpcinfo -p localhost | grep nfs和netstat 查看端口看起来工作是正常的。就是日志看出来有问题
1 | # rpcinfo -p localhost | grep nfs |
2、恢复nfs
网上看了一下,只能重启nfs、和rpcbind服务才能解决。
2.1、刷新nfs
1 | # sudo exportfs -arv |
感觉没多大效果
2.2、重启nfs
1 | # systemctl restart rpcbind.service |
3、客户端挂载
再次来到客户机挂载,可以成功的挂载
4、rpcbind服务介绍
共享和加载NFS文件系统需要服务,红帽企业Linux使用核心级的支持和守护进程的组合来提供NFS文件共享.NFS依靠远程过程调用(RPC)在客户端和服务器端路由请求。在Linux下RPC服务由portmap服务控制。
4.1、为了共享和加载NFS文件系统,下面的服务要一起工作:
- nfs - 启动相应RPC服务进程来服务对于NFS文件系统的请求.
- nfslock - 一个可选的服务,用于启动相应的RPC进程,允许NFS客户端在服务器上对文件加锁.
- portmap - Linux的RPC服务,它响应RPC服务的请求和与请求的RPC服务建立连接.
4.2、RPC进程在后台一起工作服务于NFS服务
- rpc.mountd - 这个进程接受来自NFS客户端的加载请求和验证请求的文件系统正在被输出.这个进程由NFS服务自动启动,不需要用户的配置.
- rpc.nfsd - 这个进程是NFS服务器.它和Linux核心一起工作来满足NFS客户端的动态需求,例如提供为每个NFS客户端的每次请求服务器线程.这个进程对应于nfs服务.
- rpc.lockd - 一个可选的进程,它允许NFS客户端在服务器上对文件加锁.这个进程对应于nfslock服务.
- rpc.statd - 这个进程实现了网络状态监控(NSM)RPC协议,通知NFS客户端什么时候一个NFS服务器非正常重启动.这个进程被nfslock服务自动启动,不需要用户的配置.
- rpc.rquotad - 这个进程对于远程用户提供用户配额信息. 这个进程被nfs服务自动启动,不需要用户的配置.
整体异常现象
nfs服务异常的时候,客户端会不断的去尝试连接nfs服务器,导致在客户端使用df命令卡死,到挂在目录的上层目录执行ls 也出现卡死。df 卡死可以使用ctrl+c 结束,ls的时候就不行啦,需要在另外一个终端kill 进程。
在网上看到一篇文章,上门说的是有可能是性能问题。解决办法是
1 | # systemctl stop rpcbind.service |
我执行了,结果还在观察中,参考
将持续关注这块和更新