为什么这个 systemd 服务没有在正确的时间运行(从网络驱动器加载 lxc 容器所需的加密密钥)?

为什么这个 systemd 服务没有在正确的时间运行(从网络驱动器加载 lxc 容器所需的加密密钥)?

在带有 systemd 的 Debian 中,我使用 zfs 和 lxc。我的 zfs 数据集已加密,可以通过我的脚本从网络主机加载其密钥/etc/zfs/zfs-load-key.sh。我的 LXC 容器由 启动lxc.service

加载密钥需要网络启动并运行(否则我会收到“没有到主机的路由”的错误),但 lxc.service 需要加载密钥。

听起来很简单,但事实并非如此。我创建了这个文件:/etc/systemd/system/[email protected]

[Unit]
Description=Load %I encryption keys from network host
DefaultDependencies=no
Before=zfs-mount.service lxc.service
After=zfs-import.target network-online.target
Requires=zfs-import.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/zfs/zfs-load-key.sh %I

[Install]
WantedBy=zfs-mount.service lxc.service

并通过以下方式启用它们:

systemctl enable [email protected]
systemctl enable [email protected]

由于某种原因,我的 LXC 容器无法启动,因为密钥尚未加载,尽管我已经加载了Before=... lxc.service

为什么这个服务没有在正确的时间运行,即网络已启动,lxc?

如何修复?

相关内容