我有一个单个卷的 CIFS 挂载,然后有 2 个子目录绑定挂载。启动时,systemd 抱怨“订购周期”并且无法挂载 1 个绑定,但另一个工作正常。如果我运行mount -a
,则会安装缺少的绑定。我已经能够在新的 VM 中重新创建此行为。
/etc/fstab
//server.example.com /mnt/media cifs [snip] 0 0
/mnt/media/secure /var/www/media/secure none bind 0 0
/mnt/media/public /var/www/media/public none bind 0 0
绑定挂载没有改变,这些是实际名称。我不知道如何,但是,我认为这可能很重要,可能是由于排序顺序,因为当我更改顺序时,fstab
只有public
绑定挂载失败。secure
总是有效。
日记中的日志
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on var-www-media-public.mount/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on mnt-media.mount/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on network-online.target/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on networking.service/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Found dependency on local-fs.target/start
Mar 19 14:06:45 ubuntu systemd[1]: local-fs.target: Breaking ordering cycle by deleting job var-www-media-public.mount/start
Mar 19 14:06:45 ubuntu systemd[1]: var-www-media-public.mount: Job var-www-media-public.mount/start deleted to break ordering cycle starting with local-fs.target/start
我试过x-systemd.requires=/mnt/media
在绑定挂载上指定,但没有改变。我不知道下一步该去哪里解决这个问题。
我不确定为什么即使其中一个绑定安装也能够工作。这是我的建议,为什么两者都可能一起失败,以及如何解决它:
您
networking.service
是在本地文件系统之后订购的。绑定挂载被视为本地文件系统。但是,绑定挂载也是在网络挂载之后排序的——systemd 会自动为绑定挂载添加这些逻辑依赖项。在这种情况下,您需要告诉
systemd
绑定挂载实际上是网络挂载。对于这种情况,有一个选择。只需将挂载选项添加_netdev
到绑定挂载即可。有关详细信息,此选项在 中定义man systemd.mount
。