CentOS系统转换RHEL系统实操

运维
本文通过红帽官方提供的Convert2RHEL工具演示怎么将centos7转成redhat系统,红帽支持从 CentOS Linux 和 Oracle Linux 转换到 RHEL 7 和 8。

随着 CentOS Project 宣布将分别于 2021 年 12 月 31 日和 2024 年 6 月 30 日停止对 CentOS Linux® 版本 8 和版本 7 更新与发布新版本,许多机构开始重新评估自身的 IT 环境, 并开始规划迁移事宜,2024 年已经到来,那么距离 终止日期 2024年6月30日已经不远了。

近 20 年来,CentOS Linux 一直是许多人心中服务器工作负载的首选系统。然而随着 CentOS Linux 7最后一个实时版本终止其生命周期,这也意味着相关存储库将会关闭,不再有新版本面世,也不会有新的更新发布。对于长期依赖 CentOS 的企业来说,这无疑是一个转折点,考虑后续替代方案已经成为很多企业面临的问题。

01 应对策略

如何应对 CentOS 的生命周期终结?

1. 评估现有环境在考虑迁移方案之前,首先要对现有的服务器环境进行彻底的评估和盘点。这包括了解每台服务器的用途、配置和兼容性等。

2. 考虑使用 CentOS Stream对于某些特定场景,比如硬件或软件供应商测试其产品的兼容性,CentOS Stream 是一个不错的选择。但对于生产环境,特别是关键业务应用,CentOS Stream 可能并不是最佳选择,因为它的支持周期较短,且缺乏就地升级机制。

3. 选择 RHEL:更多的不仅仅是支持转向 RHEL,意味着您将获得一个全面的业务合作伙伴。RHEL 不仅提供长达 10 年的支持周期,还有每 6 个月的可预测版本发布节奏、延长支持选项等。此外,RHEL 还提供了专业的技术分析和全天候的支持服务。

4. 从免费到收费虽然 CentOS 是一个免费的社区支持系统,但从长远来看,企业可能需要为其付出更多的时间和资源成本。而 RHEL 虽然是付费的,但提供了更全面的支持和保障。

5. 迁移路径. 使用 Convert2RHEL 工具进行就地转换这是一种简便快捷的转换方式,可以直接将 CentOS 系统转换为 RHEL 系统,而不会对现有应用造成太大的影响。

本文通过红帽官方提供的Convert2RHEL工具演示怎么将centos7转成redhat系统,红帽支持从 CentOS Linux 和 Oracle Linux 转换到 RHEL 7 和 8。

02 转换说明

centos停更时间表

图片

确定现有 CentOS和升级的RHEL目标版本

  1. convert2rhel 工具支持对 CentOS 7/8 进行转换(由于 CentOS 6 已经停更,因此已不再被支持,centos6需要先升级)。
  2. convert2rhel 只支持从一个主版本的 CentOS 转换到对应版本的 RHEL,不能跨主版本转换。例如从 CentOS 7.9 只能直接转换到 RHEL 7.9,而不能直接转换到 RHEL 8
  3. convert2rhel 只支持直接将最后一个次要版本的 CentOS 7/8 转换到对等版本的 RHEL 7/8,目前分别是 CentOS 7.9 和 CentOS 8.5。如果被转换的 CentOS 7/8 低于以上版本,则需要先进行升级。例如你的系统为centos7.4系统,需要先升级到centos7.9,然后再转成redhat7.9.
  4. 由于每个特定次要版本的 CentOS 7/8 所包含的内核版本也会定期更新(见 CentOS 内核版本 、RHEL 内核版本),因此即便是相同次要版本的 CentOS 7.9 和 RHEL 7.9,他们使用的内核版本也会有微小差异。转换过程不能对内核版本进行降级,即无法对内核已经升级到 3.10.0-1160.105.1.el7 的 CentOS 7.9 转换到内核为 3.10.0-1160.el7 的 RHEL 7.9。因此在转换时需要控制好 CentOS 和RHEL使用的Yum 源,一般 ISO 中包含的是稍早版本的介质,而官方在线 Yum Repo一般都是最新版本介质。

转换限制

  1. 有以下情况的 CentOS 无法直接将其转换到 RHEL
  2. 不支持对使用 FIPS 模式运行的 CentOS 进行转换。
  3. 不支持对带有 RHEL内核模块之外的运行环境进行直接转换(例如专用应用程序、设备动程序的内核模块)。可以先将这些内核模块禁用,在转换后再启动。

操作系统转换是如何进行的?

自动转换过程在运行的系统上执行。Convert2RHEL 工具将原始 Linux 发行版本中的所有 RPM 软件包替换为其对应的 RHEL 版本。在转换过程结束时,需要重启系统来引导到 RHEL 内核。

备注:对于只存在于原始发行版本中、且在 RHEL 软件仓库中没有对应软件包的软件包,或在原始发现版本中存在的、不是来自原始 Linux 发行版本或 RHEL 的第三方软件包,都不会受到转换的影响。

支持的转换和不支持的转换的区别?

红帽允许从多个不同的基于 RHEL 的操作系统转换到 RHEL。但是,如果是红帽不支持的转换,则代表转换过程没有经过红帽测试,您需要自己承担转换可能会带来的风险。对于红帽支持的转换,代表红帽已对转换过程进行了全面的测试,下面是支持的转换列表

图片

03 实操阶段

CentOS 转换 RHEL 示例 转换示例环境 本示例模拟以下环境,使用 RHEL 7.9 ISO 文件作为转换使用的 yum repository 源,因此需要以下环境即可:

当前可运行的 CentOS 7.9 操作系统 RHEL 7.9 ISO 文件(rhel-server-7.9-x86_64-dvd.iso) 从CentOS 至 RHEL 转换过程 查看当前 CentOS版本

$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

在 CentOS 中安装 convert2rhel 方法1:在 CentOS 中执行命令,分别下载 convert2rhel.reop、Red Hat GPG 密钥、SSL 证书,然后安装 convert2rhel 工具。

$ curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/7/convert2rhel.repo
$ curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
$ curl --create-dirs -o /etc/rhsm/ca/redhat-uep.pem https://ftp.redhat.com/redhat/convert2rhel/redhat-uep.pem
$ yum -y install convert2rhel

方法2:在 CentOS 中执行命令,基于https://github.com/oamg/convert2rhel安装convert2rhel

$ yum install -y https://github.com/oamg/convert2rhel/releases/download/v1.6.0/convert2rhel-1.6.0-1.el7.noarch.rpm

配置本地RHEL YUM Repository 将 rhel-server-7.9-x86_64-dvd.iso 文件传到 CentOS 中。

$ scp rhel-server-7.9-x86_64-dvd.iso root@<CENTOS-HOST>:/root/

在CentOS 中执行命令,挂载RHEL的ISO文件

$ mkdir -p /mnt/rhiso
$ mount -o loop rhel-server-7.9-x86_64-dvd.iso /mnt/rhiso

在 CentOS 中执行命令,用挂载的RHEL文件配置 yum repository。

$ cat > /etc/yum.repos.d/rhel.repo << EOF
[RHEL7]
name=Red Hat Enterprise Linux 7
baseurl=file:///mnt/rhiso
enabled=1
EOF

如果是CentOS 8,需要执行以下命令。

$ cat > /etc/yum.repos.d/rhel.repo << EOF
[RHEL8-BaseOS]
name=Red Hat Enterprise Linux 8.0 BaseOS
baseurl=file:///mnt/rhiso/BaseOS/
enabled=1
 
[RHEL8-AppStream]
name=Red Hat Enterprise Linux 8.0 AppStream
baseurl=file:///mnt/rhiso/AppStream/
enabled=1
EOF

执行转换过程,执行以下命令,如果没有问题,convert2rhel 工具将自动完成转换 RHEL 7.9 的所有过程。

$ convert2rhel --disable-submgr --disablerepo=* --enablerepo=RHEL7 -y
。。。
[12/04/2021 04:38:52] TASK - [Prepare: Gather system information] *******************************
Name:                CentOS Linux
OS version:          7.9
Architecture:        x86_64
Config filename:     centos-7-x86_64.cfg
Skipping the execution of 'rpm -Va'.
。。。
[12/04/2021 04:39:05] TASK - [Convert: Prepare kernel] ******************************************
Installing RHEL kernel ...
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-
              : manager
。。。
Successfully downloaded the kernel-3.10.0-1160.el7 package.
Replacing CentOS Linux kernel-3.10.0-1160.el7 with RHEL kernel with the same NEVRA ...
 
RHEL kernel-3.10.0-1160.el7 installed.
 
Verifying that RHEL kernel has been installed
RHEL kernel has been installed.
Searching for non-RHEL kernels ...
Removing non-RHEL kernels
Package                                   Vendor/Packager  Repository
-------                                   ---------------  ----------
kernel-tools-3.10.0-1160.el7.x86_64       CentOS           anaconda
kernel-tools-libs-3.10.0-1160.el7.x86_64  CentOS           anaconda
 
Removing package: kernel-tools-3.10.0-1160.el7.x86_64
Removing package: kernel-tools-libs-3.10.0-1160.el7.x86_64
。。。
。。。
Removed:
  basesystem.noarch 0:10.0-7.el7.centos
  dhclient.x86_64 12:4.2.5-82.el7.centos
  dhcp-common.x86_64 12:4.2.5-82.el7.centos
  dhcp-libs.x86_64 12:4.2.5-82.el7.centos
  libxml2.x86_64 0:2.9.1-6.el7_9.6
  libxml2-python.x86_64 0:2.9.1-6.el7_9.6
  plymouth.x86_64 0:0.8.9-0.34.20140113.el7.centos
  plymouth-core-libs.x86_64 0:0.8.9-0.34.20140113.el7.centos
  plymouth-scripts.x86_64 0:0.8.9-0.34.20140113.el7.centos
  yum.noarch 0:3.4.3-168.el7.centos
 
Installed:
  basesystem.noarch 0:10.0-7.el7
  dhclient.x86_64 12:4.2.5-82.el7
  dhcp-common.x86_64 12:4.2.5-82.el7
  dhcp-libs.x86_64 12:4.2.5-82.el7
  libxml2.x86_64 0:2.9.1-6.el7.5
  libxml2-python.x86_64 0:2.9.1-6.el7.5
  plymouth.x86_64 0:0.8.9-0.34.20140113.el7
  plymouth-core-libs.x86_64 0:0.8.9-0.34.20140113.el7
  plymouth-scripts.x86_64 0:0.8.9-0.34.20140113.el7
  yum.noarch 0:3.4.3-168.el7
 
Dependency Installed:
  redhat-logos.noarch 0:70.7.0-1.el7
 
Complete!
Received return code: 0

如果是 CentOS 8,执行以下命令:

$ convert2rhel --disable-submgr --disablerepo=* --enablerepo RHEL8-BaseOS --enablerepo RHEL8-AppStream -y --no-rpm-va

执行成功,查看系统版本,确认已经转换到 RHEL 7.9了

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)

最后重启及完成转换。

$ reboot

转换后由于CentOS没有安装 subscription-manager,因此要注册RHEL订阅,需要运行以下命令安装相关软件包

$ yum -y install subscription-manager subscription-manager-rhsm-certificates

04 FAQ

问题一、centos7.9以下执行转换步骤会有如下错误,需要先升级到指定版本才能转换

图片


问题二、第三方模块导致转换失败

图片

官方给出的解决方式参考:https://access.redhat.com/solutions/41278

此处解决方法

#step1、卸载报错的模块
modprobe -r virtio_balloon         
# step2、将模块加入给名单
echo "blacklist virtio_balloon" >> /etc/modprobe.d/local-dontload.conf  
#step3、重启不再加载此模块
echo "install virtio_balloon /bin/false" >> /etc/modprobe.d/local-dontload.conf

问题三、内核不匹配问题

图片

安装了rpm包后,需要重启一次操作系统,重启后会切换内核版本为1160,然后再执行一遍命令转换即可

参考资料

https://access.redhat.com/solutions/41278

https://access.redhat.com/zh_CN/articles/6754061

责任编辑:庞桂玉 来源: 运维之美
相关推荐

2010-04-29 12:23:58

Oracle 获取系统

2009-12-23 17:22:18

Linux系统rsyn

2021-07-09 07:21:40

SpringBootRedisLUA

2010-03-30 13:24:41

2019-02-25 17:42:43

TCP协议状态转换

2010-05-04 14:10:53

Oracle表

2014-08-07 10:07:13

RHELCentOS

2010-05-11 10:22:43

Mysql日期

2013-06-24 16:32:30

2010-04-12 09:36:29

Oacle merge

2010-01-06 10:38:16

Linux安装JDK

2017-02-27 11:06:59

RHEL7CentOS7密码

2014-07-24 10:17:25

CentOSSquid

2019-06-05 10:20:09

安全更新命令Linux

2010-04-27 10:25:28

Oracle Subs

2010-05-18 12:24:16

MySQL binlo

2010-05-20 15:53:15

配置MySQL

2009-11-30 13:05:00

Suse防火墙

2010-05-18 18:19:40

MySQL修改表结构

2009-12-01 18:03:56

Linux版本
点赞
收藏

51CTO技术栈公众号