CentOS/RHEL 7:如何遵循 /etc/fstab 中的挂载顺序

RHEL 7 中的挂载顺序发生了什么变化

随着 RHEL 7 中 systemd 的引入,启动过程变得更快了,因为许多服务和进程现在是并行启动的。
这些后果之一是缺乏一致的文件系统安装顺序。
基于 /etc/fstab 中的条目不再保证它们的安装顺序。
文件系统现在只是另一个 systemd“单元”。
由于进程启动的并行性,具体的目标单元启动顺序并不一致。

在 RHEL7 中,systemd 处理挂载顺序,而不是 /etc/fstab 中挂载条目的顺序。
因此,/etc/fstab 中条目的顺序不必与它们在 RHEL 7 中挂载的顺序相同。
在 RHEL 6 中,在 /etc/fstab 文件中配置文件系统是一件相对简单的事情,指定在你想要安装的东西。

以下是 systemd 手册页的摘录:

Mount units may either be configured via unit files, or via /etc/fstab
(see fstab(5) for details). Mounts listed in /etc/fstab will be
converted into native units dynamically at boot and when the
configuration of the system manager is reloaded. In general,
configuring mount points through /etc/fstab is the preferred approach.
欢迎来到之路教程(on itroad-com)

如何修复挂载顺序

在 RHEL 7 中,文件系统现在只是另一种 systemd“单元”类型。
如果我们碰巧在 /etc/fstab 文件中配置了文件系统,系统将在运行环境的整个生命周期内将这些条目简单地转换为动态“挂载”单元类型。
我们可以在 /run/systemd/generator/ 中看到这些动态创建的系统挂载单元类型

放置用户定义单元的正确位置在 /etc/systemd/system/ 中。
在此处复制每个安装单元,对文件进行任何必要的调整。

注意:当我们在 /etc/systemd/system 目录中添加条目时,从 /etc/fstab 中删除对应的挂载点条目。

要修复安装顺序,请结合使用 Requires 和 After 单元选项。
需要为每个挂载点添加这个用户定义的单元。

例如,对于“数据”挂载点,创建一个文件 /etc/systemd/system/test.mount。

[Unit]
Description= data mount
Requires=tmp.mount
After=tmp.mount
[Mount]
What=/dev/datavg/datalv
Where=/data
Type=ext4
[Install]
WantedBy=multi-user.target

Requires 选项意味着除非 /tmp 文件系统存在,否则不会挂载此文件系统。
After 选项意味着 /test 文件系统将仅在 /tmp 文件系统被挂载后才被挂载。

注意:如果挂载点在文件系统层次结构中的另一个挂载点之下,则会自动创建两个单元之间的依赖关系,因此我们无需创建一个 requires and after entry for /test/test1 仅在 /test 存在且为安装。

日期:2020-09-17 00:12:03 来源:oir作者:oir