能挂上需严格按顺序执行:①客户端安装nfs-common或nfs-utils;②用showmount -e 服务器ip验证导出列表;③mount时显式指定nfsvers=4,hard,intr,rw;④fstab中必加_netdev且提前创建挂载点;⑤用mount -a和/proc/mounts交叉验证。

能挂上,但得按顺序踩准几个关键点——缺一不可,否则 mount 会静默失败或报一堆模糊错误,比如 access denied by server 或 wrong fs type。
确认客户端已装 nfs-common(Ubuntu/Debian)或 nfs-utils(RHEL/CentOS)
没装这个,mount -t nfs 直接报错 wrong fs type,连协议解析器都没有。这不是“可选”,是硬依赖:
- Ubuntu/Debian:
sudo apt install nfs-common - RHEL/CentOS/Fedora:
sudo dnf install nfs-utils或sudo yum install nfs-utils - 装完验证:
ls /sbin/mount.nfs*应该有输出;rpcinfo -p localhost不报错说明本地 RPC 基础就绪
用 showmount -e <code>服务器IP 验证服务端导出是否可见
这是最常被跳过的一步,但它是判断问题在服务端还是客户端的分水岭。如果这步失败,后面所有 mount 都白搭:
- 返回空或
clnt_create: RPC: Unknown host→ 网络不通或 DNS 解析失败 - 返回
clnt_create: RPC: Program not registered→ 服务端rpcbind或nfs-server没启,或防火墙拦了 111/TCP+UDP - 返回共享路径列表(如
/shared 192.168.1.0/24)→ 服务端 OK,可以进下一步 - 注意:某些 NFSv4 服务端禁用了
showmount,此时改用rpcinfo -p <code>服务器IP查nfs和mountd是否注册
mount -t nfs 必须带 nfsvers=4 和 hard,intr
NFS 默认行为在现代内核里已不安全也不稳定。不显式指定版本和挂载类型,容易卡死、假挂载或权限错乱:
-
nfsvers=4:NFSv3 已逐步淘汰,v4 是单端口(2049)、自带身份认证、无需rpcbind,兼容性和安全性都更好;v3 在多数新系统上需额外开多个随机端口,防火墙配置麻烦 -
hard,intr:硬挂载保证数据一致性;intr允许 Ctrl+C 中断卡住的挂载操作,避免整个 shell 被锁死 - 推荐最小可用命令:
sudo mount -t nfs -o rw,hard,intr,nfsvers=4 192.168.1.100:/shared /mnt/nfs-share - 别用
defaults:它隐含soft,写入可能丢数据;也别漏rw,有些旧镜像默认只读
/etc/fstab 里写错一行就导致开机卡住
fstab 不是简单复制粘贴就能用。它在系统启动早期执行,任何挂载失败都会阻塞后续服务(包括网络),最终黑屏或进 emergency mode:
- 格式必须严格:
服务器IP:/路径 /本地点 nfs rw,hard,intr,nfsvers=4,_netdev 0 0 -
_netdev是关键:告诉 systemd 这个设备依赖网络,等网络就绪再挂,否则 fstab 会抢在网卡 up 前执行,必失败 - 挂载点目录(如
/mnt/nfs-share)必须提前mkdir -p创建好,fstab 不会自动建目录 - 加完后务必运行
sudo mount -a测试,无输出才表示语法和连通性都 OK;有错立刻查dmesg | tail或journalctl -u remote-fs.target
真正麻烦的从来不是命令本身,而是 NFS 的状态不可见性——它不报错,只是不响应;不失败,只是延迟超时。所以每一步都要用 showmount、rpcinfo、mount | grep nfs 和 cat /proc/mounts 交叉验证,而不是只盯着 mount 是否返回成功。











