如何指定文件系统自动挂载的顺序?

如何指定文件系统自动挂载的顺序?

我需要一个特定的行/etc/fstab始终安装在另外两行之后:

# Always mount these first
UUID=fdf38dd4-9e9d-479d-b830-2a6989958503 / ext4 noatime,discard,errors=remount-ro 0 1
UUID=2b548eb8-fa67-46ce-a998-91d587dba62f /home/.hdd ext4 errors=remount-ro 0 2

# Always mount this second
none /home/ak aufs br:/home/.ssd/ak=rw:/home/.hdd/ak=rw 0 0

当前的行为是经常以不可预测的方式反转最后两行的顺序。我该如何指定必要的顺序?

答案1

一个选项是推迟安装直至/etc/fstab完成,这样您就可以完全控制安装顺序。

只需添加noauto到 fstab 中的挂载选项,然后挂载即可rc.local

根据手册页mount -a按顺序挂载条目fstab,而添加-F('fork') 选项将并行挂载它们。看来标准启动使用 'fork',大概是为了减少启动时间,所​​以我猜事后(半)手动挂载是重新控制挂载顺序的最简单方法。

答案2

Systemd 现在包含一个强制挂载顺序的依赖选项。根据您的情况,添加 fstab 参数:

x-systemd.requires-mounts-for=/,x-systemd.requires-mounts-for=/home/.hdd

如果您需要在其他已安装的文件系统上安装,noauto 选项将不起作用。就我而言,上述方法有效,请参阅提交https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823更多细节。

答案3

Ubuntumountall在启动时使用,而不是mount -a。Mountall 等待底层设备出现,然后立即在其上挂载 fs,除非它正在挂载的 fs 尚未挂载,否则它会等待该 fs。

您应该能够通过设置 3 个文件系统的挂载点来获得所需的顺序,使它们一个接一个地堆叠在一起。不要将这三个都挂载到 /home/.something 中,而是将第一个放在 /home/.x 中,将第二个放在 /home/.x/.y 中,将第三个放在 /home/.x/.y/.z 中。

答案4

根据man fstab,该showthrough选项可能正是您要找的。尝试将其设置在 /home/ak 上,看看是否有效。

在启动期间挂载文件系统时可能会出现mount分叉;如果是这样,则分区的挂载顺序将是未定义的。

相关内容