从 RHEL 6 升级至 RHEL 8

Red Hat Enterprise Linux 8

把 Red Hat Enterprise Linux 6 原位(in-place)升级到 Red Hat Enterprise Linux 8

摘要

本文档提供了如何进行把 Red Hat Enterprise Linux (RHEL) 6 原位升级到 RHEL 8 的步骤。升级到 RHEL 8 分为两个阶段。首先需要将系统从 RHEL 6 升级到 RHEL 7,然后再升级到 RHEL 8。

前言

本文档会包括到以下现有文档的参考引用:

本文档还包含与从 RHEL 6 升级到 RHEL 8 相关的附加说明。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。要做到这一点:

  • 关于特定内容的简单评论:

    1. 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
    2. 用鼠标指针高亮显示您想评论的文本部分。
    3. 点在高亮文本上弹出的 Add Feedback
    4. 按照显示的步骤操作。
  • 要提交更复杂的反馈,请创建一个 Bugzilla ticket:

    1. 进入 Bugzilla 网站。
    2. 在 Component 中选择 Documentation
    3. Description 中输入您要提供的信息。包括文档相关部分的链接。
    4. Submit Bug

主要迁移术语

尽管以下与迁移相关的术语在软件业中常用,但这里的定义特定于 Red Hat Enterprise Linux (RHEL)。

Update(更新)

更新(有时称为软件补丁)是您正在运行的应用程序、操作系统或软件的一个补充。软件更新用于解决存在的问题或漏洞,以便提供更好的使用体验。在 RHEL 中,更新与次版本相关,例如,从 RHEL 8.1 更新到 8.2。

Upgrade(升级)

升级是使用一个新的版本替换当前运行的应用程序、操作系统或软件的版本。通常情况下,您需要首先根据红帽的指导对数据进行备份。升级 RHEL 时,有两个选项:

  • 原位升级(In-place upgrade):在原位升级过程中,您可以在不先删除旧版本的情况下将旧版本替换为新版本。安装的应用程序和实用程序,以及相关的配置和首选项都会融合到新版本中。
  • 全新安装(Clean install):干净安装会删除之前安装的操作系统、系统数据、配置和应用程序的所有数据,并安装最新版本的操作系统。如果您不需要之前的数据或应用程序,或者您要部署的新项目不依赖于以前的构建,则全新安装是一个理想的选择。

操作系统转换

转换是将操作系统从不同的 Linux 发行版转换为 Red Hat Enterprise Linux。通常情况下,您需要首先根据红帽的指导对数据进行备份。

Migration(迁移)

通常,迁移表示对平台(软件或硬件)进行更改。从 Windows 变为 Linux 是一种迁移.用户从使用一个笔记本电脑换为使用另外一个笔记本电脑,公司从使用一个服务器换为使用另一台服务器,都是迁移。但是,大多数迁移都涉及到升级,因此有时此术语可以互换使用。

  • 迁移到 RHEL:将现有操作系统转换到 RHEL
  • 跨 RHEL 迁移:从一个 RHEL 升级到另一个版本

第 1 章 计划升级

建议使用原位升级的方法将您的系统升级到新的 RHEL 主版本。

重要

在开始计划升级前,红帽建议您阅读此文档以及其中链接的其他文档,以防止在升级过程中出现在已对系统进行了一些改变后无法继续升级过程的问题。请额外注意,您的系统需要满足本文档中描述的要求,并了解已知的限制。

1.1. 要求

以下是从 RHEL 6 升级到 RHEL 8 的系统必须满足的一般标准:

  • 构架是 Intel 64 或 64 位 IBM Z。
  • 已安装 RHEL Server。
  • 禁用 FIPS 模式。
  • 系统不包含 LUKS 加密的分区或卷。
  • 满足 RHEL 8 的最低硬件要求
  • 可以访问提供 RHEL 6、RHEL 7 和 RHEL 8 内容的软件仓库。

请注意,可能还有其他要求和限制。详情请查看:

1.2. 注意事项

请在升级前考虑以下问题:

  • RHEL 主要发行版本间的显著变化

    详情请查看:

  • 不是由红帽发布的应用程序

    如果您要升级的系统上运行了不是由红帽发布的应用程序,请考虑以下几点:

    • 对于基于 RPM 的应用程序:

      • 您需要与特定目标版本兼容的软件包。
      • 这些软件包,包括依赖软件包,可在您可访问的软件仓库中找到。
    • 对于不是基于 RPM 的应用程序:

      • 在这两个主要版本升级过程中可能已经改变了依赖关系和库。请确定在具体目标版本中提供了依赖软件包和库。
      • 如果应用程序使用解释语言(如 Python 或 Ruby)编写,请查看目标版本中是否包括了所有需要的库。

1.3. 升级过程概述

RHEL 6 原位升级到 RHEL 8 需要以下主要步骤:

  1. 为 RHEL 6 系统进行准备,将 RHEL 6 系统更新到 RHEL 6.10 的最新版本。
  2. 对 RHEL 6 系统进行升级前评估,并解决报告的问题。
  3. 执行到 RHEL 7.9 的原位升级。
  4. 准备 RHEL 7 系统以升级到 RHEL 8,并将 RHEL 7 系统更新至 RHEL 7.9 的最新版本。
  5. 对 RHEL 7 系统进行升级前评估,并解决在这个阶段中发现的问题。
  6. 执行到 RHEL 8.4 的原位升级。
  7. 检查升级的系统状态。

具体步骤请查看以下章节。

第 2 章 准备 RHEL 6 系统以升级到 RHEL 7

本节概述了准备 RHEL 6 系统以升级到 RHEL 7 所需的步骤。

要为 RHEL 6 系统准备 RHEL 7 的原位升级,请执行以下步骤:

  1. 备份 RHEL 6 系统,并确保备份可以被恢复。

    有关在您的环境中创建备份的详情,请查看您的备份软件文档。以下列表提供有关备份和恢复的其他资源:

  2. 将 RHEL 6 系统更新至 RHEL 6.10,并重启主机:

    # yum update
    # reboot
  3. 启用 RHEL 6 Extras 软件仓库,并安装升级到 RHEL 7 所需的工具。详情请查看 Upgrading from RHEL 6 to RHEL 7 文档中的为升级准备 RHEL 6 系统 部分

第 3 章 从 RHEL 6.10 升级到 RHEL 7.9

本节介绍了从 RHEL 6 原位升级到 RHEL 7 的关键步骤。

原位升级包括两个主要阶段:对系统进行预升级评估,以及实际的原位升级:

  • 在预升级阶段,Preupgrade Assistant 会从系统中收集信息,分析这些信息,并推荐可能需要进行修正的动作。Preupgrade Assistant 不会对您的系统进行任何更改。
  • 在原位升级阶段,Red Hat Upgrade Tool 安装 RHEL 7 软件包,并在可能的情况下调整基本配置。

执行 RHEL 6 到 RHEL 7 的原位升级:

  1. 使用 Preupgrade Assistant 评估您系统的可升级性,并在进行升级前解决报告发现的问题。具体步骤,请参阅 Upgrading from RHEL 6 to RHEL 7 文档中的评估升级适用性 部分。
  2. 使用 Red Hat Upgrade Tool 升级到 RHEL 7.9。具体步骤,请参阅 Upgrading from RHEL 6 to RHEL 7 文档中的 将您的系统从 RHEL 6 升级到 RHEL 7 部分。

第 4 章 准备 RHEL 7 系统以升级到 RHEL 8

本节论述了在升级到 RHEL 8 前,需要在 RHEL 7 系统上执行的操作。

要让 RHEL 7 系统准备升级到 RHEL8,请按照以下步骤执行:

  1. 将 GRUB Legacy 引导装载程序迁移到 GRUB2

    升级后,RHEL 7 仍然使用 GRUB Legacy 引导装载程序。但是,RHEL 7 及更高版本不支持 GRUB Legacy。因此,您必须手动将引导装载程序迁移到 GRUB2 中。详情请查看 RHEL 7 System Administrator’s Guide 中的从 GRUB Legacy 升级到 GRUB 2 部分。

  2. 解决安装的软件包中潜在的问题。详情请查看 第 7.1 节 “确保安装的软件包与当前的主要 RHEL 版本匹配”
  3. 将自定义 System VUpstart 脚本调整为 systemd 服务。

    在 RHEL 7 系统中,systemd 替换了 Upstart 作为 init 系统。要使用 systemd 提供的功能,比如在引导时并行启动系统服务,请手动将旧的 System VUpstart 脚本转换为 systemd 服务。详情请查看 将传统 sysV 初始化脚本转换到 Red Hat Enterprise Linux 7 systemd 单元文件

  4. 更新脚本中系统目录的路径。

    在 RHEL 7 系统中, /bin/sbin/lib/lib64 目录已被替换为 /usr 中对应的目录的符号链接。例如,在 RHEL 8 中 /bin/usr/bin/ 目录的符号链接。

    如果您使用希望 /bin/sbin/lib/lib64 的脚本或应用程序成为真实目录,请相应地调整它们。例如,您可以将脚本和应用程序更新为:

    • 使用 /usr 中的路径,如 /usr/bin/
    • 接受 /bin/sbin/lib/lib64 是符号链接而不是目录
  5. 更新您的 YUM 脚本和插件以使用 YUM 4 API。

    RHEL 8 不再支持 YUM 3 的 Python API。如果使用任何使用传统 API 的脚本或 YUM 插件,请将其迁移到 YUM 4 API。如需更多信息,请参阅 YUM 堆栈的主要变化

  6. 如果在升级后丢失了一些软件包,请参阅 Troubleshooting 章节中的 第 7.3 节 “升级至 RHEL 7 后安装缺少的软件包” 部分。
  7. 参阅 RHEL 8 的注意事项文档中的内容,并根据需要对系统进行相应修改。
  8. 将您的系统更新至最新的 RHEL 7.9 版本并重启主机:

    # yum update
    # reboot
  9. 确保配置了所有应用程序和服务,并按照预期工作。例如,如果您在主机上运行 DNS 服务器,请验证在升级后该配置是否仍然有效,且该服务是否与升级前相同。
  10. 按照 Upgrading from RHEL 7 to RHEL 8 文档中为 升级准备 RHEL 7 系统章节中描述的步骤进行操作。

第 5 章 从 RHEL 7.9 升级到 RHEL 8

这部分论述了如何将 RHEL 7 主机更新至 RHEL 8。请注意,RHEL 版本 7.9 是升级到 RHEL 8.4 的先决条件。

与从 RHEL 6 升级到 RHEL 7 类似,原位升级由两个主要阶段组成:进行预升级评估(它不会对系统进行任何改变),以及实际的原位升级。如果是从 RHEL 7 升级到 RHEL 8,则这两个阶段都由 Leapp 程序处理。

执行从 RHEL 7.9 升级到 RHEL 8.4 的原位升级:

  1. 评估您的系统可升级性,并修复报告的问题 ,如 Upgrading from RHEL 7 to RHEL 8 文档的预升级报告 中所述。
  2. 根据 Upgrading from RHEL 7 to RHEL 8 文档中的执行 RHEL 7升级到 RHEL 8 中的说明,将 RHEL 7 系统升级到 RHEL 8。

其它资源

第 6 章 执行升级后的任务

本节建议您在将系统升级到 RHEL 8 后应该执行的主要操作。

将您的系统升级至 RHEL 8 后,需要特别完成以下任务:

  1. 检查升级的系统状态。有关推荐步骤列表,请参阅 Upgrading from RHEL 7 to RHEL 8 文档中的验证 RHEL 8 系统升级后的状态
  2. 执行主要的推荐任务以确保您的系统被支持。有关推荐的步骤列表,请参阅 Upgrading from RHEL 7 to RHEL 8 文档中的执行后升级任务章节。
  3. 重新检查并重新应用您的安全策略。具体步骤,请参阅 Upgrading from RHEL 7 to RHEL 8 文档中的 应用安全策略部分。
  4. 恢复文件系统中的默认 SELinux 安全上下文:

    # restorecon -Rv /

    请注意,恢复 SELinux 安全上下文在大型文件系统中可能非常耗时。另外,您可以使用 -e directory 参数排除大文件系统或远程文件系统。详情请查看 restorecon(8) man page。

  5. 手动迁移升级期间没有处理的应用程序。这适用于基础 RHEL 中提供的应用程序和 Red Hat Software CollectionsRed Hat Developer ToolsetRed Hat Developer Tools 提供的应用程序。

    在 RHEL 8 主机中,很多用户空间组件以 Application Streams 的形式分发。有关使用 Application Streams 的详情,请参考 安装、管理和删除用户空间组件文档。

    有关迁移说明,请参阅红帽客户门户网站中的 RHEL 8 文档 中有关相关组件的 RHEL 8 文档,例如数据库,请参阅 Deploying different types of servers 文档中的数据库服务器章节。

  6. 解决安装的软件包中潜在的问题。详情请查看 第 7.1 节 “确保安装的软件包与当前的主要 RHEL 版本匹配”

第 7 章 故障排除

这部分论述了如何在从 RHEL 6 升级到 RHEL 7 和 RHEL 7 升级到 RHEL 8 后排除并解决与软件包相关的问题。

7.1. 确保安装的软件包与当前的主要 RHEL 版本匹配

确保只安装为当前安装的主 RHEL 版本构建的软件包:

  1. 在不同的 RHEL 版本中显示安装的软件包:

    • 在 RHEL 7 中,请输入:

      # rpm -qa | grep -e '\.el6' | grep -vE '^(gpg-pubkey|katello-ca-consumer)' | sort
    • 在 RHEL 8 中,请输入:

      # rpm -qa | grep -e '\.el[67]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
  2. 删除或者替换上一步中报告的软件包,因为它们不被支持。详情请查看 如何安装来自不同 RHEL 版本的软件包?文档。

    如果上一步中的命令没有显示任何输出结果,则会为已安装的主 RHEL 版本构建所有安装的软件包,且不需要进一步的操作。

  3. 对 RHEL 8 执行原位升级后,删除 kernel-workaround 软件包:

    # yum -y remove kernel-workaround

7.2. 修复依赖关系错误

原位升级后,有可能被安装的软件包的依赖软件包已被升级工具程序删除。要解决这个问题:

  1. 找出与依赖关系相关的错误:

    # yum check dependencies

    如果该命令没有显示输出结果,则不需要进一步的操作。

  2. 要修复依赖关系错误,请重新安装受影响的软件包。在此操作中,yum 工具会自动安装缺少的依赖软件包。如果库中没有所需的依赖软件包,请手动安装这些软件包。

7.3. 升级至 RHEL 7 后安装缺少的软件包

如果您在 RHEL 6 升级到 RHEL 7 后丢失了某些软件包,您可能没有向 Red Hat Upgrade Tool 提供包含这些软件包的软件仓库。要在升级后安装这些软件包,可以使用以下命令:

# cd /root/preupgrade
# bash noauto_postupgrade.d/install_rpmlist.sh kickstart/RHRHEL7rpmlist_kept

请注意,不同的问题可能会阻止安装 RPM。如果出现这种情况,请解决相关的问题。有关您应该在升级的系统上安装的软件包列表的其它文件详情,请查看/root/preupgrade/kickstart/README 文件和预升级报告。

7.4. 已知问题

升级时已知问题:

  • 从 RHEL 6 到 RHEL 7,请参阅 Upgrading from RHEL 6 to RHEL 7 文档中的 已知问题 部分
  • 从 RHEL 7 到 RHEL 8,请参阅 Upgrading from RHEL 7 to RHEL 8 文档中的已知问题部分

第 8 章 其它资源