侧边栏壁纸
博主头像
Narutoの博客

行动起来,活在当下

  • 累计撰写 58 篇文章
  • 累计创建 29 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
NAS

Debian虚拟机挂载群晖NFS

Naruto
2025-09-21 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

Debian虚拟机挂载群晖NFS

效果:在 docker 服务启动前挂载群晖存储,这样 docker 容器可以直接读取 nas 文件

一、准备工作

  1. 安装工具
apt install nfs-common
  1. 挂载
mount -t nfs 192.168.100.3:/volume3/nas /mnt/nas

挂载不上可能需要设置白名单,控制面板 -> 共享文件夹 -> 选择目标共享 -> 编辑 -> NFS权限

二、使用 systemd 定制挂载服务

2.1 编辑挂载

  • 注意,文件名要和挂载的路径对应。例如 mnt-nas2.mount 就只能挂载 /mnt/nas,挂载 /mnt/nas2 就会出错

在 systemd 里,挂载单元(.mount 文件)文件名是强绑定到挂载路径的,它会做一次“路径转义”来生成名字,如果名字和 Where= 里的路径不一致,它直接拒绝启动

vim /etc/systemd/system/mnt-nas2.mount
[Unit]
Description=Mount nas2 NFS Share
After=network-online.target
Wants=network-online.target

[Mount]
What=192.168.100.3:/volume3/nas
Where=/mnt/nas2
Type=nfs
Options=defaults,_netdev,nofail

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start mnt-nas2.mount
systemctl enable mnt-nas2.mount

2.2 修改docker启动项

systemctl edit docker.service
  • 加入以下内容(文件路径 /etc/systemd/system/docker.service.d/override.conf),路径与上面的对应
[Unit]
After=network-online.target mnt-nas2.mount
Requires=mnt-nas2.mount
  • 保存并退出(nano:Ctrl+O → 回车 → Ctrl+X)

  • 重新加载

systemctl daemon-reload
systemctl restart docker

2.3 验证启动顺序

systemctl show docker.service -p After -p Requires
root@Debian:~# systemctl show docker.service -p After -p Requires
Requires=docker.socket sysinit.target system.slice mnt-nas2.mount
After=firewalld.service time-set.target sysinit.target mnt-nas2.mount nss-lookup.target systemd-journald.socket containerd.service network-online.target basic.target docker.socket system.slice

看到有 mnt-nas2.mount ,证明设置成功

这样开机的时候:

  1. 系统先等网络就绪

  2. 挂载 mnt-nas2.mount

  3. 挂载完成后再启动 Docker

三、停止挂载

systemctl stop mnt-nas2.mount

systemd 会自动执行 umount /mnt/nas2 ,只是它不会在 .mount 文件里写“停止选项”,因为 stop 就是 umount。即 systemctl stop mnt-nas2.mount = umount /mnt/nas2

如果有进程占用,可以:

umount -l /mnt/nas2

或者

sudo fuser -vm /mnt/nas2
sudo fuser -vmk /mnt/nas2   # 结束占用进程
sudo systemctl stop mnt-nas2.mount
0

评论区