服务在文件系统安装之前启动

服务在文件系统安装之前启动

尊敬的 systemd 专家,

我有 Cubietruck A20 系统,Armbian 内核为 4.19.62,其余软件包取自 Debian 10 Buster armhf,systemd 为 241-7~deb10u2。

为了避免启动 microSD 卡磨损,我在 USB 连接的 HDD(WD5000BMVW、Western Digital Elements / My Passport (USB))上创建了一个 LVM2 卷组,并在此 VG 中的 LV 上创建了多个 ext4 文件系统,以存储 / var/lib 、 /var/log 、一些 /var/spool/* 、 /var/cache 等。

我在 /etc/fstab 中正确记录了所有这些文件系统,并且它们在系统启动时安装。

但结果是,一些服务变得依赖于在启动之前安装的这些文件系统。部分是bind9(命名)和squid(squid3)。下次重新启动后,我注意到这些服务的启动时间早于安装和访问这些文件系统的时间。

所以我询问了一些 systemd 专家,他们说,“运行‘systemctl edit’并添加对这些服务的 .mount 依赖项”。我添加了bind9和squid的覆盖文件,其内容如下:

# /etc/systemd/system/squid.service.d/override.conf
[Unit]
Requires=var-log.mount var-spool-squid3.mount
After=var-log.mount var-spool-squid3.mount

# /etc/systemd/system/bind9.service.d/override.conf
[Unit]
Requires=var-lib.mount var-cache.mount
After=var-lib.mount var-cache.mount

这没有帮助,否则我不会问我的问题。您可以确定我从“systemctl list-units”的打印输出中获取了这些 .mount 名称,并单独和一起尝试了 Requires 和 After

在“journalctl -b”中,我非常清楚地看到bind9和squid .services很早就启动并且失败了;仅几秒钟后,发现了 USB 块设备(sda),运行了 lvm pvscan,发现 LV 已激活并挂载。所以我假设当尝试 bin9&squid .service 启动时这些 .mount 单元根本不存在。

所以我的问题是,如何适当地当从根 FS 读取单元文件并由 systemd 按依赖关系排序几秒后发现一些强制启动时文件系统时,指定这种依赖关系吗?

预先感谢您的有用回复。

相关内容