systemd 忽略来自 overlayFS 的服务
systemd ignores services from overlayFS
我想在另一个分区上构建一个应用程序系统,一个应用程序文件系统。属于应用程序的所有二进制文件、配置文件和服务文件都应该在 app-fs 中。
我使用的是以下版本:内核 4.9.x、systemd v234.
应用分区挂载在/opt,包括以下文件:
/opt/usr/bin/app-binary
/opt/etc/systemd/system/multiuser.target/link_2_app.service
/opt/lib/systemd/system/app.service
这是服务文件:
[Unit]
Description=The application description.
After=syslog.target basic.target
[Service]
ExecStart=/opt/usr/bin/app-binary
Type=simple
[Install]
WantedBy=multi-user.target
为了将文件与根文件系统同步,我创建了 2 个叠加层,这可能是 /etc/fstab 条目(抱歉格式问题,一行无效):
/dev/app-partition /opt auto defaults,x-systemd.mount 0 2
overlay /etc overlay defaults,x-systemd.mount, x-systemd.after=opt.mount,lowerdir=/etc,upperdir=/opt/etc,workdir=/work/etc 0 2
overlay /lib/systemd/system overlay defaults,x-systemd.mount,x-systemd.after=opt.mount,lowerdir=/lib/systemd/system,upperdir=/opt/lib/systemd/system,workdir=/work/lib 0 2
这是在到达 local-fs.target 之前处理的。
结果
我可以成功启动应用程序,但使用 systemctl start 手动启动 app.service。 "systemctl status app.service" 的状态表示已启用。但该应用程序未在启动时启动。 Systemd 不会给出有关尝试启动应用程序的消息。
问题
有没有办法调试这种行为?系统什么时候检查服务文件?有没有办法再次触发它?是否有其他方法可以使用 systemd 处理此用例?
systemd 在启动时检查单元文件一次,在 systemd 启动之前创建 overlayFS 的初始化脚本可以处理这个用例。
另一个想法(但未测试)是:systemctl daemon-reload
systemctl daemon-reload
我测试这个不行。
以我的情况。我用systemd-networkd,叠加
我想在另一个分区上构建一个应用程序系统,一个应用程序文件系统。属于应用程序的所有二进制文件、配置文件和服务文件都应该在 app-fs 中。
我使用的是以下版本:内核 4.9.x、systemd v234.
应用分区挂载在/opt,包括以下文件:
/opt/usr/bin/app-binary
/opt/etc/systemd/system/multiuser.target/link_2_app.service
/opt/lib/systemd/system/app.service
这是服务文件:
[Unit]
Description=The application description.
After=syslog.target basic.target
[Service]
ExecStart=/opt/usr/bin/app-binary
Type=simple
[Install]
WantedBy=multi-user.target
为了将文件与根文件系统同步,我创建了 2 个叠加层,这可能是 /etc/fstab 条目(抱歉格式问题,一行无效):
/dev/app-partition /opt auto defaults,x-systemd.mount 0 2
overlay /etc overlay defaults,x-systemd.mount, x-systemd.after=opt.mount,lowerdir=/etc,upperdir=/opt/etc,workdir=/work/etc 0 2
overlay /lib/systemd/system overlay defaults,x-systemd.mount,x-systemd.after=opt.mount,lowerdir=/lib/systemd/system,upperdir=/opt/lib/systemd/system,workdir=/work/lib 0 2
这是在到达 local-fs.target 之前处理的。
结果
我可以成功启动应用程序,但使用 systemctl start 手动启动 app.service。 "systemctl status app.service" 的状态表示已启用。但该应用程序未在启动时启动。 Systemd 不会给出有关尝试启动应用程序的消息。
问题
有没有办法调试这种行为?系统什么时候检查服务文件?有没有办法再次触发它?是否有其他方法可以使用 systemd 处理此用例?
systemd 在启动时检查单元文件一次,在 systemd 启动之前创建 overlayFS 的初始化脚本可以处理这个用例。
另一个想法(但未测试)是:systemctl daemon-reload
systemctl daemon-reload
我测试这个不行。
以我的情况。我用systemd-networkd,叠加