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


14

我需要将特定的行/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

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


4
可能的解决方法(未测试):将最后一个配置为noauto并装入rc.local
jg-faustus

@ jg-faustus谢谢,解决方法似乎成功。
ændrük

@ jg-faustus赏金即将结束,您的解决方法是最接近答案的方法。如果您将其张贴在下面,我会给您+50。
ændrük

Answers:


17

一种选择是将安装推迟到/etc/fstab完成之后,这使您可以完全控制安装顺序。

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

根据手册页,按顺序mount -a装入条目fstab,而添加-F('fork')选项会将它们并行装入。看来标准引导程序正在使用“ fork”,以减少引导时间,因此,我猜想随后进行(半)手动安装是重新获得对安装顺序的控制的最简单方法。


4

我可能会考虑设置一个脚本,该脚本在调用挂载脚本后挂载第二个磁盘。在Ubuntu中,initd是启动操作系统所有组件的服务,称为upstart

它基于事件,这意味着它在启动过程中会查找/等待并发出事件。正如这篇文章指出的那样,initd服务尝试并行执行操作,这可能是导致您出现问题的原因。因此,您可以将脚本设置为在挂载完成并完成处理后直接运行。

挂载脚本保存在/ etc / init /目录中。我也将在其中添加其他安装脚本。查看对启动过程的描述。该站点可能会帮助您以最快的速度盯着自己的脚本。

您需要在自己的脚本中开始上一节。请参阅本节中的其他内容后再开始作业。

我仍在寻找如何自行创建自己的启动脚本的方法,因此我将无济于事。如果您找到有效的解决方案,请将其重新发布在这里。


4

Ubuntu mountall在启动时使用,而不是mount -a。Mountall等待基础设备出现,然后立即在其上安装fs,除非尚未安装其下安装的fs,然后它会等待该fs。

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



1

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

mount在引导过程中挂载文件系统时可能会分叉。如果是这样,将无法确定分区的安装顺序。


1
showthrough没有解决问题。
ændrük
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.