从 RHEL 7 升级至 RHEL 8
把 Red Hat Enterprise Linux 7 原位(in-place)升级到 Red Hat Enterprise Linux 8
摘要
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 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 7 操作系统(OS)替换为 RHEL 8 版本。
目前,可以执行从 RHEL 7 原位升级到以下目标 RHEL 8 次版本:
系统配置 | 源操作系统版本 | 目标操作系统版本 |
---|---|---|
RHEL | RHEL 7.9 | RHEL 8.8 |
RHEL 8.10 (默认) | ||
带有 SAP HANA 的 RHEL | RHEL 7.9 | RHEL 8.8 (默认) |
RHEL 8.10 |
有关支持的升级路径的更多信息,请参阅支持的 Red Hat Enterprise Linux 原位升级路径 和 原位升级支持政策。
第 2 章 升级过程概述
RHEL 7 到 RHEL 8 的原位升级过程总结如下:
计划升级
查看系统要求和限制。确定您的系统是否为原位升级的好候选,或者您应该执行干净的 RHEL 8 安装。
准备升级
在开始升级过程前,请完成必要的准备步骤,包括创建 RHEL 7 系统的备份。
运行并查看预升级报告
运行预升级工具来生成报告,该报告总结了在升级前必须解决的潜在问题。根据发现问题的严重性和影响以及解决问题所需的工作数量,请执行以下结果之一:
- 修复发现的问题并应用推荐的解决方案。重新运行预升级工具,以验证所有严重问题是否已解决。您可能需要运行预升级报告,并在系统准备好升级前多次解决发现的问题。
- 切换到干净的 RHEL 8 安装,而不是继续原位升级。
执行原位升级
执行升级到 RHEL 8 并验证升级是否已正确完成。如果升级遇到无法解决的问题,请执行到 RHEL 7 备份的回滚。
执行升级后的步骤
执行所需的升级后步骤以确保 RHEL 8 系统已正确设置。
第 3 章 计划升级
原位升级(in-place upgrade)是把系统升级到下一个主要 RHEL 版本的推荐并支持的方法。
在升级到 RHEL 8 前请考虑以下几点:
操作系统 — 在以下情况下使用
Leapp
程序升级操作系统:64 位 Intel、IBM POWER 8 (little endian)和 64 位 IBM Z 架构上,以及 SAP HANA 上和 64 位 Intel 架构上 RHEL 7.9 的服务器变种已安装。
- 满足 RHEL 8 的最低硬件要求。
- 您可以访问最新的 RHEL 7.9 和目标操作系统(OS)版本(如 RHEL 8.10)内容。如需更多信息,请参阅 为升级准备 RHEL 7 系统。
-
应用程序 - 您可以使用
Leapp
迁移安装在系统上的应用程序。然而,在某些情况下,您必须创建 custom actors,它用来在升级过程中指定Leapp
要执行的操作,例如: 重新配置应用程序或安装特定的硬件驱动程序。如需更多信息,请参阅处理自定义应用程序和第三方应用程序的迁移。请注意,红帽不支持自定义参与者。 安全性 - 您应该在升级前评估这个方面,并在升级过程完成后采取其他步骤。请特别考虑以下几点:
- 在升级前,定义您系统需要满足的安全标准,并了解 RHEL 8 中的安全变化。
-
在升级过程中,
Leapp
会将 SELinux 的模式设置为 permissive。 Leapp
无法完全自动升级联邦信息处理标准(FIPS)模式的系统。如果您需要升级在 FIPS 模式运行的 RHEL 7 系统,您必须:重要为确保所有加密密钥都符合 FIPS 140-2 标准,请在 FIPS 模式下启动新安装,而不是对已部署的系统执行原位升级。只有在您公司的安全策略允许这个替代升级过程,且您可以确保在升级的系统上重新生成和重新评估所有加密密钥时,才执行以下步骤。。
- 在 RHEL 7 中 禁用 FIPS 模式。
-
使用
Leapp
升级系统。您必须遵循与其它原位升级一样的预升级、升级和升级后的说明。 - 在 RHEL 8 中启用 FIPS 模式。详情请参阅 RHEL 8 安全强化文档中的将系统切换到 FIPS 模式。
- 在您的系统中重新生成加密密钥。如需更多信息,请参阅 附录 C, RHEL 8 中加密密钥的位置。
- 升级完成后,重新评估并重新应用您的安全策略。有关应用升级过程中禁用的安全策略或 RHEL 8 中新引进的安全策略的详情,请参阅应用安全策略。
存储和文件系统 - 总是在升级前备份您的系统。例如,您可以使用 Relax-and-Recover (ReaR)工具、LVM 快照、RAID 拆分 或虚拟机快照。
注意文件系统格式没有改变。因此,文件系统有与最初创建时相同的限制。
- 高可用性 - 如果您使用高可用性附加组件,请按照 对 RHEL 高可用性或弹性存储集群应用软件升级的推荐的实践 知识库文章。
- 停机时间 — 升级过程可能会需要几分钟到几小时。
- Satellite - 如果您通过 Satellite 管理主机,您可以使用 Satellite Web UI 同时将多个主机从 RHEL 7 升级到 RHEL 8。如需更多信息,请参阅 将主机升级到下一个主 Red Hat Enterprise Linux 版本。
- SAP HANA - 如果您正在使用 SAP HANA,请遵循如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8。请注意,使用 SAP HANA 的 RHEL 的升级路径可能会有所不同。
- RHEL for Real Time - 支持对实时系统的升级。
- Red Hat OpenStack Platform 中的 Real Time for Network Functions Virtualization (NFV) - 支持对实时系统的升级。
- Red Hat Software Collections (RHSCLs) - RHSCLs 在原位升级过程中不会被完全迁移。RHEL 8 软件包通常会自动替换 RHSCL 软件包,但必须手动迁移和配置自定义配置和数据。例如,如果您已从 RHSCL 安装数据库,则应在升级前转储所有数据,以防止在 RHSCL 软件包删除期间丢失数据,然后在系统升级后根据需要恢复数据。请注意,在升级 Red Hat Satellite 服务器时,项目所需的 RHSCL 软件包会自动迁移。
- Red Hat JBoss Enterprise Application Platform (EAP) - 升级到 RHEL 9 不支持 JBoss EAP。升级后,您必须手动在系统中安装和配置 JBoss EAP。如需更多信息,请参阅 使用 leapp 实用程序( 使用 leapp 实用程序)将 Jboss EAP 和 websphere 服务器与 Linux 原位升级。
- 公共云 - 仅在 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform 上使用 Red Hat Update Infrastructure (RHUI) 进行 Pay-As-You-Go (PAYG)实例的原位升级。原位升级还支持在所有使用 Red Hat Subscription Manager (RHSM)进行 RHEL 订阅的公有云上的 Bring Your Own Subscription 实例。
-
语言 - 无论语言配置如何,所有
Leapp
报告、日志和其他生成的文档均为英语。 - 引导装载程序 - 在 RHEL 7 或 RHEL 8 中无法将引导装载程序从 BIOS 切换到 UEFI。如果您的 RHEL 7 系统使用 BIOS,而您希望 RHEL 8 系统使用 UEFI,请执行全新的 RHEL 8 安装,而不是原位升级。如需更多信息,请参阅 是否可以在预安装的 Red Hat Enterprise Linux 机器上将 BIOS 引导切换到 UEFI 引导?
已知的限制 - 目前已知的重要的
Leapp
限制包括:- 目前,对整个磁盘或者分区进行加密,或对文件系统加密还不能用于计划进行原位升级的系统中。
- 不支持对使用以太网或 Infiniband 的基于网络的多路径和网络存储的升级。这包括使用 FCoE 的 SAN,以及从使用 FC 的 SAN 引导。请注意,支持使用 FC 的 SAN。
- 目前,在使用 Red Hat Update Infrastructure 而不是 RHSM 进行 RHEL 订阅的剩余公有云中的 on-demand PAYG 实例不支持原位升级。
- 安装了任何 Ansible 产品,包括 Ansible Tower 的系统不支持原位升级。要在 RHEL 8 上使用 RHEL 7 Ansible Tower 安装,请参阅 如何将我的 Ansible Automation Platform 安装从一个环境迁移到另一个环境?知识库解决方案。
请参阅 已知问题。
您可以使用 Red Hat Insights 确定您注册到 Insights 的哪些系统位于 RHEL 8 的升级路径中。要做到这一点,请进入到 Insights 中相应的 顾问建议,在 Actions 下拉菜单下启用建议,并检查 Affected systems 标题下的列表。请注意: Advisor 推荐只会考虑 RHEL 7 次要版本,它不会执行系统升级前评估。另请参阅 Advisor-service 建议概述。
第 4 章 准备升级
要防止升级后出现问题,并确保您的系统已准备好升级到 RHEL 的下一个主要版本,请在升级前完成所有必要的准备步骤。
您必须在所有系统上执行 为升级准备 RHEL 7 系统 中所描述的准备步骤。另外,在注册到 Satellite 服务器的系统上,还必须执行 为升级准备 Satellite 注册系统 中描述的准备步骤。
4.1. 为升级准备 RHEL 7 系统
这个流程描述了在使用 Leapp
工具执行原位升级到 RHEL 8 前必需执行的步骤。
如果您在升级过程中不计划使用 Red Hat Subscription Manager,请参阅在没有 Red Hat Subscription Manager 的情况下升级到 RHEL 8。
先决条件
- 系统满足规划升级中列出的条件。
- 如果您之前从 RHEL 6 升级到 RHEL 7,则代表所有需要手动升级后的步骤。这包括手动迁移到 RHEL 7 机器上的 GRUB2 引导装载程序。如需更多信息,请参阅从 GRUB Legacy 升级到 GRUB 2。
流程
- 可选: 使用 Leapp 知识库文章查看执行 RHEL 升级的最佳实践和建议。
- 使用 Red Hat Subscription Manager 确保您的系统已被成功注册到 Red Hat Content Delivery Network (CDN)或 Red Hat Satellite。
如果您的系统已注册到 Satellite 服务器,请完成 为升级准备 Satellite 注册系统 中的步骤,以确保您的系统满足升级要求。
重要如果您的系统已注册到 Satellite 服务器,则您必须为升级完成 为升级准备一个注册了 Satellite 的系统 中的步骤,然后才能继续此流程中的步骤,以防止问题的发生。
-
可选:卸载升级不需要的非系统操作系统文件系统,例如,仅包含与系统本身不相关的数据文件的文件系统,并从
/etc/fstab
文件中注释掉它们。这可减少升级过程所需的时间,并防止与升级期间未正确迁移的第三方应用程序相关的潜在问题。 使用 subscription-manager 验证系统是否已订阅:
如果您的系统使用启用了 Simple Content Access (SCA)的帐户注册了,请验证
Content Access Mode is set to Simple Content Access
消息是否出现:# subscription-manager status +-------------------------------------------+ System Status Details +-------------------------------------------+ Overall Status: Disabled Content Access Mode is set to Simple Content Access. This host has access to content, regardless of subscription status. System Purpose Status: Disabled
如果您的系统使用禁用了 SCA 的帐户注册了,请验证是否已附加了 Red Hat Linux Server 订阅,产品名称是否为
Server
,其状态是否为Subscribed
:# subscription-manager list --installed +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux Server Product ID: 69 Version: 7.9 Arch: x86_64 Status: Subscribed
确定启用了适当的软件仓库。以下命令列出 64 位 Intel 架构的软件仓库 ; 有关其他架构请参阅 RHEL 7 软件仓库。
启用 Base 软件仓库:
# subscription-manager repos --enable rhel-7-server-rpms
启用提供
Leapp
及其依赖软件包的 Extras 软件仓库:# subscription-manager repos --enable rhel-7-server-extras-rpms
注意另外,您还可以启用 Optional (也称为 CodeReady Linux Builder)或 Supplementary 存储库。有关存储库 ID 的更多信息,请参阅 RHEL 7 软件仓库中的 Optional 和 Supplementary 软件仓库 列表。有关这些软件仓库的内容的更多信息,请参阅 CodeReady Linux Builder 存储库 和 Supplementary 存储库。
设置 Red Hat Subscription Manager ,以使用最新的 RHEL 7 内容:
# subscription-manager release --unset
- 可选:要使用自定义软件仓库,请参阅 配置自定义存储库 知识库文章。
如果您使用
yum-plugin-versionlock
插件把软件包锁定到特定版本,请运行以下命令来清除锁:# yum versionlock clear
详情请查看 How to restrict yum to install or upgrade a package to a fixed specific package version?。
如果您要在公有云上使用 Red Hat Update Infrastructure (RHUI) 升级,请启用所需的 RHUI 软件仓库并安装所需的 RHUI 软件包,以确保您的系统已准备好升级。
对于 AWS:
# yum-config-manager --enable rhui-client-config-server-7 # yum-config-manager --enable rhel-7-server-rhui-extras-rpms # yum -y install rh-amazon-rhui-client leapp-rhui-aws
对于 Microsoft Azure:
# yum-config-manager --enable rhui-microsoft-azure-rhel7 # yum -y install rhui-azure-rhel7 # yum-config-manager --enable rhui-rhel-7-server-rhui-extras-rpms # yum -y install leapp-rhui-azure
注意如果您将 Azure 虚拟机 (VM) 锁定到一个次发行版本,请删除版本锁定。如需更多信息,请参阅将 RHEL 7.x 虚拟机切回到非 EUS。
- 对于 Google Cloud Platform,请遵循 Google Cloud Platform (GCP) 知识库文章。
- 如果您在 Docker 中管理容器,请通过 Podman 使用合适的容器镜像重新创建这些容器,然后附加任何使用的卷。如需更多信息,请参阅如何在从 Red Hat Enterprise Linux 7 迁移到 Red Hat Enterprise Linux 8 之前将 Docker 容器迁移到 Podman?
安装
Leapp
:# yum install leapp-upgrade
请注意,您目前需要版本 0.17.0 或更高版本的
leapp
软件包,版本 0.20.0 或更高版本的leapp-repository
软件包,其中包含leapp-upgrade-el7toel8
RPM 软件包。注意如果您的系统无法访问互联网,请从红帽客户门户网站下载以下软件包 :
-
leapp
-
Leapp-deps
-
python2-leapp
-
leapp-upgrade-el7toel8
-
leapp-upgrade-el7toel8-deps
请查看 如何在离线系统上为 RHEL 7.9 到 RHEL 8.X 的升级安装 leapp 软件包?如需更多信息,知识库文章。
-
将所有软件包更新到最新的 RHEL 7 版本并重启:
# yum update # reboot
-
leapp-upgrade-el7toel8
软件包的最新版本包含所有所需的数据文件。如果您使用旧版本替换了这些数据文件,请删除/etc/leapp/files
目录中的所有 JSON 文件,并重新安装leapp-upgrade-el7toel8
软件包,以确保您的数据文件是最新的。 - 临时禁用防病毒软件以防止升级失败。
确保任何配置管理系统都不会干扰原位升级过程:
-
如果您使用客户端-服务器架构的配置管理系统(如 Puppet、Salt 或 Chef ),请在运行
leapp preupgrade
命令前禁用系统。在升级完成前,请不要启用配置管理系统,以防止升级过程中出现问题。 如果您使用无代理架构的配置管理系统(如 Ansible ),在原位升级过程中不要执行配置和部署文件(如 Ansible playbook),如 执行从 RHEL 7 到 RHEL 8 的升级 中所述。
红帽不支持使用配置管理系统进行预升级和升级过程的自动化。如需更多信息,请参阅 使用配置管理系统在 Red Hat Enterprise Linux 上自动化部分 Leapp 预升级和升级过程。
-
如果您使用客户端-服务器架构的配置管理系统(如 Puppet、Salt 或 Chef ),请在运行
-
请确定您的系统没有使用多于一个的、名称基于内核使用的前缀(
eth
)的网络接口卡(NIC)。如需了解如何在原位升级到 RHEL 8 前迁移到另外一个命名模式的更多信息,请参阅 How to perform an in-place upgrade to RHEL 8 when using kernel NIC names on RHEL 7。 -
如果您要使用 ISO 镜像升级,请验证 ISO 镜像是否包含目标操作系统版本,如 RHEL 8.8,是否被保存到一个持久本地挂载点,以确保
Leapp
工具可以在升级过程中访问镜像。 确定您有完整的系统备份或虚拟机快照。请确定您可以按照您的环境中的标准灾难恢复步骤,把系统恢复到升级前的状态。您可以使用以下备份选项:
- 使用 Relax-and-Recover (ReaR)程序创建系统的完整备份。如需更多信息,请参阅 ReaR 文档以及 Relax and Recover (ReaR) 是什么以及如何使用它进行灾难恢复?
使用 LVM 快照 或 RAID 分割 创建系统的快照。如果升级虚拟机,您可以创建整个虚拟机的快照。您还可以使用 Boom 实用程序管理快照和回滚引导条目。如需更多信息,请参阅 BOOM 是什么以及如何安装它?以及使用 快照管理系统升级。
注意因为 LVM 快照没有创建系统的完整备份,所以您可能无法在某些升级失败后恢复您的系统。因此,使用 ReaR 工具创建完整备份是安全的。
4.2. 为升级准备注册了 Satellite 的系统
此流程描述了为升级到 RHEL 8 准备已注册到 Satellite 的系统所需的步骤。
如果您计划升级 Satellite 系统本身,请按照 使用 Leapp 将 Satellite 或 Capsule 升级到 Red Hat Enterprise Linux 8 In-Place 中所述的步骤。
Satellite 系统上的用户必须完成此流程和 为升级准备 RHEL 7 系统 中所描述的步骤。
先决条件
- 您有对 Satellite 服务器的管理特权。
流程
- 验证 Satellite 是否是完全支持或维护支持的版本。如需更多信息,请参阅 Red Hat Satellite 产品生命周期。
- 将带有 RHEL 8 存储库的订阅清单导入到 Satellite 服务器。如需更多信息,请参阅 Red Hat Satellite 特定版本(例如 6.12 版本)的管理内容指南中的管理红帽订阅一章。
在 Satellite 服务器上启用并同步所有所需的 RHEL 7 和 RHEL 8 软件仓库与 RHEL 7.9 和目标操作系统版本的最新更新,如 RHEL 8.10。所需的软件仓库必须在内容视图中提供,并在关联的激活码中启用。
注意对于 RHEL 8 软件仓库,启用每个软件仓库的目标操作系统版本,例如 8.10。如果您只启用了存储库的 RHEL 8 版本,则原位升级被禁止。
例如,对于没有延长更新支持(EUS)订阅的 Intel 构架,至少启用以下软件仓库:
Red Hat Enterprise Linux 7 Server (RPMs)
rhel-7-server-rpms
x86_64 7Server
Red Hat Enterprise Linux 7 Server - Extras (RPMs)
rhel-7-server-extras-rpms
x86_64
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-appstream-rpms
x86_64 <target_os_version>
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
rhel-8-for-x86_64-baseos-rpms
x86_64 <target_os_version>
将 target_os_version 替换为目标操作系统版本,如 8.10。
有关其他构架,请参阅 RHEL 7 软件仓库 和 RHEL 8 软件仓库。
如需更多信息,请参阅 Red Hat Satellite 特定版本(例如 版本 6.12)的 管理内容指南 中的 导入内容 一章。
将内容主机附加到包含所需的 RHEL 7 和 RHEL 8 软件仓库的内容视图。
如需更多信息,请参阅 Red Hat Satellite 特定版本(例如 6.12 版本)的 管理内容指南 中的 管理内容视图 一章。
验证
验证正确的 RHEL 7 和 RHEL 8 存储库是否已添加到 Satellite 服务器上正确的内容视图中。
- 在 Satellite Web UI 中,导航到 Content > Lifecycle > Content Views,然后点击内容视图的名称。
点 Repositories 选项卡,并验证存储库是否正确出现。
注意您还可以使用以下命令验证存储库是否已添加到内容视图中:
# hammer repository list --search 'content_label ~ rhel-7' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment> # hammer repository list --search 'content_label ~ rhel-8' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment>
将 <content_view_name> 替换为内容视图的名称,将 <organization> 替换为机构,将 <lifecycle_environement> 替换为生命周期环境的名称。
验证与内容视图关联的激活码中是否启用了正确的 RHEL 8 存储库:
- 在 Satellite Web UI 中,导航到 Content > Lifecycle > Activation Keys,然后点击激活码的名称。
-
单击 Repository Sets 选项卡,验证所需存储库的状态是否为
Enabled
。
验证所有期望的 RHEL 7 存储库是否已在主机上启用。例如:
# subscription-manager repos --list-enabled | grep "^Repo ID" Repo ID: rhel-7-server-extras-rpms Repo ID: rhel-7-server-rpm
第 5 章 查看升级前报告
要评估系统的可升级性,请使用 leapp preupgrade
命令启动预升级过程。在这个阶段中,Leapp
工具收集有关系统的数据,评估可升级性,并生成一个预升级报告。预升级报告总结了潜在的问题,并建议推荐的解决方案。本次报告还帮助您决定升级是否可行。
预升级评估不会修改系统配置,但它消耗 /var/lib/leapp
目录中的不可忽略空间。在大多数情况下,预升级评估最多需要 4 GB 空间,但实际大小取决于您的系统配置。如果托管文件系统中没有足够的空间,则预升级报告可能无法显示分析的完整结果。要防止问题,请确定您的系统在 /var/lib/leapp
目录中有足够的空间,或者将目录移到专用分区,以便空间消耗不会影响系统的其他部分。
始终查看整个预升级报告,即使报告中没有发现升级的阻碍因素。预升级报告包含在升级前要完成的建议操作,以确保升级的系统工作正常。
如果要执行全新的 RHEL 8 系统安装而不是原位升级过程,审核预升级报告也很有用。
您可以使用以下方法之一评估预升级阶段中的可升级性:
-
查看生成的
leapp-report.txt
文件中的预升级报告,并使用命令行界面手动解决问题。 - 使用 Web 控制台查看报告,在可用的情况下应用自动修复,并使用推荐的修复提示修复剩余的问题。
您可以使用自己的自定义脚本处理预升级报告,例如,比较不同环境中多个报告的结果。如需更多信息,请参阅自动 Red Hat Enterprise Linux 预升级报告工作流。
预升级报告无法模拟整个原位升级过程,因此无法识别系统的所有阻碍问题。因此,即使您已审核并修复了报告中的所有问题,您的原位升级也可能被终止。例如,预升级报告无法检测与损坏的软件包下载相关的问题。
5.1. 从命令行评估可升级性
在预升级阶段,使用命令行界面识别潜在的升级问题。
先决条件
- 准备升级 中列出的步骤已完成。
流程
在 RHEL 7 系统中,执行预升级阶段:
# leapp preupgrade --target <target_os_version>
将 <target_os_version > 替换为目标操作系统版本,如 8.10。如果没有定义目标操作系统版本,
Leapp
将使用在 支持的升级路径 中的表 1.1 中所指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/
目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:# leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
-
如果您要进行 没有 RHSM 的升级 或使用RHUI,请添加
--no-rhsm
选项。 如果您有 扩展升级支持(EUS)、高级 更新支持(AUS)或 SAP Solutions Update Services (E4S) 订阅,请添加
--channel < channel>
选项:-
如果要升级到 RHEL 8.8,请将 channel 替换为频道名称,如
eus
、aus
或e4s
。请注意,SAP HANA 客户应该使用 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8 指南 来执行原位升级。 -
如果您要升级到 RHEL 8.10,请将 channel 替换为
ga
。
-
如果要升级到 RHEL 8.8,请将 channel 替换为频道名称,如
检查
/var/log/leapp/leapp-report.txt
文件中的报告,并手动解决所有报告的问题。有些报告的问题包含补救建议。抑制因素 问题阻止您升级,直到您解决了它们。有关报告中可能出现的不同问题的更多信息,请参阅 如何从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8 中的 Pre Upgrade 步骤?报告包含以下风险因素级别:
- High
- 很有可能导致系统状态恶化。
- Medium
- 可能会影响系统和应用程序。
- Low
- 不应影响系统,但可能会影响应用程序。
- info
对系统或应用程序没有预期影响的信息。
注意根据发现问题的严重性和影响以及解决问题所需的工作量,可能需要执行干净的 RHEL 8 安装,而不是继续原位升级。
在某些系统配置中,
Leapp
工具会产生您必须手动回答的 true 或 false 问题。如果预升级报告包含 Missing required answers in the answer file 消息,请完成以下步骤:-
打开
/var/log/leapp/answerfile
文件,并查看 true 或 false 问题。 手动编辑
/var/log/leapp/answerfile
文件,删除#
符号来取消文件的确认行的注释,并确认您的回答为True
或False
。如需更多信息,请参阅 Leapp answerfile。注意另外,您可以通过运行以下命令来回答 true 或 false 问题:
# leapp answer --section <question_section>.<field_name>=<answer>
例如,要确认对 Disable pam_pkcs11 module in PAM configuration? 问题的
False
回答,请执行以下命令:# leapp answer --section remove_pam_pkcs11_module_check.confirm=False
-
打开
- 重复前面的步骤来重新运行预升级报告,以验证您是否解决了所有关键问题。
5.2. 通过 web 控制台评估可升级性,并应用自动化修复方法
识别预升级阶段中的潜在问题,并使用 Web 控制台应用自动补救。
先决条件
- 您已完成了 准备升级 中列出的步骤。
流程
安装
cockpit-leapp
插件:# dnf install cockpit-leapp
以
root
或有权使用sudo
输入管理命令的用户身份登录到 web 控制台。如需有关 web 控制台的更多信息,请参阅 使用 RHEL web 控制台管理系统。在 RHEL 7 系统中,从命令行界面或 web 控制台终端执行预升级:
# leapp preupgrade --target <target_os_version>
将 <target_os_version > 替换为目标操作系统版本,如 8.10。如果没有定义目标操作系统版本,
Leapp
将使用在 支持的升级路径 中的表 1.1 中所指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/
目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:# leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
-
如果您要进行 没有 RHSM 的升级 或使用RHUI,请添加
--no-rhsm
选项。 如果您有 扩展升级支持(EUS)、高级 更新支持(AUS)或 SAP Solutions Update Services (E4S) 订阅,请添加
--channel < channel>
选项:-
如果要升级到 RHEL 8.8,请将 channel 替换为频道名称,如
eus
、aus
或e4s
。请注意,SAP HANA 客户应该使用 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8 指南 来执行原位升级。 -
如果您要升级到 RHEL 8.10,请将 channel 替换为
ga
。
-
如果要升级到 RHEL 8.8,请将 channel 替换为频道名称,如
在 web 控制台中,从导航菜单中选择 Upgrade Report 来查看所有报告的问题。抑制因素 问题阻止您升级,直到您解决了它们。有关报告中可能出现的不同问题的更多信息,请参阅 如何从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8 中的 Pre Upgrade 步骤?
要详细查看问题,请选择行来打开详情面板。
图 5.1. Web 控制台中的原位升级报告
报告包含以下风险因素级别:
- High
- 很有可能导致系统状态恶化。
- Medium
- 可能会影响系统和应用程序。
- Low
- 不应影响系统,但可能会影响应用程序。
- info
对系统或应用程序没有预期影响的信息。
注意根据发现问题的严重性和影响以及解决问题所需的工作量,可能需要执行干净的 RHEL 8 安装,而不是继续原位升级。
在某些配置中,
Leapp
工具会生成您必须手动回答的 true 或 false 问题。如果升级报告包含 Missing required answers in the answer file 行,请完成以下步骤:- 选择 Missing required answers in the answer file 行,来打开 Details 面板。默认回答在补救命令的末尾说明。
- 要确认默认回答,请选择 Add to Remediation Plan 来稍后执行补救或 Run Remediation 来立即执行补救。
要选择非默认回答,请在终端中执行
leapp answer
命令,指定您要回答的问题以及您确认的回答。# leapp answer --section <question_section>.<field_name>=<answer>
例如,要对问题 Disable pam_pkcs11 module in PAM configuration? 确认
False
响应,请执行以下命令# leapp answer --section remove_pam_pkcs11_module_check.confirm=False
注意您还可以手动编辑
/var/log/leapp/answerfile
文件,通过删除#
符号取消对文件的确认行的注释,并确认您的回答为True
或False
。如需更多信息,请参阅 Leapp answerfile 示例。
有些问题有您可以运行的修复命令来自动解决问题。您可以在补救命令中单独或一起运行补救命令。
- 要运行单个补救命令,请打开此问题的 Detail 面板,然后点 Run Remediation。
要在补救计划中添加补救命令,请打开此问题的Detail 面板,然后点击 Add to Remediation Plan。
图 5.2. 详细信息面板
- 要运行包含所有添加了补救命令的补救计划,请点击报告右上角的 Remediation plan 链接。点 Execute Remediation Plan 执行所有列出的命令。
- 审核报告并解决所有报告的问题后,重复第 3-7 步来重新运行报告,以验证您是否解决了所有关键问题。
第 6 章 执行从 RHEL 7 到 RHEL 8 的升级
使用 Leapp
程序升级到 RHEL 8。
流程
在 RHEL 7 系统中,启动升级过程:
# leapp upgrade --target <target_os_version>
将 <target_os_version > 替换为目标操作系统(OS)版本,如 8.10。如果没有定义目标操作系统版本,
Leapp
将使用在 支持的升级路径 中的表 1.1 中所指定的默认目标操作系统版本。注意如果您使用
/etc/yum.repos.d/
目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:# leapp upgrade --enablerepo <repository_id1> --enablerepo <repository_id2> …
如果您要进行 没有 RHSM 的升级 或使用RHUI,请添加
--no-rhsm
选项。如果您要使用 ISO 镜像升级,请添加
--no-rhsm
和--iso <file_path>
选项。将 <file_path> 替换为保存的 ISO 镜像的文件路径,如/home/rhel8.iso
。如果您有 扩展升级支持(EUS)、高级 更新支持(AUS)或 SAP Solutions Update Services (E4S) 订阅,请添加
--channel < channel>
选项:-
如果您要升级到 RHEL 8.8,请使用
leapp preupgrade
命令使用的值替换 channel,如eus
、aus
或e4s
。请注意,您必须在leapp preupgrade
和leapp upgrade
命令中对--channel
选项使用同样的值。 -
如果您要升级到 RHEL 8.10,请将 channel 替换为
ga
。
在升级过程开始时,
Leapp
会执行预升级阶段,如 检查预升级报告 中所述。如果系统是可升级的,
Leapp
会下载必要的数据,并为升级准备 RPM 事务。如果您的系统没有达到可靠的条件,
Leapp
会终止升级进程,并在/var/log/leapp/leapp-report.txt
文件中提供描述这个问题和推荐解决方案的记录。如需更多信息,请参阅 故障排除。-
如果您要升级到 RHEL 8.8,请使用
手动重启系统:
# reboot
在这个阶段,系统会引导进入基于 RHEL 8 的初始 RAM 磁盘镜像 initramfs。
Leapp
升级所有软件包,然后自动重启到 RHEL 8 系统。另外,您可以使用
--reboot
选项输入leapp upgrade
命令并跳过这个手动步骤。如果发生故障,请按照故障排除中所述调查日志。
- 登录到 RHEL 8 系统并验证其状态, RHEL 8 系统升级后状态的验证中所述。
- 执行升级报告和 执行升级后任务 中描述的所有升级后任务。特别是,重新检查并重新应用您的安全策略。
- 如果升级一个系统,并将以 FIPS 模式运行,请删除任何 RHEL 7 内核。然后,重新生成并确保所有加密密钥的 FIPS 合规性。如需更多信息 ,请参阅 RHEL 8 中的加密密钥位置。
第 7 章 验证 RHEL 8 系统升级后的状态
此流程列出了在升级到 RHEL 8 后建议执行的验证。
先决条件
- 该系统已根据从 RHEL 7 升级到 RHEL 8 中的步骤进行了升级,并可登录到 RHEL 8。
流程
升级完成后,请确定系统是否处于所需状态,至少:
验证当前的 OS 版本是否为 Red Hat Enterprise Linux 8:
# cat /etc/redhat-release Red Hat Enterprise Linux release <target_os_version> (Ootpa)
将 target_os_version 替换为目标操作系统版本,如 8.10。
检查 OS 内核版本:
# uname -r 4.18.0-305.el<target_os>.x86_64
target_os 应该是
8
或目标操作系统版本,如8_10
。请注意,.el8
很重要,版本不应早于 4.18.0-305。如果您使用 Red Hat Subscription Manager:
验证是否安装了正确的产品:
# subscription-manager list --installed +-----------------------------------------+ Installed Product Status +-----------------------------------------+ Product Name: Red Hat Enterprise Linux for x86_64 Product ID: 479 Version: <target_os_version> Arch: x86_64 Status: Subscribed
将 target_os_version 替换为目标操作系统版本,如 8.10。
升级后,验证发行版本是否马上设置为目标操作系统版本:
# subscription-manager release Release: <target_os_version>
将 target_os_version 替换为目标操作系统版本,如 8.10。
- 例如,验证网络服务是否可操作,试着使用 SSH 连接到服务器。
- 检查应用程序的升级后状态。在某些情况下,您可能需要手动执行迁移和配置更改。例如,要迁移您的数据库,请按照 RHEL 8 数据库服务器文档中的说明操作。
第 8 章 执行升级后的任务
在原位升级到 RHEL 8 后,建议执行以下主要任务。
先决条件
- 您已 根据从 RHEL 7 升级到 RHEL 8 中描述的步骤进行了升级,并可登录到 RHEL 8。
- 您已按照 RHEL 8 系统升级后状态验证原位升级的状态验证。
流程
执行升级后,完成以下任务:
从
/etc/dnf/dnf.conf
配置文件中的排除列表中删除任何剩余的Leapp
软件包,包括snactor
软件包。在原位升级过程中,使用Leapp
工具安装的Leapp
软件包会自动添加到 排除列表中,以防止删除或更新重要的文件。原位升级后,您必须在从系统中删除它们之前,从排除列表中删除这些Leapp
软件包。-
要从排除列表中手动删除软件包,请编辑
/etc/dnf/dnf.conf
配置文件,并从exclude
列表中删除所需的Leapp
软件包。 从
exclude
列表中删除所有软件包:# yum config-manager --save --setopt exclude=''
-
要从排除列表中手动删除软件包,请编辑
删除剩余的 RHEL 7 软件包,包括剩余的
Leapp
软件包。确定旧的内核版本:
# cd /lib/modules && ls -d *.el7*
从旧内核中删除弱模块。如果您有多个旧内核,请对每个内核重复此步骤:
# [ -x /usr/sbin/weak-modules ] && /usr/sbin/weak-modules --remove-kernel <version>
将 <version> 替换为上一步中决定的内核版本,例如:
# [ -x /usr/sbin/weak-modules ] && /usr/sbin/weak-modules --remove-kernel 3.10.0-1160.25.1.el7.x86_64
注意忽略以下错误信息,如果内核包已被删除,就会产生这个错误信息:
/usr/sbin/weak-modules: line 1081: cd: /lib/modules/<version>/weak-updates: No such file or directory
从引导装载程序条目中删除旧内核。如果您有多个旧内核,请对每个内核重复此步骤:
# /bin/kernel-install remove <version> /lib/modules/<version>/vmlinuz
使用上一步中决定的内核版本替换 version,例如:
# /bin/kernel-install remove 3.10.0-1160.25.1.el7.x86_64 /lib/modules/3.10.0-1160.25.1.el7.x86_64/vmlinuz
找到剩余的 RHEL 7 软件包:
# rpm -qa | grep -e '\.el[67]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
从 RHEL 8 系统中删除剩余的 RHEL 7 软件包,包括旧的内核软件包和
kernel-workaround
软件包。为确保 RPM 依赖项被维护,请在执行操作时使用YUM
或DNF
。在接受之前检查事务,以确保意外删除任何软件包。例如:
# yum remove kernel-workaround $(rpm -qa | grep \.el7 | grep -vE 'gpg-pubkey|libmodulemd|katello-ca-consumer')
删除剩余的
Leapp
依赖软件包:# yum remove leapp-deps-el8 leapp-repository-deps-el8
删除任何剩余的空目录:
# rm -r /lib/modules/*el7*
可选:从系统中删除所有剩余的与升级相关的数据:
# rm -rf /var/log/leapp /root/tmp_leapp_py3 /var/lib/leapp
重要删除这些数据可能会限制红帽支持调查并故障排除升级后问题的能力。
禁用在 RHEL 8 上无法安装或使用其软件包的 YUM 存储库。由 RHSM 管理的软件仓库会自动处理。禁用这些软件仓库:
# yum config-manager --set-disabled <repository_id>
将 <repository_id& gt; 替换为存储库 ID。
将旧的救援内核和初始 RAM 磁盘替换为当前的内核和磁盘:
删除现有救援内核和初始 RAM 磁盘:
# rm /boot/vmlinuz-*rescue* /boot/initramfs-*rescue*
重新安装救援内核和相关的初始 RAM 磁盘:
# /usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"
注意如果您的系统的内核软件包有不同的名称,比如在实时系统上,请使用正确的软件包名称替换
kernel-core
。如果您的系统位于 IBM Z 构架中,更新 zipl 引导装载程序:
# zipl
- 重新检查并重新应用您的安全策略。特别是,需要将 SELinux 模式改为 enforcing。详情请参阅应用安全策略。
验证
验证旧内核是否已从 bootloader 条目中删除:
# grubby --info=ALL | grep "\.el7" || echo "Old kernels are not present in the bootloader."
验证已为当前内核创建了之前删除的救援内核和救援初始 RAM 磁盘文件:
# ls /boot/vmlinuz-*rescue* /boot/initramfs-*rescue* # lsinitrd /boot/initramfs-*rescue*.img | grep -qm1 "$(uname -r)/kernel/" && echo "OK" || echo "FAIL"
验证救援引导条目是否指向现有救援文件。请查看 grubby 输出:
# grubby --info $(ls /boot/vmlinuz-*rescue*)
第 9 章 应用安全策略
在原位升级过程中,必须禁用某些安全策略。RHEL 8 引进了系统范围加密策略的新概念,同时安全配置可能包含主要发行本之间的更改。要使您的系统更安全,请将 SELinux 切换到 enforcing 模式,并设置系统范围的加密策略。您可能还希望修复系统,以符合特定的安全配置文件。
9.1. 将 SELinux 模式改为 enforcing
在原位升级过程中,Leapp
会将 SELinux 的模式设置为 permissive。当成功升级系统时,您必须手动将 SELinux 模式改为 enforcing。
先决条件
- 系统已升级,并执行了 RHEL 8 系统升级后状态 中描述的验证。
流程
确保没有 SELinux denials,例如,使用
ausearch
工具程序:# ausearch -m AVC,USER_AVC -ts boot
请注意,上一步只涵盖最常见的情况。要检查所有可能的 SELinux denials,请查看使用 SELinux 中的 识别 SELinux denials 部分。
在您选择的文本编辑器中打开
/etc/selinux/config
文件,例如:# vi /etc/selinux/config
配置
SELINUX=enforcing
选项:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
保存更改,重启系统:
# reboot
验证
系统重启后,确认
getenforce
命令返回Enforcing
:$ getenforce Enforcing
9.2. 设置系统范围的加密策略
系统范围的加密策略是一个系统组件,它配置核心加密子系统,包括 TLS、IPSec、SSH、DNSSec 和 Kerberos 协议。
在成功安装或原位升级后,系统范围的加密策略会自动设置为 DEFAULT
。DEFAULT
系统范围的加密政策级别为当前的威胁模型提供了安全设置。
要查看或更改当前系统范围的加密策略,请使用 update-crypto-policies 工具:
$ update-crypto-policies --show
DEFAULT
例如,以下命令可将系统范围内的加密策略切换到 FUTURE
,这样可防止任何近期可能出现的安全攻击:
# update-crypto-policies --set FUTURE
Setting system policy to FUTURE
您还可以自定义系统范围的加密策略。详情请参阅 自定义带有子策略的系统范围的加密策略 和 创建并设置自定义系统范围的加密策略 部分。
其他资源
- 使用系统范围的加密策略
-
您系统上的
update-crypto-policies (8)
手册页。
9.3. 将强化的系统升级到安全基线
要在成功升级到 RHEL 8 后获得完全强化的系统,您可以使用 OpenSCAP 套件提供的自动化补救功能。OpenSCAP 修复使您的系统符合安全基线,如 PCI-DSS、OSPP 或 ACSC Essential Eight。由于安全产品的发展,配置合规性建议在 Red Hat Enterprise Linux 的主版本之间有所不同。
当升级一个强化的 RHEL 7 系统时,Leapp
工具 不 提供保持完整强化的直接方法。根据组件配置中的更改,该系统可能会在升级过程中偏离 RHEL 8 的建议。
您不能使用同样的 SCAP 内容来扫描 RHEL 7 和 RHEL 8。如果系统的合规性是由像 Red Hat Satellite 或 Red Hat Insights 这样的工具管理的,则更新管理平台。
作为自动化修复的替代方法,您可以按照 OpenSCAP 生成的报告手动进行更改。有关生成合规性报告的详情,请参考 扫描系统以了解安全合规性和漏洞。
根据流程自动强化带有 PCI-DSS 配置文件的系统。
在默认配置中,自动化修复支持 RHEL 系统。因为安装后已更改了系统升级,因此运行修复可能无法使其完全遵从所需的安全配置文件。您可能需要手动修复一些要求。
先决条件
-
scap-security-guide
软件包安装在 RHEL 8 系统上。
流程
查找合适的安全合规数据流
.xml
文件:$ ls /usr/share/xml/scap/ssg/content/ ssg-firefox-cpe-dictionary.xml ssg-rhel6-ocil.xml ssg-firefox-cpe-oval.xml ssg-rhel6-oval.xml ... ssg-rhel6-ds-1.2.xml ssg-rhel8-oval.xml ssg-rhel8-ds.xml ssg-rhel8-xccdf.xml ...
如需更多信息,请参阅 查看合规性配置文件 章节。
根据从合适的数据流所选的配置文件来修复系统:
# oscap xccdf eval --profile pci-dss --remediate /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
您可以根据您要强化系统的配置文件的 ID 来替换
--profile
参数中的pci-dss
值。有关 RHEL 8 中所支持的配置文件的完整列表,请参阅 RHEL 中所支持的 SCAP 安全配置文件。警告如果没有谨慎使用,在启用 Remediate 选项的情况下运行系统评估可能会导致系统无法正常工作。红帽不提供任何自动的方法来恢复由强化安全的修复所做的更改。在 RHEL 系统上的默认配置中支持修复。如果在安装后更改了您的系统,运行修复可能无法使其遵守所需的安全配置文件。
重启您的系统:
# reboot
验证
验证系统是否遵从配置文件,并将结果保存到 HTML 文件中:
$ oscap xccdf eval --report pcidss_report.html --profile pci-dss /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
其他资源
-
您系统上的
scap-security-guide
手册页(8)
和 oscap (8) - 扫描系统以了解安全合规和漏洞
- Red Hat Insights 安全策略文档
- Red Hat Satellite 安全策略文档
第 10 章 故障排除
您可以参阅以下内容排除从 RHEL 7 升级到 RHEL 8 时出现的问题。
10.1. 故障排除资源
您可以参考以下故障排除资源。
控制台输出
默认情况下,Leapp
只会将错误和严重日志级别的信息输出到控制台输出中要改变日志级别,在leapp upgrade
命令中使用 --verbose
或 --debug
选项。
-
在 verbose 模式中,
Leapp
会输出 info, warning, error, 和 critical 信息。 -
在 debug 模式中,
Lapp
会输出 debug、info、warning、error 和 critical 信息。
日志
-
/var/log/leapp/leapp-upgrade.log
文件列出了 initramfs 阶段里的问题。 -
/var/log/leapp/dnf-debugdata/
目录包含了事务故障排除数据。只有在leapp upgrade
命令使用了--debug
选项执行时,才会生成这个目录。 -
/var/log/leapp/answerfile
包含Leapp
回答所需的问题。 -
Journalctl
实用程序提供完整的日志。
Reports
-
/var/log/leapp/leapp-report.txt
文件列出了在预升级阶段里发现的问题。这个报告也可以在 web 控制台中获得,请参阅 评估可升级性并通过 web 控制台应用自动化修复。 -
/var/log/leapp/leapp-report.json
文件以机器可读格式列出了在预升级阶段发现的问题,它可让您使用自定义脚本处理报告。如需更多信息,请参阅自动 Red Hat Enterprise Linux 预升级报告工作流。
10.2. 故障排除窍门
您可以参考以下故障排除信息。
预升级阶段
- 确认您的系统满足规划升级中列出的所有条件。
-
请确定您遵循了 准备升级 中描述的所有步骤,例如:您的系统没有使用多个网络接口卡(NIC),它们的名称基于内核使用的前缀(
eth
)。 确保您已回答了
/var/log/leapp/answerfile
文件中Leapp
所需的所有问题。如果缺少回答,Leapp
会阻止升级。问题示例:- 在 PAM 配置中禁用 pam_pkcs11 模块?
- 在 PAM 配置中禁用 pam_krb5 模块?
- 使用以下 authselect 调用来配置 PAM 和 nsswitch.conf?
-
请确定您解决了在预升级报告(位于
/var/log/leapp/leapp-report.txt
)中发现的所有问题。您也可以使用 web 控制台来达到此目的,如评估可升级性并通过 web 控制台应用自动化修复 中所述。
例 10.1. Leapp answerfile
以下是一个未编辑的 /var/log/leapp/answerfile
文件,它有一个未回答的问题:
[remove_pam_pkcs11_module_check] # Title: None # Reason: Confirmation # =================== remove_pam_pkcs11_module_check.confirm ================== # Label: Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted. # Description: PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD. # Type: bool # Default: None # Available choices: True/False # Unanswered question. Uncomment the following line with your answer # confirm =
Label
字段指定需要回答的问题。在这个示例中,问题是 Disable pam_pkcs11 module in PAM configuration?
要回答这个问题,请取消对 confirm
行的注释并输入 True
或 False
作为回答。在本例中,所选答案为 True
:
[remove_pam_pkcs11_module_check]
...
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
confirm = True
下载阶段
如果在下载 RPM 软件包时出现问题,请检查位于
/var/log/leapp/dnf-debugdata/
目录的事务调试数据。注意如果没有生成事务调试数据,
/var/log/leapp/dnf-debugdata/
目录为空,则不存在。当所需的软件仓库不可用时,会出现这种情况。
initramfs 阶段
在此阶段,潜在的故障会进入 Dracut shell。检查 Journal 日志:
# journalctl
或者,使用
reboot
命令从 Dracut shell 重启系统,并检查/var/log/leapp/leapp-upgrade.log
文件。
升级后阶段
- 如果您的系统看上去成功升级,但是使用旧的 RHEL 7 内核引导,重启系统并检查 GRUB 中默认条目的内核版本。
- 确保您遵循了 RHEL 8 系统升级后状态的验证中推荐的步骤。
如果您的应用程序或服务在您将 SELinux 切换到 enforcing 模式后停止工作或者行为不正确,请使用 ausearch, journalctl, 或 dmesg 检查拒绝:
# ausearch -m AVC,USER_AVC -ts boot # journalctl -t setroubleshoot # dmesg | grep -i -e selinux -e type=1400
最常见的问题是由错误的标记造成的。更多详情请参阅SELinux 故障排除。
10.3. 已知问题
从 RHEL 7 升级到 RHEL 8 时可能会遇到的已知问题。
- 当在禁用或未安装网络管理器时,当执行原位升级时,NIC 合作目前无法正常工作。
-
如果您使用 HTTP 代理,则必须将 Red Hat Subscription Manager 配置为使用代理服务器,或在执行
subscription-manager
命令时使用--proxy <hostname>
选项 。否则,subscription-manager
命令的执行会失败。如果您使用--proxy
选项而不是配置更改,升级过程会失败,因为Leapp
无法检测到代理。要防止这个问题发生,请手动编辑rhsm.conf
文件,如 How to configure HTTP Proxy for Red Hat Subscription Management 所述。(BZ#1689294)
-
如果您的 RHEL 7 系统使用由红帽提供但在 RHEL 8 中不可用的设备驱动程序,
Leapp
将会限制升级。但是,如果 RHEL 7 系统使用了第三方设备驱动程序,而Leapp
在/etc/leapp/files/device_driver_deprecation_data.json
文件中没有数据,则Leapp
不会检测这样的驱动程序并进行升级。然后,该系统可能会在升级后无法引导。
如果在
/etc/nsswitch.conf
文件中使用了winbind
和wins
Samba 模块,则不能执行原位升级。升级事务失败并显示以下出错信息,Lapp
会阻止升级:upgrade[469]: STDERR: upgrade[469]: Error in PREIN scriptlet in rpm package unbound-libs upgrade[469]: Error: Transaction failed upgrade[469]: Container el8userspace failed with error code 1. unbound-libs has a PREIN failure
要临时解决这个问题,请配置系统以便在更新的过程中只使用本地供应商的
user
,groups
, 和hosts
数据库。-
打开系统
/etc/nsswitch.conf
配置文件并搜索包含winbind
或者wins
字符串的条目。 -
如果您找到这样的条目,请创建一个
/etc/nsswitch.conf
的备份。 -
编辑
/etc/nsswitch.conf
并从包含它们的条目中删除winbind
或者wins
。 - 执行原位升级。
升级后,根据您的系统配置要求,将
winbind
和wins
字符串添加到/etc/nsswitch.conf
中的条目中。(BZ#1410154)
-
打开系统
Leapp
实用程序不会在升级过程中更改自定义验证配置。如果您使用已弃用的authconfig
工具在 RHEL 7 系统中配置身份验证,则 RHEL 8 的身份验证可能无法正常工作。要确保您的自定义配置在 RHEL 8 系统中正常工作,请使用authselect
程序重新配置您的 RHEL 8 系统。重要在原位升级过程中,删除已弃用的
pam_krb5
或pam_pkcs11
可插拔验证模块 (PAM)。因此,如果 RHEL 7 系统上的 PAM 配置包含pam_krb5
或pam_pkcs11
模块,如果这些模块具有required
或requisite
控制值,则如果执行原位升级,则您可能会被锁在系统之外。要临时解决这个问题,请在开始升级前将您的 RHEL 7 系统配置为不使用pam_krb5
或者pam_pkcs11
。
如果系统上安装的第三方软件包(不是红帽签名的)的名称与红帽提供的软件包名称相同,则原位升级会失败。要临时解决这个问题,请在升级前选择以下选项之一:
- 删除第三方软件包
- 使用红帽提供的软件包替换第三方软件包
为了安全起见,已从 RHEL 8 中删除了对 single-DES (DES)和 triple-DES (3DES)加密类型的支持。RHEL 7 Identity Management(IdM)仍支持 3DES 加密。
将 IdM 客户端从 RHEL 7 升级到 RHEL 8 或将整个 IdM 环境从 RHEL 7 迁移到 RHEL 8 是可能的,因为两个 RHEL 版本都默认首选更强的 AES 加密类型:IdM 的版本 默认加密类型 其他支持的加密类型 RHEL 7
aes256-cts
aes128-cts
camellia256-cts
camellia128-cts
des3-hmac
arcfour-hmac
RHEL 8
aes256-cts
aes128-cts
aes256-sha2
aes128-sha2
camellia256-cts
camellia128-cts
arcfour-hmac
[a][a] RHEL 8 中默认弃用并禁用了 RC4 加密,因为它被视为不如较新的 AES-128 和 AES-256 加密类型安全。有关启用对与传统活动目录环境兼容的 RC4 支持的更多信息,请参阅 确保 AD 和 RHEL 中对通用加密类型的支持。如果您手动配置了一个非 IdM Kerberos 发行中心(KDC)、任何服务或任何用户为只使用 DES 或 3DES 加密的用户,您可能会在升级到 RHEL 8 中最新 Kerberos 软件包后遇到服务中断,例如:
- Kerberos 验证错误
-
unknown enctype
加密错误 -
带有 DES 加密数据库主密钥 (
K/M
) 的 KDC 无法启动
红帽建议不要在您的环境中使用 DES 或者 3DES 加密。有关重新加密 Kerberos 主体以使用更强大的加密类型的更多信息,请参阅 MIT Kerberos 文档中的 退出 DES。
- 在带有独立磁盘的软件冗余阵列(RAID)的系统上,原位升级可能会失败。(RHEL-3279)
- 禁用 GRUB 引导装载程序规格的系统(如使用 Puppet 的系统)无法为较新的内核创建新的 initramfs。要临时解决这个问题,请从引导装载程序条目中手动删除软件包和旧内核,如 第 6 章:执行升级后的任务 中所述。(BZ#1955099)
- IBM Z 构架中没有 Relax-and-Recover (ReaR) 程序。因此,IBM Z 系统无法完全由 OpenSCAP 套件修复,且可能无法与安全基准完全兼容。(BZ#1958939)
在原位升级过程中,
Leapp
工具通常会保留 RHEL 7 和 RHEL 8 之间的网络接口控制器(NIC)名称。但是,在某些系统上,如带有网络绑定的系统,NIC 名称需要在 RHEL 7 和 RHEL 8 之间更新。在这些系统上,执行以下步骤:-
设置
LEAPP_NO_NETWORK_RENAMING=1
环境变量,来防止Leapp
工具错误地保留原始 RHEL 7 NIC 名称。 - 执行原位升级。
验证您的网络是否正常工作。如果需要,请手动更新网络配置。
(BZ#1919382)
-
设置
原位升级后,如果系统满足以下条件,则 SSH 密钥将不再自动生成:
- 系统在云上。
- cloud-init 软件包已安装。
ssh_genkeytypes 配置在 /etc/cloud/cloud.cfg 文件中被设置为 ~,这是默认设置。
如果原始密钥已删除,则此问题防止使用 SSH 连接系统。要防止这个问题,请参阅 将模板升级到 RHEL 8.7 或 9 后,不能 SSH 到新虚拟机 知识库解决方案。(BZ#2210012)
- 在硬件级别 13 上创建的且使用 UEFI 引导的 VMware 虚拟机在升级过程中可能会遇到问题,因为 NVRAM 文件太小了。有关此问题以及如何解决它的更多信息,请参阅 VMWare: 当执行 efibootmgr 或 mokutil 命令添加条目时,得到 "No space left on device"。(RHEL-3362)
-
如果您使用带有 ISO 镜像的 RHUI 升级,则升级可能会失败。您可以通过在升级时不使用
--iso
选项来临时解决此问题,或者按照 使用 ISO 离线 的 Leapp 升级失败,并显示 "Failed to synchronize cache for repo 'rhul-microsoft-azure-rhel8',gnoring this repo 中的说明操作。(RHEL-3296) 预升级过程可能会失败,并显示以下错误信息:
MountError:failed to create mount target directory …
如果出现这个问题,请导出
LEAPP_OVL_IMG_FS_EXT4=1
环境变量。如需更多信息,请参阅 Leapp 可能失败,并显示 MountError (OverlayFS + XFS ftype=1)。(RHEL-3330)如果挂载了太多文件系统,则预升级过程可能会失败,并显示以下错误消息:
OperationalError: unable to open database file Cannot create XFS filesystem in ...
如果出现这个问题,请完成以下步骤:
- 卸载与系统分区无关且在升级过程中不需要的文件系统。
-
注释掉
/etc/fstab
文件中卸载的文件系统的条目,以防止它们在升级过程中被挂载。 升级后恢复原始文件系统配置。
-
如果您的系统中没有
/etc/sysconfig/kernel
系统配置文件,升级会失败,从而导致系统中断。要防止这个问题,请使用预期的配置手动创建该文件。如需更多信息 ,请参阅验证引导装载程序。(RHEL-22306) 如果
/etc/fstab
文件中定义的任何挂载的文件系统没有设置共享
传播标志,则升级可能会失败。要防止这个问题,请重新挂载这些文件系统将其设置为共享:# mount -o remount --make-shared <mountpoint>
使用每个文件系统的挂载点替换 mountpoint。
如需更多信息,请参阅 DNF 事务检查 中的 Leapp "Can not load RPM 文件 "。(RHEL-23449)
-
如果为升级过程设置了有限的资源,则升级可能会失败。例如,升级过程
可以访问
由进程写入的最大打开文件描述符和最大文件大小
(如果已设置)。要防止这些问题,请在升级前增加或减少这些限制。如需更多信息,请参阅 为什么 leapp preupgrade fail with sqlite3.OperationalError: unable to open database file traceback error? and Ensure that enough diskspace in /var/lib/leapp/scratch/diskimages/root_boot 至少需要 XXX mib。(RHEL-16881, RHEL-26459) 如果系统上安装了
jbcs-httpd24-brotli
RPM,例如,如果您的系统使用 JBoss Core Services Web 服务器,则升级可能会失败。要防止这个问题,请在升级前删除软件包。另外,如果您无法在升级前删除软件包,请运行以下命令来确保在升级过程中安装brotli
软件包:# echo brotli >> /etc/leapp/transaction/to_install
在 IBM Z 机器上带有没有网卡的系统(如 IBM Z 机器上 RoCE )可能会因为 NIC 名称升级后遇到连接丢失的情况。要防止这个问题,请在升级前完成以下步骤:
在内核引导参数中添加
net.ifnames=0
:# grubby --update-kernel=ALL --args 'net.ifnames=0'
在 IBM Z 系统中,输入以下命令使更改有效:
# zipl
重启您的系统。
-
如果您的 RHEL 7 系统使用由红帽提供但在 RHEL 8 中不可用的设备驱动程序,必须在原位升级前卸载驱动程序。但是,当某些设备驱动程序(如
mptcl
驱动程序)被其他服务使用时,可能会自动重新载入驱动程序。要解决这个问题,请参阅 因为无法卸载的 mptctl 模块导致 IPU 被禁止。(RHEL-15894) -
如果您使用 RHUI 升级,则预升级报告中的
/usr/share/leapp-repository/repositories/system_upgrade/common/files/rhui/
目录中的文件会错误地报告为预升级报告中的自定义文件。除非手动修改了这些文件,否则您可以在报告中忽略这些文件的警告,否则原位升级将不受影响。(RHEL-40115)
10.4. 获取支持
要创建一个支持问题单,请选择 RHEL 7 作为产品,并提供您系统的 sosreport
。
-
要在您的系统中生成
sosreport
,请运行:
# sosreport
请注意:您可以将问题单 ID 留空。
有关生成 sosreport 的详情,请参阅 What is an sosreport and how to create one in Red Hat Enterprise Linux?。
有关在客户门户网站上提交和管理支持问题单的更多信息,请参阅 如何在客户门户网站上提交和管理支持问题单?。
附录 A. RHEL 7 软件仓库
在升级前,确定您启用了合适的软件仓库,如 为升级准备 RHEL 7 系统 流程中的第 4 步所述。
如果您计划在升级过程中使用 Red Hat Subscription Manager,您 需要在升级前使用 subscription-manager repos --enable repository_id
命令启用以下软件仓库:
构架 | 软件仓库 | 仓库 ID |
---|---|---|
64-bit Intel | Base |
|
Extras |
| |
IBM POWER8 (little endian) | Base |
|
Extras |
| |
IBM Z | Base |
|
Extras |
|
升级前,可以使用 subscription-manager repos --enable repoid
命令启用以下仓库:
构架 | 软件仓库 | 仓库 ID |
---|---|---|
64-bit Intel | Optional |
|
Supplementary |
| |
IBM POWER8 (little endian) | Optional |
|
Supplementary |
| |
IBM Z | Optional |
|
Supplementary |
|
如果您在原位升级前已经启用了 RHEL 7 Optional 或 RHEL 7 Supplementary 软件仓库, Leapp
会相应地启用 RHEL 8 CodeReady Linux Builder 或 RHEL 8 软件仓库。
如果您决定使用自定义软件仓库,请根据配置自定义软件仓库中的内容启用它们。
附录 B. RHEL 8 软件仓库
如果您的系统使用 Red Hat Subscription Manager(RHSM)注册到 Red Hat Content Delivery Network(CDN),则 RHEL 8 软件仓库会在原位升级过程中自动启用。但是,在使用 RHSM 注册到 Red Hat Satellite 的系统上,您必须在运行预升级报告前手动启用和同步 RHEL 7 和 RHEL 8 软件仓库。
确保启用每个软件仓库的目标操作系统(OS)版本,如 RHEL 8.10。如果您只启用了 RHEL 8 版本的软件仓库,则会禁止原位升级。
如果您计划在升级过程中使用 Red Hat Satellite,在使用 Satellite Web UI 或 hammer repository-set enable
以及 hammer product synchronize
命令进行升级之前,您 必须启用并同步 以下 RHEL 8 存储库:
将 <target_os_version > 替换为目标操作系统(OS)版本,如 8.10。
架构 | 软件仓库 | 仓库 ID | 仓库名称 | 发行版本 |
---|---|---|---|---|
64 位 Intel | BaseOS |
| Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) | x86_64 <target_os_version> |
AppStream |
| Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) | x86_64 <target_os_version> | |
IBM Power8 (little endian) | BaseOS |
| Red Hat Enterprise Linux 8 for Power, little endian - BaseOS(RPMs) | ppc64le <target_os_version> |
AppStream |
| Red Hat Enterprise Linux 8 for Power, little endian - AppStream(RPMs) | ppc64le <target_os_version> | |
IBM Z | BaseOS |
| Red Hat Enterprise Linux 8 for IBM z Systems - BaseOS(RPMs) | s390x <target_os_version> |
AppStream |
| Red Hat Enterprise Linux 8 for IBM z Systems - AppStream (RPMs) | s390x <target_os_version> |
附录 C. RHEL 8 中加密密钥的位置
升级在联邦信息处理标准(FIPS)模式下运行的系统后,您必须重新生成,并确保所有加密密钥的 FIPS 合规性。下表中列出了此类密钥的一些已知位置。请注意,该列表没有完成,您也可以检查其他位置。
Application(应用程序) | 密钥位置 | 备注 |
---|---|---|
Apache mod_ssl |
|
如果 |
Bind9 RNDC |
|
|
Cyrus IMAPd |
|
|
DNSSEC-Trigger |
|
|
Dovecot |
|
|
OpenPegasus |
|
|
OpenSSH |
|
Ed25519 和 DSA 密钥不符合 FIPS。 |
Postfix |
|
|
RHEL web 控制台 |
|
Web 控制台运行 |
sendmail |
|
|
要确保对第三方应用程序的加密密钥的 FIPS 合规性,请参阅相应应用程序的对应文档。另外:
打开端口的任何服务都可以使用 TLS 证书。
- 并非所有服务都会自动生成加密密钥,但许多默认自动启动的服务通常会这样做。
- 还侧重于使用任何加密库的服务,如 NSS、GnuTLS、OpenSSL 和 libgcrypt。
- 也检查备份、disk-encryption、file-encryption 和类似的应用程序。
因为 RHEL 8 中的 FIPS 模式限制 DSA 密钥、DH 参数、小于 1024 位的 RSA 密钥以及其它密码,所以旧的加密密钥在从 RHEL 7 升级后停止工作。如需更多信息,请参阅采用 RHEL 8 的注意事项文档中的 核心加密组件中的变化 部分和 RHEL 8 安全强化文档中的 使用系统范围的加密策略 一章。
其他资源
- 在 RHEL 8 安全强化文档中将系统切换到 FIPS 模式
-
系统中的
update-crypto-policies (8)
和fips-mode-setup (8)
手册页