Ubuntu / systemd 在启动时无法挂载 bindfs 挂载

Ubuntu / systemd 在启动时无法挂载 bindfs 挂载

在作为 KVM VM 运行的 Ubuntu 20.04.3 LTS 服务器上,我定义了 4 个自定义挂载点以访问主机的文件系统。其中两个是 9p 挂载,两个是 bindfs 挂载,用于修复 9p 挂载(即将服务器用户/组映射到本地用户/组并修复权限)。以下是/etc/fstab四个挂载的代码片段:

gdrive /mnt/gdrive 9p rw,sync,_netdev,trans=virtio,version=9p2000.L 0 0
/mnt/gdrive /home/user/gdrive fuse.bindfs perms=0775,force-user=user,force-group=user,x-systemd.requires=/mnt/gdrive 0 0
dump /mnt/storage 9p rw,sync,_netdev,trans=virtio,version=9p2000.L 0 0
/mnt/storage /home/user/storage fuse.bindfs perms=0775,force-user=user,force-group=user,x-systemd.requires=/mnt/storage 0 0

两个 9p 挂载在重新启动后都能正常工作,但其中一个 bindfs 挂载始终失败。它们中的任何一个都不会同时工作或同时失败。我怀疑系统会从 fstab 自动生成服务文件,但不知道如何调试或验证。

挖掘 dmesg 我发现以下内容(在启动时~/storage无法挂载):

user@server:~$ dmesg | grep 'gdrive'
[    3.842312] systemd[1]: remote-fs-pre.target: Found dependency on home-user-gdrive.mount/start
[    3.843378] systemd[1]: remote-fs-pre.target: Found dependency on mnt-gdrive.mount/start

然而,

user@server:~$ dmesg | grep 'storage'
[    3.849405] systemd[1]: local-fs.target: Found ordering cycle on home-user-storage.mount/start
[    3.850602] systemd[1]: local-fs.target: Found dependency on mnt-storage.mount/start
[    3.857836] systemd[1]: local-fs.target: Job home-user-storage.mount/start deleted to break ordering cycle starting with local-fs.target/start

当其他 bindfs 失败时,会显示相同的消息(使用其他挂载点)。手动挂载文件系统不会出现任何错误。

答案1

认为从 fstab 自动生成服务不知怎么坏了,我把它加到了systemd.requires第三个支架上(实际上构成了一条链)。经过几次测试重启后,它似乎可以正常工作了。

gdrive /mnt/gdrive 9p rw,sync,_netdev,trans=virtio,version=9p2000.L 0 0
/mnt/gdrive /home/user/gdrive fuse.bindfs perms=0775,force-user=user,force-group=user,x-systemd.requires=/mnt/gdrive 0 0
dump /mnt/storage 9p rw,sync,_netdev,trans=virtio,version=9p2000.L,x-systemd.requires=/home/user/gdrive 0 0
/mnt/storage /home/user/storage fuse.bindfs perms=0775,force-user=user,force-group=user,x-systemd.requires=/mnt/storage 0 0

相关内容