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
Copy to Clipboard Toggle word wrap
重要

您必须确保解决有关分区方案的所有 preupgrade-assistant 结果。

完成准备后,请参阅 安装指南 以了解执行升级过程的更多详情。

2.3.1.2. 验证升级是否成功

执行升级过程后,务必要验证升级是否按预期工作。

  1. 检查是否存在以下符号链接:

    • /bin/usr/bin的符号链接
    • /sbin/usr/sbin的符号链接
    • /lib/usr/lib的符号链接
    • /lib64/usr/lib64的符号链接
    • /var/run/run的符号链接
    • /var/lock/run/lock的符号链接

      如果列出的目录是符号链接的,则需要两个额外的检查。

  2. 检查以下 find 命令的输出结果:

    # find /usr/{lib,lib64,bin,sbin} -name '.usrmove'
    Copy to Clipboard Toggle word wrap

    响应此命令时显示的文件或目录无法复制到 /usr,因为 /usr 中已存在具有相同名称的文件和目录。您需要手动解决这些命名冲突。

  3. 检查以下要保留的文件的目录:

    • /var/run.runmove~
    • /var/lock.lockmove~

如果列出的任何目录不是符号链接,则需要遵循 第 2.3.1.3 节 “从失败的升级中恢复” 中介绍的恢复过程。

2.3.1.3. 从失败的升级中恢复

升级过程可能会因为多个原因失败。检查以下命令的输出结果以查看出错信息:

# dmesg
# journalctl -ab --full
Copy to Clipboard Toggle word wrap

如果没有错误信息,请检查:

  • / 为可写
  • /usr 是可写
  • / 有足够的空间
  • /usr 有足够的空间
  • /varrhelup 工具中挂载

如果您需要进一步帮助,请联系红帽支持团队。

2.3.2. /tmp 目录的更改

Red Hat Enterprise Linux 7 提供了将 /tmp 用作临时文件存储系统的挂载点(tmpfs)的功能。

启用后,这个临时存储显示为挂载的文件系统,但将其内容存储在易失性内存中,而不是存储在持久性存储设备中。/tmp 中的文件不会存储在硬盘上,但当内存较低时,将使用交换空间。这意味着 /tmp 的内容在重启后不会被保留。

要启用此功能,请执行以下命令:

# systemctl enable tmp.mount
Copy to Clipboard Toggle word wrap

要禁用这个功能,请执行以下命令:

# systemctl disable tmp.mount
Copy to Clipboard Toggle word wrap

红帽建议在 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 中的配置文件。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat