nfs挂载失败首要排查rpcbind与nfs服务启动顺序及注册状态,其次验证防火墙端口(111/2049)、/etc/exports语法正确性、exportfs -r重载配置,并显式指定nfs版本挂载。

挂载失败,八成不是命令写错,而是服务端根本没注册成功、防火墙拦了端口、或 /etc/exports 语法错了——先别急着 mount,得把底层链路跑通。
rpcbind 和 nfs 启动顺序必须严格按序
NFS 依赖 RPC 注册端口,rpcbind 必须在 nfs 之前启动,否则 showmount -e 会报 clnt_create: RPC: Program not registered。
- 先停掉两个服务:
systemctl stop nfs rpcbind - 再严格按序启动:
systemctl start rpcbind && systemctl start nfs - 验证是否注册成功:
rpcinfo -p localhost应该能看到nfs、mountd、nlockmgr条目,且端口非0 - 旧脚本如
service nfs restart可能绕过依赖检查,导致顺序错乱,一律用systemctl
/etc/exports 的括号和空格不能错
看似一行配置,实际每个字符都影响挂载成败。常见错误是 IP 段写成 192.168.1.*、漏括号、括号里有空格。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 客户端写法只支持:单 IP(如
192.168.1.100)、CIDR 网段(如192.168.1.0/24)、主机名,不支持通配符*单独使用 - 权限选项必须用小括号包裹,且中间**不能有空格**:
/home/nfs 192.168.1.0/24(rw,sync,no_subtree_check)✅;/home/nfs 192.168.1.0/24 (rw, sync)❌ -
no_root_squash危险:客户端 root 写入直接映射为服务端 root,生产环境慎用;默认root_squash更安全 - 改完必须执行
exportfs -r生效,仅重启服务不够——这步常被跳过
客户端 mount 前先查端口连通性
报错 clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host),基本等于“防火墙拦住了”,不是网络不通。
- NFSv4 只需开放 TCP
2049;NFSv3 还要放开rpcbind(111)、mountd、nlockmgr等动态端口 - 最稳妥方式:
rpcinfo -p 服务器IP查出所有端口,再在服务端防火墙放行;或临时关防火墙验证:systemctl stop firewalld - 挂载时显式指定协议版本更可靠:
mount -t nfs4 服务器:/path /mnt比默认 v3 更简洁、端口更固定 - 加
-o soft,timeo=10,retrans=3避免挂载卡死,尤其跨网段或高延迟链路
/etc/fstab 自动挂载必须加 _netdev
直接写进 /etc/fstab 的 NFS 条目,系统启动时若网络未就绪或服务未响应,会导致开机卡在挂载阶段。
- 必须加
_netdev选项,告诉 systemd 等网络就绪后再挂载:192.168.1.100:/home/nfs /mnt nfs defaults,_netdev,soft,timeo=10 0 0 - 避免用
defaults——它隐含hard模式,一旦服务端宕机,进程会永久阻塞在ls或df - SELinux 启用时可能拦截挂载,临时排查可执行
setenforce 0,确认后再配策略
真正卡住的点往往不在 mount 命令本身,而在 rpcinfo 能不能看到服务、exportfs -r 有没有执行、fstab 里有没有 _netdev——这些细节一错,整条链路就断了。










