2.3. 文件系统布局
Red Hat Enterprise Linux 7 对文件系统的布局进行了两个主要更改。
-
/bin、/sbin、/lib和/lib64目录现在位于/usr目录中。 -
/tmp目录现在可以用作临时文件存储系统(tmpfs)。 -
/run目录现在用作临时文件存储系统(tmpfs)。应用程序现在可以使用/run与使用/var/run目录相同的方式。
2.3.1. root 文件系统的新布局 复制链接链接已复制到粘贴板!
通常,/bin 和 /lib 目录中仅包括最小的必要的内容,以避免减慢引导过程的速度。有些实用程序需要位于根(/)级别才能挂载 /usr 分区。这样一来,其他实用程序会将其内容分散到多个目录级别,例如在 /bin 和 /usr/bin 中。
Red Hat Enterprise Linux 7 将 /bin、/sbin、/lib 和 /lib64 目录移动到 /usr 中。因为 /usr 文件系统现在可以由 initramfs 而不是由 root 级别目录中的实用程序挂载,所以不再需要在两个不同的目录级别间分割软件包内容。这可实现更小的根文件系统,启用可以更有效地共享磁盘空间的系统,以及更容易维护、更灵活和更安全的系统。
要减少这个更改的影响,以前的 /bin 目录现在是 /usr/bin 的符号链接,/sbin 到 /usr/sbin,以此类推。
2.3.1.1. 为升级准备文件系统 复制链接链接已复制到粘贴板!
请注意,如果 /usr 位于独立分区,则无法进行原位升级。如果您决定将 /usr 从独立分区中移出,请注意这是您自己的风险。
如果 /var 位于独立分区中,则必须手动将 /var/run 和 /var/lock 转换为符号链接:
mv -f /var/run /var/run.runmove~ ln -sfn ../run /var/run mv -f /var/lock /var/lock.lockmove~ ln -sfn ../run/lock /var/lock
# mv -f /var/run /var/run.runmove~
# ln -sfn ../run /var/run
# mv -f /var/lock /var/lock.lockmove~
# ln -sfn ../run/lock /var/lock
您必须确保解决有关分区方案的所有 preupgrade-assistant 结果。
完成准备后,请参阅 安装指南 以了解执行升级过程的更多详情。
2.3.1.2. 验证升级是否成功 复制链接链接已复制到粘贴板!
执行升级过程后,务必要验证升级是否按预期工作。
检查是否存在以下符号链接:
-
/bin是/usr/bin的符号链接 -
/sbin是/usr/sbin的符号链接 -
/lib是/usr/lib的符号链接 -
/lib64是/usr/lib64的符号链接 -
/var/run是/run的符号链接 /var/lock是/run/lock的符号链接如果列出的目录是符号链接的,则需要两个额外的检查。
-
检查以下 find 命令的输出结果:
find /usr/{lib,lib64,bin,sbin} -name '.usrmove'# find /usr/{lib,lib64,bin,sbin} -name '.usrmove'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 响应此命令时显示的文件或目录无法复制到
/usr,因为/usr中已存在具有相同名称的文件和目录。您需要手动解决这些命名冲突。检查以下要保留的文件的目录:
-
/var/run.runmove~ -
/var/lock.lockmove~
-
如果列出的任何目录不是符号链接,则需要遵循 第 2.3.1.3 节 “从失败的升级中恢复” 中介绍的恢复过程。
2.3.1.3. 从失败的升级中恢复 复制链接链接已复制到粘贴板!
升级过程可能会因为多个原因失败。检查以下命令的输出结果以查看出错信息:
dmesg journalctl -ab --full
# dmesg
# journalctl -ab --full
如果没有错误信息,请检查:
-
/为可写 -
/usr是可写 -
/有足够的空间 -
/usr有足够的空间 -
/var在 rhelup 工具中挂载
如果您需要进一步帮助,请联系红帽支持团队。
2.3.2. /tmp 目录的更改 复制链接链接已复制到粘贴板!
Red Hat Enterprise Linux 7 提供了将 /tmp 用作临时文件存储系统的挂载点(tmpfs)的功能。
启用后,这个临时存储显示为挂载的文件系统,但将其内容存储在易失性内存中,而不是存储在持久性存储设备中。/tmp 中的文件不会存储在硬盘上,但当内存较低时,将使用交换空间。这意味着 /tmp 的内容在重启后不会被保留。
要启用此功能,请执行以下命令:
systemctl enable tmp.mount
# systemctl enable tmp.mount
要禁用这个功能,请执行以下命令:
systemctl disable tmp.mount
# systemctl disable tmp.mount
红帽建议在 Red Hat Enterprise Linux 7 中为各种临时存储空间使用。
-
特权进程(如守护进程)应使用
/run/processname来存储临时数据。 -
存储大量数据或需要临时数据在重新引导后持久保留的进程应使用
/var/tmp。 -
所有其他进程都应该使用
/tmp来存储临时数据。
2.3.3. /run 目录的变化 复制链接链接已复制到粘贴板!
在 Red Hat Enterprise Linux 7.0 的初始发行版本中,Preupgrade Assistant 还没有检查这些变化的影响。RHBA-2014:1627 解决了这个问题,https://rhn.redhat.com/errata/RHBA-2014-1627.html。
以前的 Red Hat Enterprise Linux 版本允许一些程序在早期引导时将运行时数据存储在 /dev 目录中,然后再挂载 /var 目录。在主要的 Linux 发行版之间认为 /run 应该被使用,因为 /dev 目录应该只用于设备节点。
因此,在 Red Hat Enterprise Linux 7 中,/run 目录是一个临时文件存储系统(tmpfs),它绑定挂载 /var/run 目录。同样,/run/lock 目录现在绑定挂载 /var/lock 目录。存储在 /run 和 /run/lock 中的文件不再是持久性,重启后不会保留。这意味着,应用程序必须在启动时重新创建自己的文件和目录,而不是在安装时重新创建这些文件和目录。一个 /etc/app_name 目录是理想的选择。
有关如何在启动时重新创建文件和目录的详情,请查看 tmpfiles.d man page: man tmpfiles.d。有关配置示例,请查看 /etc/tmpfiles.d 中的配置文件。