首页/系统与基础设施/存储速查/NFS 客户端挂载失败排查步骤
NAS 与文件共享50 条

NFS 客户端挂载失败排查步骤

NFS 挂载失败基本落在网络可达性、服务端导出、协议版本与端口、客户端权限四层。按层定位比反复重挂载有效得多,报错原文(Connection refused / access denied / No route to host)也能直接指路。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​​‌‌​​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​​​​‌​‌‌​‌​​‌​‌‌​‌‌​​​‌‌‌​‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

先按层定位再动手

NFS 挂载是一条链:客户端能到服务端、服务端确实导出了这个路径、双方协商到同一个协议版本且所需端口通、客户端的挂载身份被导出选项放行。链上任何一环断了都表现为「挂不上」,但报错不同。先读报错,再按层验证,可以避免在正确的层上做无效改动,例如服务端根本没导出却一直在客户端调 rsize。

基本信息

适用平台Linux NFSv3/v4 客户端与服务端
常用命令showmount -e、rpcinfo -p、exportfs -v、mount -v、nfsstat
v4 端口仅 2049/TCP
v3 端口2049 加 rpcbind(111) 与 mountd 的动态端口
日志位置服务端 /var/log/messages 或 journalctl;客户端 dmesg 与 syslog

报错原文与指向

报错最常见原因下一步怎么查
Connection refused服务端 nfs 服务未运行或端口未监听服务端 systemctl status nfs-server,另一端 nc -vz 2049
No route to host防火墙丢弃或网络不可达检查主机防火墙与安全组是否放行 2049 及 v3 相关端口
access denied by server导出未覆盖该客户端或 sec 模式不匹配服务端 exportfs -v 核对网段与 sec 参数
Protocol not supported版本协商失败客户端显式指定 vers=4.2 或 vers=3 重试
Stale file handle服务端导出重建或后端存储变化重新挂载或清理客户端句柄缓存后复现
挂载成功但读写 Permission denied不是挂载问题,是 UID/权限位ls -ln 看属主,核对服务端目录权限

分层排查命令

分层排查命令
ping -c 3 10.0.0.10              # 第一层:网络可达
nc -vz 10.0.0.10 2049            # v4 只需这一个端口
rpcinfo -p 10.0.0.10             # v3 场景确认 rpcbind 与 mountd
showmount -e 10.0.0.10           # 服务端宣告了哪些导出
mount -v -t nfs -o vers=4.2 10.0.0.10:/data/pub /mnt/pub   # 显式版本,拿到详细过程

客户端侧细节

客户端侧细节
dmesg | tail -n 30              # 内核报错原文常比 mount 输出更有信息量
cat /proc/mounts | grep nfs      # 确认已挂载项与实际协商参数
nfsstat -m                       # 查看版本、rsize/wsize、sec 等生效值
umount -f /mnt/pub               # 卡死时强制卸载再重试
mount | grep -c nfs              # 确认没有残留的重复挂载
NFSv4 不需要 rpcbind,所以「111 端口不通」并不能解释 v4 挂载失败;反过来,强行让老客户端用 v3 时,如果没放行 mountd 的动态端口,就会卡在连接阶段。固定版本是缩小排查面的有效手段。
服务端重建导出目录、更换后端存储或改动导出路径后,客户端上的挂载点可能保留旧句柄,表现为能进入目录但一读文件就报 Stale file handle。此时不要在原挂载点上反复读写,先卸载再重新挂载,避免应用把错误当成数据损坏。

容易被当成挂载故障的两种情况

第一种是权限问题:挂载成功、目录能进,但写入失败,这属于 UID 与权限位范畴,与挂载参数无关。第二种是挂载顺序与开机时序:网络未就绪时自动挂载失败,之后一直没人重试,看起来像服务端不可用。后者在客户端表现为 mount 记录缺失,可通过挂载选项的重试行为或系统挂载单元的顺序调整来解决。

易错点

  • 从服务端开始猛改导出而不看客户端报错原文:报错已经指明层,忽略它常在正确的层外做无效改动
  • NFSv3 只放行 2049:mountd 端口未开导致连接阶段卡住或失败,需一并放行或固定使用 v4
  • 服务端导出用主机名而 DNS 反向解析缺失:客户端解析不到自身名称,被判定为未授权来源
  • 把「挂载成功但写不进」当成挂载故障:实际问题在 UID/GID 与服务端目录权限,挂载参数怎么调都无用
  • 客户端存在同路径的重复挂载:既占用句柄又让现象互相干扰,排查前先统一卸载

数据来源与参考

  • nfs(5) 与 mount(8) 手册页挂载选项说明
  • RFC 1813《NFS Version 3 Protocol Specification》
  • 红帽官方文档《NFS 故障排除指南》

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/nfs-mount-failure-troubleshooting.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​​‌‌​​‌‌‌​​‌‌​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​‌‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​​​​‌​‌‌​‌​​‌​‌‌​‌‌​​​‌‌‌​‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌​‌‌‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​