从 RHEL 6 升级至 RHEL 8

Red Hat Enterprise Linux 8

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

Red Hat Customer Content Services

摘要

本文档提供了如何进行把 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 信息

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

通过 Jira 提交反馈(需要帐户)

  1. 登录到 Jira 网站。
  2. 单击顶部导航栏中的 Create
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您的改进建议。包括到文档相关部分的链接。
  5. 点对话框底部的 Create

主要迁移术语

尽管以下与迁移相关的术语在软件业中常用,但这里的定义特定于 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 的原位升级。
  7. 检查升级的系统状态。

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

第 2 章 准备 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 原位升级所需的工具。详情请参阅 从 RHEL 6 升级到 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 评估您系统的可升级性,并在进行升级前解决报告发现的问题。具体步骤,请参阅 从 RHEL 6 升级到 RHEL 7 文档中的 评估升级的适用性 部分。
  2. 使用 Red Hat Upgrade Tool 升级到 RHEL 7.9。具体步骤,请参阅 从 RHEL 6 升级到 RHEL 7 文档中的 将您的系统从 RHEL 6 升级到 RHEL 7 部分。

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

要准备 RHEL 7 系统以升级到 RHEL 8,请在继续升级前按照以下步骤操作:

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

    升级后,RHEL 7 仍然使用 GRUB Legacy 引导装载程序。但是,RHEL 7 及更高版本不支持 GRUB Legacy。因此,您必须手动将引导装载程序迁移到 GRUB2 中。详情请查看 RHEL 7 系统管理员指南 中的 从 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. 如果在升级后丢失了一些软件包,请参阅 故障排除 章节中的 第 7.3 节 “升级至 RHEL 7 后安装缺少的软件包” 部分。
  7. 参阅 RHEL 8 的注意事项文档中的内容,并根据需要对系统进行相应修改。
  8. 将您的系统更新至最新的 RHEL 7.9 版本并重启主机:

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

第 5 章 从 RHEL 7.9 升级到 RHEL 8

与从 RHEL 6 原位升级到 RHEL 7 类似,从 RHEL 7 升级到 RHEL 8 的原位升级由两个主要阶段包括:一个预升级评估系统保持不变,以及实际的原位升级。如果是从 RHEL 7 升级到 RHEL 8,则这两个阶段都由 Leapp 程序处理。请注意,RHEL 版本 7.9 是升级到 RHEL 8 的先决条件。

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

  1. 评估您的系统可升级性,并修复报告的问题,如从 RHEL 7 升级到 RHEL 8 文档中的 检查预升级报告所述。
  2. 根据从 RHEL 7 升级到 RHEL 8 文档中的执行 RHEL 7 到 RHEL 8 的升级部分中的内容,把 RHEL 7 系统升级到 RHEL 8。

其它资源

  • 从 RHEL 7 升级到 RHEL 8 文档中的故障排除部分

第 6 章 执行升级后的任务

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

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

    # restorecon -Rv /

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

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

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

    有关迁移说明,请参阅红帽客户门户网站中的 RHEL 8 文档,以了解相关的组件。例如数据库,请参阅部署不同类型的服务器文档中的 数据库服务器一节中的内容。

  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,请参阅 从 RHEL 6 升级到 RHEL 7 文档中的 已知问题 部分
  • 从 RHEL 7 到 RHEL 8,请参阅 从 RHEL 7 升级到 RHEL 8 文档中的 已知问题 部分

7.5. 其它资源

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.