跳转到内容
搜索 AlmaLinux 文档

    浏览当前文档目录

    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 自动挂载未在本环境验证(本次是同机回环测试)。

    用 127.0.0.1 挂自己,验证的是协议与服务端配置是否正确:导出生效、showmount 能看到、客户端能按 nfs4 挂上、读写正常。它验证不了网络路径(防火墙、路由、跨机延迟),那部分要另测。

    Terminal window
    sudo systemctl enable --now nfs-server
    sudo mkdir -p /srv/nfslab && sudo chmod 777 /srv/nfslab
    echo "/srv/nfslab 127.0.0.1(rw,sync,no_root_squash)" | sudo tee /etc/exports.d/lab.exports
    sudo exportfs -ra

    /etc/exports.d/*.exports 与 /etc/exports 等价,按目录分文件便于管理;改完必须 exportfs -ra 重新加载。

    Terminal window
    sudo exportfs -v
    showmount -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

    挂载并确认文件系统类型:

    Terminal window
    sudo mkdir -p /mnt/nfslab
    sudo mount -t nfs 127.0.0.1:/srv/nfslab /mnt/nfslab
    findmnt -no SOURCE,FSTYPE,TARGET /mnt/nfslab
    df -hT /mnt/nfslab | tail -1
    127.0.0.1:/srv/nfslab nfs4 /mnt/nfslab
    127.0.0.1:/srv/nfslab nfs4 39G 2.4G 37G 6% /mnt/nfslab

    FSTYPE 是 nfs4 而不是 nfs——NFSv4 是默认协商结果。读写验证:

    Terminal window
    sudo touch /mnt/nfslab/hello && ls -l /mnt/nfslab/hello
    -rw-r--r-- 1 root root 0 Oct 19 13:30 /mnt/nfslab/hello
    Terminal window
    sudo umount /mnt/nfslab
    sudo rm -f /etc/exports.d/lab.exports
    sudo exportfs -ra
    sudo 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。
    Terminal window
    sudo systemctl enable --now nfs-server
    sudo mkdir -p /srv/nfslab && sudo chmod 777 /srv/nfslab
    echo "/srv/nfslab 127.0.0.1(rw,sync)" | sudo tee /etc/exports.d/lab.exports
    sudo exportfs -ra
    sudo mkdir -p /mnt/nfslab && sudo mount -t nfs 127.0.0.1:/srv/nfslab /mnt/nfslab
    findmnt -no FSTYPE /mnt/nfslab # 预期 nfs4
    sudo touch /mnt/nfslab/x && ls /mnt/nfslab
    sudo umount /mnt/nfslab

    检查:

    1. showmount -e 127.0.0.1 → 列出 /srv/nfslab
    2. findmnt -no FSTYPE /mnt/nfslab → nfs4
    3. 挂载点里能建文件
    4. 卸载后 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 延迟卸载,但要清楚它只是把清理推迟。