设置 systemd 服务在 fstab 挂载后启动

By | 2024年5月1日

介绍

由于某些服务在启动时不考虑启动顺序,会出现硬盘还未挂载但服务已经启动的状况,造成找不到路径等问题。通过设置 systemd 的 After 项,可以实现在硬盘挂载后再启动相应的服务。

容器 volume 使用 nfs 挂载路径问题

生产环境就遇到过此问题,踩了大半天坑。情况是这样的:我的docker容器是 xxx,开机会自动启动,对应的 docker compose 中有 py 脚本文件的 volume 映射,例如:

    volumes:
      - "${MYDATA_HOME:?err}/xxx/custom_python/main.py:/mnt/workspace/xxx/main.py"

custom_python/main.py 是宿主机上 NFS 挂载路径中的文件,且在 fstab中配置了。
出现的现象:启动电脑 xxx 容器一直起不来,查看 systemctl status docker 有报错:

排查时将fstab中配置的nfs去掉,重启docker也是报上面的错,xxx 服务也是起不来,因此判定开机时 nfs 还没挂载好就启动了 xxx服务。

解决办法:

(1)执行 systemctl list-units –type=mount ,找到 home-xxx-custom_python.moun:

(2)执行 systemctl status docker 找到 /lib/systemd/system/docker.service,在 After 项后加这个 home-xxx-custom_python.moun:

重启电脑,问题解决!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注