安然小屋 安然之家

安然小屋 安然之家

NFS挂载 在web站点调用访问 使用 mount --bind(抛弃软链接) 一个重要避坑 不能直接fstab 绑定
2026-09-02

临时绑定(立即生效)

mount --bind /home/NAS/uploads /home/wwwroot/all.fozhuyuan.cn/uploads

设置开机自动挂载,编辑 /etc/fstab,在最后一行追加
/home/NAS/uploads    /home/wwwroot/all.fozhuyuan.cn/uploads    none    bind    0    0
完整 fstab 末尾示例:
192.168.31.234:/volume2/photo   /home/NAS       nfs     defaults        0       0

/home/NAS/uploads    /home/wwwroot/all.fozhuyuan.cn/uploads    none    bind    0    0   这是错误的



  1. home‑NAS.mount(NFS 挂载)启动失败

  2. bind 挂载 /home/wwwroot/all.fozhuyuan.cn/uploads 依赖前面的 NFS 挂载,连带失败

  3. systemd 出现启动顺序循环依赖(Ordering cycle),网络 / NFS 挂载时序错乱

/etc/fstab 直接写两条记录时,systemd 默认不知道先后顺序:

  • NFS:/home/NAS

  • Bind:/home/wwwroot/all.fozhuyuan.cn/uploads

systemd 并行挂载,bind 先执行,但 NFS 还没挂好 → 依赖雪崩,系统进入 emergency 模式



  1. fstab 只保留 NFS 一行(带_netdev)

192.168.*.*:/volume2/photo   /home/NAS       nfs     defaults, 0 0
  1. 删掉 fstab 中的 bind 记录

  2. 写开机执行脚本,等待 NFS 就绪后执行 bind

nano /etc/rc.local

写入:

#!/bin/bash
sleep 5
mount --bind /home/NAS/uploads /home/wwwroot/all.fozhuyuan.cn/uploads
exit 0

赋予权限:

chmod +x /etc/rc.local

手动测试挂载流程(修复后验证)

#先挂载NFS
mount /home/NAS
#再挂载bind
mount --bind /home/NAS/uploads /home/wwwroot/all.fozhuyuan.cn/uploads

没有报错才代表配置正常。





  1. 不要直接在 fstab 同时写 NFS + bind 两条自动挂载 → systemd 并行执行,时序错乱开机失败

  2. NFS 必须增加 _netdev 参数,告诉系统这是网络文件系统,等网卡就绪

  3. bind 挂载必须强制依赖 home‑NAS.mount保证先后顺序






临时挂载(重启失效)

mount -t nfs 192.168.1.100:/share/upload_img  /home/NAS/uploads
mount -t nfs 192.168.1.100:/share/backup_file /home/NAS/backup
mount -t nfs 192.168.1.100:/share/video       /home/NAS/video


Linux 支持同一个服务器挂载多个 Nfs 共享,规则讲清楚

1. 基础结论

一台 Linux 可以挂载多条 NFS,数量没有硬性上限(受系统资源限制)

  • 可以同一台 NAS,多个共享目录分别挂载

  • 可以多台不同 NAS 服务器各自挂载

  • 挂载点必须是本地不同空目录,不能重复挂载到同一个路径

同一个本地目录不能重复挂载多个 NFS



一份 NAS 文件,本地多个访问路径,两种方案区别很大。

方案 1:NFS 只挂载 1 次,本地用软链接做多个别名(最简单)

流程:

  1. NFS 只挂载一次:

# /etc/fstab
NAS_IP:/share/uploads   /home/NAS/uploads    nfs defaults 0 0
mount -a
  1. 在不同位置建立软链接指向这个已经挂载好的目录

ln -s /home/NAS/uploads /home/wwwroot/a/public/uploads
ln -s /home/NAS/uploads /home/wwwroot/b/public/uploads
ln -s /home/NAS/uploads /home/wwwroot/c/public/uploads

✅ 文件是同一份,修改任意位置全部同步 ⚠️ 缺点:本质还是软链接,你之前遇到的 Apache 403(外部目录软链接)问题依然存在。


方案 2:bind 挂载(推荐!绕过软链接权限问题)

Linux 的 mount --bind,可以把已经挂载好的目录,再映射到另外一个本地路径

底层文件还是 NAS 上那一份,不是复制;但对 Apache 来说它是真实目录,不是符号链接

操作示例

  1. 原始 NFS 挂载(只挂一次)

mkdir -p /home/NAS/uploads
mount -t nfs NAS_IP:/share/uploads /home/NAS/uploads
  1. bind 映射到站点目录(多条 bind)

mkdir -p /home/wwwroot/site1/public/uploads
mount --bind /home/NAS/uploads /home/wwwroot/site1/public/uploads

mkdir -p /home/wwwroot/site2/public/uploads
mount --bind /home/NAS/uploads /home/wwwroot/site2/public/uploads

开机自启写入 /etc/fstab

#原始NFS
NAS_IP:/share/uploads    /home/NAS/uploads   nfs defaults 0 0

#bind挂载多条(同一个源映射到多个站点)
/home/NAS/uploads    /home/wwwroot/site1/public/uploads    none bind 0 0
/home/NAS/uploads    /home/wwwroot/site2/public/uploads    none bind 0 0

优势(对你当前 403 场景非常关键)

  1. 不是 ln -s 软链接,Apache 识别为真实物理目录

  2. 不需要配置跨目录 FollowSymLinks

  3. SELinux 只需要开启一次 httpd_use_nfs on

  4. 多个站点共用 NAS 一份文件,数据唯一

卸载方式

umount /home/wwwroot/site1/public/uploads

两种方式对比

表格

方式是否真实目录Apache 访问特点适用场景
ln -s 软链接符号链接容易 403,需要 FollowSymLinks + 外部目录授权简单测试
mount --bind真实挂载点Apache 无软链接拦截,权限更好控制多站点共用同一套 NAS 资源(生产推荐)
多次 mount nfs❌不支持同一个 NFS 共享不能 mount 多次到不同本地目录不可行