AlmaLinux 9:NFS 导出与挂载(同机实测)
在一台 AlmaLinux 9.8 真机(kernel 5.14.0-687.54.1.el9_8)上实际执行:启用 nfs-server、写 /etc/exports.d/lab.exports、exportfs -ra、exportfs -v、showmount -e 127.0.0.1、mount -t nfs 127.0.0.1:/srv/nfslab /mnt/nfslab、findmnt、df -hT、建文件、卸载并清理。日志:plans/content-expansion/evidence/logs/alma-nfs-mount.log。
跨主机挂载、防火墙放行 2049、以及 autofs 自动挂载未在本环境验证(本次是同机回环测试)。
同机回环也能验证什么
Section titled “同机回环也能验证什么”用 127.0.0.1 挂自己,验证的是协议与服务端配置是否正确:导出生效、showmount 能看到、客户端能按 nfs4 挂上、读写正常。它验证不了网络路径(防火墙、路由、跨机延迟),那部分要另测。
导出配置写在 exports.d
Section titled “导出配置写在 exports.d”sudo systemctl enable --now nfs-serversudo mkdir -p /srv/nfslab && sudo chmod 777 /srv/nfslabecho "/srv/nfslab 127.0.0.1(rw,sync,no_root_squash)" | sudo tee /etc/exports.d/lab.exportssudo exportfs -ra/etc/exports.d/*.exports 与 /etc/exports 等价,按目录分文件便于管理;改完必须 exportfs -ra 重新加载。
校验导出与挂载
Section titled “校验导出与挂载”sudo exportfs -vshowmount -e 127.0.0.1/srv/nfslab 127.0.0.1(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)Export list for 127.0.0.1:/srv/nfslab 127.0.0.1挂载并确认文件系统类型:
sudo mkdir -p /mnt/nfslabsudo mount -t nfs 127.0.0.1:/srv/nfslab /mnt/nfslabfindmnt -no SOURCE,FSTYPE,TARGET /mnt/nfslabdf -hT /mnt/nfslab | tail -1127.0.0.1:/srv/nfslab nfs4 /mnt/nfslab127.0.0.1:/srv/nfslab nfs4 39G 2.4G 37G 6% /mnt/nfslabFSTYPE 是 nfs4 而不是 nfs——NFSv4 是默认协商结果。读写验证:
sudo touch /mnt/nfslab/hello && ls -l /mnt/nfslab/hello-rw-r--r-- 1 root root 0 Oct 19 13:30 /mnt/nfslab/hellosudo umount /mnt/nfslabsudo rm -f /etc/exports.d/lab.exportssudo exportfs -rasudo systemctl disable --now nfs-server先卸载再撤导出,最后停服务;顺序反了会出现「导出已撤但挂载点还挂着」的僵持状态,卸载会报 device is busy。
- 改了 exports 不
exportfs -ra:showmount看不到新目录; - 跨机挂载被防火墙拦:需要放行
nfs(2049/tcp)与mountd/rpc-bind相关端口,同机回环测不出这个问题; no_root_squash当默认:它让客户端 root 拥有服务端 root 权限,生产上除非明确需要,否则用默认的 root squash。
练习:同机导出并挂载
Section titled “练习:同机导出并挂载”sudo systemctl enable --now nfs-serversudo mkdir -p /srv/nfslab && sudo chmod 777 /srv/nfslabecho "/srv/nfslab 127.0.0.1(rw,sync)" | sudo tee /etc/exports.d/lab.exportssudo exportfs -rasudo mkdir -p /mnt/nfslab && sudo mount -t nfs 127.0.0.1:/srv/nfslab /mnt/nfslabfindmnt -no FSTYPE /mnt/nfslab # 预期 nfs4sudo touch /mnt/nfslab/x && ls /mnt/nfslabsudo umount /mnt/nfslab检查:
showmount -e 127.0.0.1→ 列出/srv/nfslabfindmnt -no FSTYPE /mnt/nfslab→nfs4- 挂载点里能建文件
- 卸载后
findmnt /mnt/nfslab无输出
常见问题
为什么挂载后 FSTYPE 显示 nfs4 而不是 nfs?
NFSv4 是当前默认协商版本,mount -t nfs 会实际使用 nfs4。要强制旧版本需显式写 -o vers=3,但 v3 需要额外的 rpcbind/mountd 端口放行。
同机挂载成功,跨机却超时?
同机走回环不过防火墙。跨机要放行 nfs(2049/tcp),v3 还要 mountd/rpc-bind 的动态端口;先在服务端 firewall-cmd --add-service=nfs 再试。
卸载时报 device is busy 怎么办?
先确认没有进程占用(lsof +D /mnt/nfslab 或 fuser -vm),退出该目录再卸载;实在不行 umount -l 延迟卸载,但要清楚它只是把清理推迟。
- 存储扩容:LVM 扩容与 XFS 增长
- 安装后核对:新装系统 7 项核对
- 包来源审计:审计包来源