注意
遵循本文中的过程会导致数据平面与虚拟机 (VM) 的控制平面断开连接。 Azure 功能(例如 自动来宾修补、 自动作系统(OS)映像升级、 热修补和 Azure 更新管理器 将不可用。 若要利用这些功能,建议使用首选 OS 创建新的 VM,而不是执行就地升级。
适用于:✔️ Linux VM
升级 Red Hat Enterprise Linux (RHEL) 系统是确保受益于最新功能、安全更新和支持的关键任务。 本文介绍如何使用 Leapp 实用工具将 RHEL 即用即付(PAYG)映像从 RHEL 7 升级到 RHEL 8 或 RHEL 8 到 RHEL 9 的 Linux 虚拟机(VM)。
重要
Red Hat 更新基础结构 (RHUI) 仅适用于 PAYG 映像。 如果使用自定义或黄金映像(也称为自带订阅(BYOS),则必须将系统附加到 Red Hat 订阅管理器(RHSM)或卫星,才能接收更新。 有关详细信息,请参阅 如何使用 RHSM 注册和订阅 Red Hat 客户门户的 RHEL 系统。
有关对 Red Hat 提供的自定义、黄金或 PAYG 映像执行 Leapp 升级的详细信息,请参阅以下文章:
先决条件
- 备份 Linux VM 或 OS 磁盘的快照。
- 清除足够的空间
/var/lib/leapp以适应升级。 最佳做法是至少有 2-5 GB 的可用空间。 - 设置对串行控制台的访问权限。
- 使用根权限运行本文中的命令。
为 Leapp 预升级和升级过程准备 VM
本部分概述了在使用 Leapp 实用工具对 RHEL 8 或 RHEL 9 进行就地升级之前的必要步骤。
可以执行从 RHEL 7 到以下 RHEL 8 次要版本的就地升级。
| 源 OS 版本 | 目标版本 | 支持终止日期 |
|---|---|---|
| RHEL 7.9 | RHEL 8.8 | 2025 年 5 月 31 日(延长更新支持(EUS)) |
| RHEL 7.9 | RHEL 8.10 (默认值) | 2028 年 6 月 30 日 |
备注
有关详细信息,请参阅 Red Hat Enterprise Linux 支持的就地升级路径。
备注
如果将 VM 锁定为次要版本,请删除版本锁。 有关详细信息,请参阅 将 RHEL 7.x VM 切换回非 EUS。
如果使用命令将包限制为特定版本
yum-plugin-versionlock,请删除限制:sudo yum versionlock clear启用所需的 RHUI 存储库并安装所需的 RHUI 包,以确保系统已准备好进行升级:
sudo yum-config-manager --enable rhui-microsoft-azure-rhel7 sudo yum -y install rhui-azure-rhel7 sudo yum-config-manager --enable rhui-rhel-7-server-rhui-extras-rpms sudo yum -y install leapp-rhui-azure安装 Leapp 实用工具:
sudo yum install leapp-upgrade将所有包更新到最新的 RHEL 7 版本:
sudo yum update重新启动 VM:
sudo reboot若要防止升级失败,请暂时禁用防病毒软件。
运行
leapp preupgrade命令之前,请使用客户端服务器体系结构(如 Puppet、Salt 或 Chef)或无代理体系结构(如 Ansible)禁用任何配置管理系统。
Leapp 预升级过程
Leapp 预升级报告突出显示了可能的问题,提供了建议的解决方案,并帮助确定升级是可行的还是建议的。
运行以下 leapp preupgrade 命令:
sudo leapp preupgrade --target <target_os_version> --no-rhsm
替换为 <target_os_version> 目标 OS 版本,例如 8.10。
检查文件中的报表 /var/log/leapp/leapp-report.txt ,并手动解决任何已识别的问题。 一些问题附带了建议的修补程序。 必须先解决抑制问题,然后才能继续升级。 有关报表中可能出现的各种问题的详细信息,请参阅 Red Hat OS 升级问题疑难解答。
Leapp 升级过程
在 Leapp 预升级报告显示没有错误或抑制,并且所有内容都标记为已解决之后继续执行 Leapp 升级过程。 输出通常为绿色或黄色,表示可以安全地继续进行 Leapp 升级。
重要
请确保通过串行控制台运行 leapp upgrade 命令,以避免任何可能影响安全外壳(SSH)终端的网络中断,并中断升级过程。
运行以下
leapp preupgrade命令:sudo leapp upgrade --target <target_os_version> --no-rhsm备注
- 替换为
<target_os_version>目标 OS 版本,例如8.10。 - 如果要执行升级过程中所需的自动重启,请将
--reboot该选项添加到leapp upgrade命令。
- 替换为
--reboot如果上一命令中未包含该选项,请监视串行控制台。 升级过程确认需要重新启动才能继续该过程,如以下输出所示,手动重新启动 VM:====> * add_upgrade_boot_entry Add new boot entry for Leapp provided initramfs. A reboot is required to continue. Please reboot your system.sudo reboot
升级完成后,检查系统是否处于所需状态。
验证 Leapp 升级过程
本部分概述了完成就地升级后建议的验证步骤。
验证当前 OS 版本是否属于 RHEL 8:
sudo cat /etc/redhat-release检查内核版本:
uname -r验证新存储库:
sudo dnf repolist
升级后任务
成功升级 VM 后,执行以下任务:
从 /etc/dnf/dnf.conf
snactor排除列表中删除所有剩余的 Leapp 包(包括包)。 这些 Leapp 包是在就地升级期间安装的。sudo dnf config-manager --save --setopt exclude=''删除所有剩余的 RHEL 7 包,包括所有剩余的 Leapp 包。
找到剩余的 RHEL 7 包:
sudo rpm -qa | grep -e '\.el[67]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort删除 RHEL 7 的旧包:
sudo dnf remove $(rpm -qa | grep \.el[67] | grep -vE 'gpg-pubkey|libmodulemd|katello-ca-consumer')
从旧内核中删除剩余的 RHEL 7 弱模块。
确定旧内核版本:
sudo cd /lib/modules && sudo ls -d *.el7*3.10.0-1160.119.1.el7.x86_64 3.10.0-1160.el7.x86_64 3.10.0-1160.59.1.el7.x86_64从旧内核中删除弱模块。 如果有多个旧内核,请为每个内核运行以下命令:
sudo [ -x /usr/sbin/weak-modules ] && sudo /usr/sbin/weak-modules --remove-kernel <kernel version>备注
忽略以下错误消息,如果之前删除了内核包,则会生成该错误消息:
/usr/sbin/weak-modules: 行 <号>: cd: /lib/modules/<kernel version>/weak-updates: 无此类文件或目录
从启动加载程序条目中删除旧内核。 如果有多个旧内核,请为每个内核运行以下命令:
sudo /bin/kernel-install remove <kernel version> /lib/modules/<kernel version>/vmlinuz从 RHEL 8 VM 中删除剩余的 RHEL 7 包,包括旧的内核包和 内核解决方法 包。 若要维护 RPM 依赖项,请使用
yum或dnf执行这些作时。删除内核解决方法包:
sudo yum remove kernel-workaround $(rpm -qa | grep \.el7 | grep -vE 'gpg-pubkey|libmodulemd|katello-ca-consumer')删除剩余的 Leapp 依赖项包:
sudo yum remove leapp-deps-el8 leapp-repository-deps-el8 leapp-rhui-azure删除所有剩余的空目录:
sudo rm -r /lib/modules/*el7*(可选)从系统中删除所有与升级相关的数据:
sudo rm -rf /var/log/leapp /root/tmp_leapp_py3 /var/lib/leapp重要
删除此数据可能会限制Microsoft和 Red Hat 支持部门调查和排查升级后问题的能力。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。