问题
在 CentOS/RHEL 7 上,任何文件系统卷都不会按照 /etc/fstab 条目的顺序安装。
解决方案
与 CentOS/RHEL 6 及更早版本不同,在 CentOS/RHEL 7 上,启动过程更快。
由于进程启动的并行特性,特定的目标单元启动顺序是不确定的。
所有文件系统都是一个 systemd 单元,因此它们的挂载顺序不再按照 /etc/fstab 条目。
文件系统是系统“单元”类型。
更具体地说,它们是“mount”类型的单元。
当文件系统名称在 /etc/fstab 中给出时,系统会将这些条目转换为动态“挂载”单元类型。
按顺序挂载文件系统
要按顺序挂载文件系统,请创建挂载单元并将它们放在 /etc/systemd/system/ 中。
动态创建的挂载单元类型位于 /run/systemd/generator/ 位置。
复制 /run/systemd/generator/ 目录中的单元文件以用作静态文件的模板。
创建挂载单元文件后,将文件复制到位置 /etc/systemd/system/。
以下是在 CentOS/RHEL 7 系统中设置挂载顺序的一些示例:
文件名:/etc/systemd/system/test-data1.mount
# cat /etc/systemd/system/test-data1.mount [Unit] Description=My test mount Requires=boot.mount tmp.mount After=boot.mount tmp.mount [Mount] What=/dev/datavg/data1lv Where=/test/data1 Type=xfs [Install] WantedBy=multi-user.target
“Requires”选项意味着除非 /boot 和 /tmp 文件系统存在,否则不会挂载此文件系统。
“After”选项意味着 /test/data1 文件系统将只在 /boot 和 /tmp 文件系统被挂载后才被挂载。
现在查看 /test/data1/data2 文件系统单元文件。
文件名:/etc/systemd/system/test-data1-data2.mount
# cat /etc/systemd/system/test-data1-data2.mount [Unit] Description=My test mount 2 [Mount] What=/dev/datavg/data2lv Where=/test/data1/data2 Type=xfs [Install] WantedBy=multi-user.target
请参考 systemd.mount 手册页。
# man systemd.mount "If a mount point is beneath another mount point in the file system hierarchy, a dependency between both units is created automatically."
test-data1.mount 单元首先被配置和挂载,test-data1-data2.mount 单元将始终在之后被挂载。
尽管这里在引导顺序中考虑了 /etc/fstab 顺序。
手动“mount”命令将其视为上述步骤。