我有一个单一卷的 CIFS 安装,然后绑定安装了 2 个子目录。启动时,systemd 抱怨“排序周期”,并且无法安装其中 1 个绑定,但另一个工作正常。如果我运行mount -a
,则会安装缺少的绑定。我已经能够在新的虚拟机中重新创建此行为。
/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
在绑定安装上指定,但没有任何改变。我不知道下一步该去哪里解决这个问题。
答案1
我不确定为什么其中一个绑定安装座能够工作。以下是我的建议,为什么两者可能同时失败,以及如何修复它:
您的networking.service
顺序位于本地文件系统之后。绑定挂载被视为本地文件系统。但是,绑定挂载也是在网络挂载之后排序的 - systemd 会自动为绑定挂载添加这些逻辑依赖项。
在这种情况下,您需要告诉systemd
绑定挂载实际上是网络挂载。对于这种情况,有一个特意的选择。只需将安装选项添加_netdev
到绑定安装即可。有关更多信息,该选项在 中定义man systemd.mount
。