Show Table of Contents
2.3. 文件系统布局
Red Hat Enterprise Linux 7 引进了两个文件系统布局的主要变化。
/bin,/sbin,/lib和/lib64目录现在位于/usr目录中。/tmp目录目前可作为临时文件存储系统(tmpfs)使用。- 现在使用
/run目录作为临时文件存储系统(tmpfs)。应用程序现在可以采用与/var/run目录的相同方式使用/run。
2.3.1. root 文件系统的新布局
通常在
/bin 和 /lib 目录中只包含有限的必要内容以避免延缓引导进程。有些程序必须位于 root(/)层以便挂载 /usr 分区。这样会造成其他程序将其内容分散到多个目录层的情况,例如同时位于 /bin 和 /usr/bin 中。
Red Hat Enterprise Linux 7 将
/bin, /sbin, /lib 和 /lib64 目录移到 /usr 中。因为 /usr 文件系统现在可以使用 initramfs,而不是一定要使用 root 层目录中的程序挂载,因此不再需要将软件包内容分散到两个不同目录层中。这样就可以使用一个小得多的 root 文件系统,让系统可以更有效地共享磁盘空间,同时系统也更容易管理、更灵活且更安全。
要减轻这种变化的影响,之前的
/bin 目录现在是一个连接 /usr/bin 的符号链接,/sbin 是连接 /usr/sbin 的符号链接,依此类推。
2.3.1.1. 为升级准备您的文件系统
如果
/usr 目前位于不同的分区,请保证 /usr 分区有足够的空间可以复制 /bin, /sbin, /lib 和 /lib64。
如果
/usr 目前不是位于不同的分区,请保证 / 分区有足够的空间可以对 /bin, /sbin, /lib 和 /lib64 进行恢复复制。
如果
/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
准备完成后,请按照《Red Hat Enterprise Linux 7 按照指南》中的步骤执行升级过程。
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'这个命令输出结果中显示的文件或者目录无法复制到/usr,因为有相同名称的文件或者目录已存在于/usr中。您需要手动解决这些名称冲突。 - 检查下面的目录中您要保留的文件:
/var/run.runmove~/var/lock.lockmove~
如果上述目录中有任何非符号链接,则需要按照 第 2.3.1.3 节 “从失败的升级中恢复” 的恢复过程操作。
2.3.1.3. 从失败的升级中恢复
升级过程失败可能有很多种原因。请检查下面命令的输出结果找出问题所在:
# dmesg # journalctl -ab --full
如果没有出现任何出错信息,请检查:
/是否可写入/usr是否可写入/usr是否正确挂载/是否有足够空间/usr是否有足够空间/var是否挂载到 rhelup 工具中
如需进一步支持服务请联络 Red Hat 支持。
2.3.2. 更换至 /tmp 目录
Red Hat Enterprise Linux 7 可让您使用
/tmp 作为临时文件存储系统(tmpfs)的一个挂载点。
启用该功能后,这个临时存储会以挂载的文件系统出现,但是在易失性内存而不是持久存储设备中保存其内容。除非内存很少,不会在硬盘中保存
/tmp 中的文件,在这种情况下会使用 swap 空间。就是说 /tmp 中的内容在重启后会丢失。
要启用这个功能,请执行以下命令:
# systemctl enable tmp.mount
要禁用这个功能,请执行以下命令:
# systemctl disable tmp.mount
Red Hat 为您推荐 Red Hat Enterprise Linux 7 中使用的各种不同类型的临时存储空间。
- 特权进程,比如守护进程,应使用
/run/processname保存临时数据。 - 保存大量数据的进程,或者需要重启后仍保留的数据,应使用
/var/tmp。 - 其他进程应使用
/tmp保存临时数据。
2.3.3. 更换至 /run 目录
重要
预升级助手(Preupgrade Assistant)尚未检查这个变化对 Red Hat Enterprise Linux 7.0 最初发行本的影响。这个问题曾在 RHBA-2014:1627 做出过修正,请查看:https://rhn.redhat.com/errata/RHBA-2014-1627.html。
Red Hat Enterprise Linux 之前的版本允许一些程序在引导之初,即挂载
/var 目录前将运行时数据保存在 /dev 目录中。在所有主要 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 中查看配置文件。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.