在https://askubuntu.com/a/119818/5032qbi 说:
将 noauto 添加到您的 fstab:
...
因此文件系统不会在启动时自动挂载。此外,你还需要编写一个脚本,该脚本基本上会挂载你的 mhddfs,并在启动过程的某个后期点添加它。
但是你该怎么做呢?我的 mergerfs 从不在启动时挂载所有驱动器,大概是因为在启动之前它们没有挂载?它是 fstab 中的最后一项,如下所示(但有更多驱动器):
/mnt/EXT4_drive/drivepool:/mnt/NTFS_drive/drivepool:/mnt/anotherdrive/drivepool /mnt/drivepool fuse.mergerfs defaults,allow_other,minfreespace=100M 0 0
当我df
在启动后运行时,驱动器名称仅显示包含部分挂载点,以及所有挂载点应具有的一小部分空间,因此如果它们尚未准备好,则不会包含在内?我必须sudo umount /mnt/drivepool ; sudo mount /mnt/drivepool
在启动后手动运行以修复它并显示所有挂载点。
此外,当计算机尝试安装时,其中一个驱动器被自动 fscked,计算机不止一次启动到“欢迎使用紧急模式!” /mnt/drivepool
。最近没有发生这种情况,可能是因为 mergerfs 发生了变化,让它忽略未就绪的驱动器,而不是因为它们而停止运行?
我将如何/mnt/drivepool
尽快自动安装后fstab 中的其他所有内容是否均已成功挂载并进行 fsck 处理?
答案1
好的,经过大量阅读后:
从 Ubuntu 15.04 开始,fstab
条目被转换为systemd
单元(*.mount
在下找到的文件/run/systemd/generator
)systemd-fstab-generator
,然后以无特定顺序安装,这就是我失败的原因。
但是systemd
支持依赖项,可以使用 fstab 选项指定这些依赖项x-systemd.requires
。
x-systemd.requires=
配置已创建的挂载单元与另一个 systemd 单元(例如设备或挂载单元)之间的 Requires= 和 After= 依赖关系。参数应为单元名称,或设备节点或挂载点的绝对路径。此选项可以多次指定。此选项对于需要附加设备(例如日志文件系统的外部日志设备)或需要附加挂载的挂载点声明特别有用(例如合并多个挂载点的覆盖文件系统). 请参阅 systemd.unit(5) 中的 After= 和 Requires= 了解详情。
因此,对于每个先决条件挂载,您都需要向 fstab 挂载添加单独的条目,并且它可以理解路径名:
x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,...
在我的第一次尝试中,我遗漏了 ,/mnt/
结果我的电脑拒绝启动并变为只读。ಠ_ಠ 为了防止这种情况,您还应该添加nofail
。这会使挂载点成为“想要”local-fs.target
而不是“需要”,因此即使发生故障,计算机仍会启动。
然后当你这样做的时候mount -a
它会抱怨
fuse: unknown option `nofail'
但它仍然有效。ಠ_ಠ
这是我的完整 fstab 行,自从我更改它以来,它每次都有效:
/mnt/EXT4_backup/drivepool:/mnt/WIN7_BACKUP/drivepool:/mnt/XP/drivepool:/mnt/NTFS_3TB/drivepool /mnt/drivepool fuse.mergerfs nofail,defaults,allow_other,minfreespace=100M,x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,x-systemd.requires=/mnt/EXT4_backup,x-systemd.requires=/mnt/WIN7_BACKUP 0 0