这类问题我又碰上了一次。CentOS 7.9 的客户端执行 mount -t nfs 10.0.0.5:/data /mnt 后没有输出,卡了半分钟才报 mount.nfs: Connection timed out,ping 服务端是通的,111 端口用 telnet 连不上。
第一反应是「客户端 /etc/nfsmount.conf 里固定了 vers=3,没法退回 v4 直连 2049」,验证下来不成立。
把日志和配置对完,能解释这个现象的基本就这几处。服务端的 rpcbind 没启动,NFSv3 的端口查询直接超时;防火墙只放行了 2049,rpcbind 的 111 和 mountd 的随机端口被挡;DNS 反解 rpcbind 的主机名卡住,超时后才继续。
动手时先确认 111 和 2049 通不通
timeout 5 bash -c '</dev/tcp/10.0.0.5/111' && echo ok
再往下改用 NFSv4 绕开端口查询
mount -t nfs -o vers=4.1 10.0.0.5:/data /mnt/data
服务端放开 rpcbind 和 mountd 端口
firewall-cmd --add-service=nfs --add-service=rpc-bind --permanent && firewall-cmd --reload
等前面都确认过,再把挂载写进 fstab 并用 nofail 兜底
echo '10.0.0.5:/data /mnt/data nfs vers=4.1,defaults,nofail 0 0' >> /etc/fstab
这类问题以前遇到过,但这次的触发条件和上次不一样。
怎么算真的好了,看的是同一批现象。mount 在几秒内返回,df -h 能看到远端容量,umount 也能正常完成,不再出现长时间的 D 状态进程。
NFSv3 依赖 rpcbind 动态端口,防火墙很难精确放行;能上 v4 就上 v4,只开 2049 一条规则最省事。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
