挂载失败八成是服务端未导出、rpc未注册或防火墙拦截,须先用showmount -e和rpcinfo -p逐层验证服务端状态及网络连通性,再执行mount。

挂载失败八成不是命令写错,而是服务端没导出、RPC通不过、或防火墙拦了端口。先验证再挂载,别一上来就mount。
showmount -e 服务端IP 返回空?先查服务端exports和nfs-server状态
这是最常见卡点:客户端连得上IP,但showmount -e 192.168.1.100没输出,说明服务端根本没把目录“发布”出去。
- 登录服务端,确认
/etc/exports里有对应条目,且语法正确(路径后必须跟空格+客户端地址+括号内选项) - 执行
exportfs -v看是否列出该路径;没列出来就说明配置没生效,要跑exportfs -a - 检查
systemctl is-active nfs-server,不是active就systemctl start nfs-server - RHEL/CentOS 7 还得确认
rpcbind在运行:systemctl is-active rpcbind
rpcinfo -p 服务端IP 报“RPC: Program not registered”?防火墙或服务未监听
rpcinfo -p 192.168.1.100失败,比showmount更底层——NFS依赖的RPC服务压根没注册。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 服务端执行
rpcinfo -p localhost,如果本地都查不到,说明nfs-server没起来或启动失败 - 若本地能查到、远程查不到,基本是防火墙问题:NFSv4 只需放行 TCP 2049;NFSv3 还要放开
rpc-bind、mountd等服务(firewalld下用firewall-cmd --add-service=nfs --permanent) - SELinux 启用时可能拦截,临时测试可
setenforce 0,确认是它再配策略
mount -t nfs 成功但df看不到?挂载点非空或选项冲突
命令没报错,df -h却找不到新挂载项,通常是因为挂载点目录已有内容,或mount被静默覆盖。
- 挂载前确保目标目录为空:
ls -A /mnt/nfs-data返回空才安全 - 别用
defaults选项——它默认启用soft,挂载失败不报错;生产环境建议显式写hard,intr - NFSv4 和 NFSv3 挂载语法略有不同:v4 用
server:/path,v3 用server:/full/path;不确定版本时加-o nfsvers=4强制指定 - 挂载后立即
ls /mnt/nfs-data,如果报Stale file handle,说明服务端改过exports或重启过,客户端需umount再重挂
/etc/fstab 自动挂载失败?network依赖和_mount.nfs缺失
mount -a报unknown filesystem type 'nfs',或开机卡住,大概率是fstab里缺关键参数或系统没准备好网络。
- fstab 行末两个
0不能写成1(那是fsck顺序),应为0 0 - 加
_netdev选项,告诉系统等网络就绪再挂:192.168.1.100:/data /mnt/nfs-data nfs rw,_netdev,hard,intr,nfsvers=4 0 0 - 某些精简系统(如CoreOS、部分容器镜像)没装
/sbin/mount.nfs,which mount.nfs查不到就得装nfs-utils包 - systemd 环境下,fstab挂载由
systemd-fstab-generator处理,若systemctl list-unit-files | grep nfs没看到mnt-nfs-data.mount,说明fstab解析失败,检查语法空格和转义
真正麻烦的从来不是mount那条命令,而是RPC通信链路上任意一环断掉——从服务端exportfs没生效,到客户端rpcbind连不上,再到防火墙丢包,每层都可能静默失败。验证必须逐层做,跳过showmount和rpcinfo直接挂载,等于蒙眼开车。










