在带有 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?
如何修复?