我正在管理基于 Ubuntu 16.04 的 VM(运行 KVM/libvirt)。该服务器托管着我们部门内部使用的一些虚拟机。
所有虚拟机都使用我们公司的 Samba 服务器来存储各种数据。
昨晚停电期间,我发现机器的启动速度比它们所需的 Samba 服务器快得多,这导致虚拟机上的大量服务失败。
我不想逐个虚拟机地修补它,而是希望能够指示我的虚拟机主机在重新启动后启动所有虚拟机之前等待 CIFS 服务器(基本上,我想让 libvirt -guests.service 依赖于 mnt-SHARENAME.mount)。
我知道我可以在 /lib/systemd/system/libvirt-guests.service 中添加依赖项,但我不确定这是否是 systemd 批准的方法。还有其他方式来表达依赖性吗?
答案1
您可以创建一个虚拟的“运行一次”服务,该服务位于它们之间。
xinetd
就我而言,我遇到了和 的问题NFS
(xinetd 在 NFS 文件系统安装之前启动,因此某些服务无法启动)。我把它和一个文件拼凑在一起/lib/systemd/system/fix-xinetd-nfs-dependency.service
[Unit]
Description=Make xinetd wait for NFS otherwise it can not start services
After=remote-fs.target
Before=xinetd.service
[Service]
Type=oneshot
ExecStart=/bin/true
[Install]
WantedBy=multi-user.target
一旦你创建了你的服务(让Before
和After
行反映你的要求),那么你就可以systemctl enable
......幸运的是这将运行前您的 VM 已启动并且您的 samba 文件系统可用!