Rocky 9 挂载 NFS:客户端视角与 root squash
服务端是一台 AlmaLinux 9.8 宿主机(nfs-server + /etc/exports.d/lab.exports 导出 /srv/nfslab);客户端是 Rocky Linux 9.8 特权容器(宿主内核 5.14.0-687.54.1.el9_8,--network host)。实际执行:mount -t nfs 127.0.0.1:/srv/nfslab、findmnt、读服务端文件、写入新文件、ls -l、umount,并在服务端确认文件落地。日志:plans/content-expansion/evidence/logs/rocky-nfs-mount.log。
客户端与服务端在同一台机器(走回环),跨机防火墙与延迟未验证。
挂载:先看协商成什么版本
Section titled “挂载:先看协商成什么版本”sudo mkdir -p /mnt/nfslabsudo mount -t nfs 127.0.0.1:/srv/nfslab /mnt/nfslabfindmnt -no SOURCE,FSTYPE,TARGET /mnt/nfslab127.0.0.1:/srv/nfslab nfs4 /mnt/nfslab-t nfs 不给版本时,客户端会协商到 nfs4。要固定版本得显式写 -o vers=4.2 / vers=3,v3 还需要服务端放行 rpcbind/mountd 端口。
读:确认服务端数据可见
Section titled “读:确认服务端数据可见”cat /mnt/nfslab/from-server.txthello from server写:为什么新文件属主是 nobody
Section titled “写:为什么新文件属主是 nobody”echo client-write > /mnt/nfslab/from-client.txtls -l /mnt/nfslab/-rw-r--r-- 1 nobody nobody 13 Oct 19 16:01 from-client.txt-rw-r--r-- 1 root root 18 Oct 19 15:53 from-server.txt客户端进程是 root(容器里就是 root),但导出行没写 no_root_squash,服务端默认把客户端 root 映射成 nobody。所以文件属主是 nobody,不是 root——这是 NFS 的默认安全行为,不是权限 bug。
如果业务确实需要客户端 root 保留权限,才在服务端加 no_root_squash;代价是客户端 root 等于服务端 root。
服务端侧确认
Section titled “服务端侧确认”cat /srv/nfslab/from-client.txtclient-write客户端写的内容在服务端能看到,说明挂载与写权限都正常;验收时两边都看一遍,比只看 mount 成功更可靠。
- 跨机挂载超时:服务端没放行
nfs(2049/tcp);v3 还要 mountd/rpc-bind。回环测试发现不了; - 写入报 Permission denied:目录权限或导出选项(
ro、root_squash映射)限制; - 不看协商版本:
-t nfs默认 nfs4,老服务端只支持 v3 时要显式-o vers=3。
练习:挂载并验证读写
Section titled “练习:挂载并验证读写”sudo dnf install -y nfs-utilssudo mkdir -p /mnt/nfslabsudo mount -t nfs <server>:/srv/nfslab /mnt/nfslabfindmnt -no FSTYPE /mnt/nfslab # 预期 nfs4ls /mnt/nfslabecho test > /mnt/nfslab/from-client.txtsudo umount /mnt/nfslab检查:
findmnt显示nfs4- 能读到服务端预置文件
- 新建文件在服务端可见(属主可能是 nobody)
- 卸载后
findmnt /mnt/nfslab无输出
常见问题
为什么挂载后创建的文件属主是 nobody?
服务端导出行默认 root_squash,把客户端的 root 映射成 nobody。需要保留 root 权限时在导出选项加 no_root_squash,但要清楚这等于把服务端 root 权限交给客户端。
同机挂载成功,另一台机器挂载超时?
回环不过防火墙。跨机要放行 nfs(2049/tcp),v3 还要 mountd/rpc-bind 的动态端口;先在服务端 firewall-cmd --add-service=nfs。
怎么固定 NFS 版本?
用 -o vers=4.2 或 vers=3 显式指定。默认是协商(通常是 4.x);固定版本便于排查,但服务端必须支持该版本。
- 存储扩容:LVM 扩容
- XFS 修复:XFS 损坏的修复顺序
- 安装后核对:安装后 7 项核对