2024年06月30日后,Red Hat Enterprise Linux(RHEL)7从维护(Maintenance Support)阶段过渡到延长生命(Extended Life)阶段,在延长生命阶段,红帽仅提供有限的技术支持。如果您的ECS实例及应用程序部署在RHEL 7上,我们建议您将RHEL 7升级到RHEL 8,以持续获得产品新能力以及与最新的硬件平台和ISV软件的适配性。本文介绍如何在ECS实例上将RHEL 7升级为RHEL 8。
如果您当前的业务必须保留在RHEL 7版本,建议您购买阿里云Red Hat Enterprise Linux Extended Life Cycle Support (ELS) Add-On订阅,从而持续获得ELS中的软件维护和技术支持。更多信息,请参见Red Hat 7进入ELS阶段的应对方案。
前提条件
请确保待升级的ECS实例满足RHEL 8系统运行的要求。具体要求,请参见RHEL 8的最低硬件要求。
请确保您的系统是在云市场购买的RHEL 7(已包含RHEL 7订阅)或在阿里云自行导入的RHEL 7且购买了阿里云RHEL 7订阅的系统。
说明您可以通过
rpm -q client-rhel7
命令查看您的系统是否使用了阿里云RHEL 7订阅。如果有类似client-rhel7-3.0-1.el7_9.noarch
回显,表示购买了阿里云RHEL 7订阅。如果您是自行购买的红帽订阅的RHEL 7系统,请参考红帽官方文档Upgrading from RHEL 7 to RHEL 8进行升级。
操作步骤
升级操作有一定风险。在升级之前,建议创建一个云盘快照备份重要数据,了解升级过程和可能出现的问题,并谨慎操作。
使用root用户远程连接RHEL 7系统的ECS实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
准备升级环境。
运行以下命令,将RHEL 7系统升级到最新,并重启系统生效。
yum -y update reboot
运行以下命令,在RHEL 7系统上安装Leapp升级工具。
yum -y install leapp leapp-rhui-alibaba --enablerepo="*"
预升级检查。
由于RHEL 7和RHEL 8的系统差异较大,在升级前需要先通过Leapp工具对系统进行预升级检查。您可以查看Leapp工具的检查结果,并根据Leapp工具的建议进行修复,以满足升级需求。
运行以下命令,进行预升级检查,默认升级至RHEL 8最新版本。
leapp preupgrade --no-rhsm
说明您也可以指定具体的目标版本,例如升级至RHEL 8.8版本,需运行
leapp preupgrade --no-rhsm --target 8.8
命令。您可以通过
leapp preupgrade -h
命令查看系统支持升级的目标版本。
查看预升级结果。
Leapp工具预升级的检查日志保存在以下日志文件中:
/var/log/leapp/leapp-preupgrade.log:Leapp工具的日志
/var/log/leapp/leapp-report.txt:文本格式的预升级检查报告
/var/log/leapp/leapp-report.json :JSON格式的预升级检查报告
预升级检查失败后,会打印出一些具体检查失败项, 如下图所示。
处理预升级结果。
您可以在日志文件
/var/log/leapp/leapp-report.txt
中查看具体的报告信息,并根据Leapp工具的建议进行修复。以下列出一些常见的预升级检查结果的处理办法。
运行以下命令,进行升级,默认升级至RHEL 8最新版本。
leapp upgrade --no-rhsm
说明您也可以指定具体的目标版本,例如升级至RHEL 8.8版本,需运行
leapp upgrade --no-rhsm --target 8.8
命令。如下图所示,表示升级成功。
运行以下命令,重启进入新系统。
reboot
升级后验证。
查看升级的执行日志或报告是否正常。
进入新的操作系统后,可以通过
/var/log/leapp/leapp-upgrade.txt
文件查看升级的执行日志,也可以通过/var/log/leapp/leapp-report.txt
文件查看升级报告,报告中包含了升级系统的详细信息:如下日志信息表示一些软件包可能无法安装或升级,您可以在升级后手动安装丢失的软件包。
Risk Factor: high Title: Packages from unknown repositories may not be installed Summary: 3 packages may not be installed or upgraded due to repositories unknown to leapp: - python3-pyxattr (repoid: rhel8-CRB) - rpcgen (repoid: rhel8-CRB) - ustr (repoid: rhel8-CRB) Remediation: [hint] In case the listed repositories are mirrors of official repositories for RHEL (provided by Red Hat on CDN) and their repositories IDs has been customized, you can change the configuration to use the official IDs instead of fixing the problem. You can also review the projected DNF upgrade transaction result in the logs to see what is going to happen, as this does not necessarily mean that the listed packages will not be upgraded. You can also install any missing packages after the in-place upgrade manually.
如下日志信息表示RHEL 7的一些软件包未升级,您可以删除这些软件包以保持系统处于受支持的状态。
Risk Factor: high Title: Some RHEL 7 packages have not been upgraded Summary: Following RHEL 7 packages have not been upgraded: leapp-upgrade-el7toel8-0.18.0-1.el7_9 kernel-3.10.0-1160.92.1.el7 leapp-rhui-alibaba-1.0.0-1.el7_9 Please remove these packages to keep your system in supported state.
删除命令:
yum remove leapp-upgrade-el7toel8-0.18.0-1.el7_9 kernel-3.10.0-1160.92.1.el7 leapp-rhui-alibaba-1.0.0-1.el7_9
观察您的业务在RHEL 8上运行是否正常。
(条件必选)运行以下命令,配置RHEL 8的源。
使用Leapp升级工具升级完成后,默认会修改
/etc/dnf/vars/releasever
文件来限定系统升级到RHEL 8的具体版本(例如8.8,repo源信息为https://xxxx/8.8/xxx
),后续您只能访问RHEL 8.8版本下的软件包。如果您希望能够自动访问RHEL 8最新版本(例如8.10)的软件包,确保获取到最新的安全补丁和功能更新,可以通过删除releasever配置文件并重建元数据缓存来实现。rm -f /etc/dnf/vars/releasever dnf clean all && dnf makecache
执行完成后,repo源信息会更新为
https://xxxx/8/xxx
,您就可以使用RHEL 8最新版本的软件包。
相关文档
有关Red Hat的更多介绍,请参见红帽官方文档Red Hat Enterprise Linux。
关于RHEL 7进入ELS阶段的常见问题可参考红帽官方FAQ文档。