CentOS系統(tǒng)轉(zhuǎn)換RHEL系統(tǒng)實操
隨著 CentOS Project 宣布將分別于 2021 年 12 月 31 日和 2024 年 6 月 30 日停止對 CentOS Linux? 版本 8 和版本 7 更新與發(fā)布新版本,許多機構(gòu)開始重新評估自身的 IT 環(huán)境, 并開始規(guī)劃遷移事宜,2024 年已經(jīng)到來,那么距離 終止日期 2024年6月30日已經(jīng)不遠了。
近 20 年來,CentOS Linux 一直是許多人心中服務(wù)器工作負載的首選系統(tǒng)。然而隨著 CentOS Linux 7最后一個實時版本終止其生命周期,這也意味著相關(guān)存儲庫將會關(guān)閉,不再有新版本面世,也不會有新的更新發(fā)布。對于長期依賴 CentOS 的企業(yè)來說,這無疑是一個轉(zhuǎn)折點,考慮后續(xù)替代方案已經(jīng)成為很多企業(yè)面臨的問題。
01 應(yīng)對策略
如何應(yīng)對 CentOS 的生命周期終結(jié)?
1. 評估現(xiàn)有環(huán)境在考慮遷移方案之前,首先要對現(xiàn)有的服務(wù)器環(huán)境進行徹底的評估和盤點。這包括了解每臺服務(wù)器的用途、配置和兼容性等。
2. 考慮使用 CentOS Stream對于某些特定場景,比如硬件或軟件供應(yīng)商測試其產(chǎn)品的兼容性,CentOS Stream 是一個不錯的選擇。但對于生產(chǎn)環(huán)境,特別是關(guān)鍵業(yè)務(wù)應(yīng)用,CentOS Stream 可能并不是最佳選擇,因為它的支持周期較短,且缺乏就地升級機制。
3. 選擇 RHEL:更多的不僅僅是支持轉(zhuǎn)向 RHEL,意味著您將獲得一個全面的業(yè)務(wù)合作伙伴。RHEL 不僅提供長達 10 年的支持周期,還有每 6 個月的可預測版本發(fā)布節(jié)奏、延長支持選項等。此外,RHEL 還提供了專業(yè)的技術(shù)分析和全天候的支持服務(wù)。
4. 從免費到收費雖然 CentOS 是一個免費的社區(qū)支持系統(tǒng),但從長遠來看,企業(yè)可能需要為其付出更多的時間和資源成本。而 RHEL 雖然是付費的,但提供了更全面的支持和保障。
5. 遷移路徑. 使用 Convert2RHEL 工具進行就地轉(zhuǎn)換這是一種簡便快捷的轉(zhuǎn)換方式,可以直接將 CentOS 系統(tǒng)轉(zhuǎn)換為 RHEL 系統(tǒng),而不會對現(xiàn)有應(yīng)用造成太大的影響。
本文通過紅帽官方提供的Convert2RHEL工具演示怎么將centos7轉(zhuǎn)成redhat系統(tǒng),紅帽支持從 CentOS Linux 和 Oracle Linux 轉(zhuǎn)換到 RHEL 7 和 8。
02 轉(zhuǎn)換說明
centos停更時間表
確定現(xiàn)有 CentOS和升級的RHEL目標版本
- convert2rhel 工具支持對 CentOS 7/8 進行轉(zhuǎn)換(由于 CentOS 6 已經(jīng)停更,因此已不再被支持,centos6需要先升級)。
- convert2rhel 只支持從一個主版本的 CentOS 轉(zhuǎn)換到對應(yīng)版本的 RHEL,不能跨主版本轉(zhuǎn)換。例如從 CentOS 7.9 只能直接轉(zhuǎn)換到 RHEL 7.9,而不能直接轉(zhuǎn)換到 RHEL 8
- convert2rhel 只支持直接將最后一個次要版本的 CentOS 7/8 轉(zhuǎn)換到對等版本的 RHEL 7/8,目前分別是 CentOS 7.9 和 CentOS 8.5。如果被轉(zhuǎn)換的 CentOS 7/8 低于以上版本,則需要先進行升級。例如你的系統(tǒng)為centos7.4系統(tǒng),需要先升級到centos7.9,然后再轉(zhuǎn)成redhat7.9.
- 由于每個特定次要版本的 CentOS 7/8 所包含的內(nèi)核版本也會定期更新(見 CentOS 內(nèi)核版本 、RHEL 內(nèi)核版本),因此即便是相同次要版本的 CentOS 7.9 和 RHEL 7.9,他們使用的內(nèi)核版本也會有微小差異。轉(zhuǎn)換過程不能對內(nèi)核版本進行降級,即無法對內(nèi)核已經(jīng)升級到 3.10.0-1160.105.1.el7 的 CentOS 7.9 轉(zhuǎn)換到內(nèi)核為 3.10.0-1160.el7 的 RHEL 7.9。因此在轉(zhuǎn)換時需要控制好 CentOS 和RHEL使用的Yum 源,一般 ISO 中包含的是稍早版本的介質(zhì),而官方在線 Yum Repo一般都是最新版本介質(zhì)。
轉(zhuǎn)換限制
- 有以下情況的 CentOS 無法直接將其轉(zhuǎn)換到 RHEL
- 不支持對使用 FIPS 模式運行的 CentOS 進行轉(zhuǎn)換。
- 不支持對帶有 RHEL內(nèi)核模塊之外的運行環(huán)境進行直接轉(zhuǎn)換(例如專用應(yīng)用程序、設(shè)備動程序的內(nèi)核模塊)。可以先將這些內(nèi)核模塊禁用,在轉(zhuǎn)換后再啟動。
操作系統(tǒng)轉(zhuǎn)換是如何進行的?
自動轉(zhuǎn)換過程在運行的系統(tǒng)上執(zhí)行。Convert2RHEL 工具將原始 Linux 發(fā)行版本中的所有 RPM 軟件包替換為其對應(yīng)的 RHEL 版本。在轉(zhuǎn)換過程結(jié)束時,需要重啟系統(tǒng)來引導到 RHEL 內(nèi)核。
備注:對于只存在于原始發(fā)行版本中、且在 RHEL 軟件倉庫中沒有對應(yīng)軟件包的軟件包,或在原始發(fā)現(xiàn)版本中存在的、不是來自原始 Linux 發(fā)行版本或 RHEL 的第三方軟件包,都不會受到轉(zhuǎn)換的影響。
支持的轉(zhuǎn)換和不支持的轉(zhuǎn)換的區(qū)別?
紅帽允許從多個不同的基于 RHEL 的操作系統(tǒng)轉(zhuǎn)換到 RHEL。但是,如果是紅帽不支持的轉(zhuǎn)換,則代表轉(zhuǎn)換過程沒有經(jīng)過紅帽測試,您需要自己承擔轉(zhuǎn)換可能會帶來的風險。對于紅帽支持的轉(zhuǎn)換,代表紅帽已對轉(zhuǎn)換過程進行了全面的測試,下面是支持的轉(zhuǎn)換列表
03 實操階段
CentOS 轉(zhuǎn)換 RHEL 示例 轉(zhuǎn)換示例環(huán)境 本示例模擬以下環(huán)境,使用 RHEL 7.9 ISO 文件作為轉(zhuǎn)換使用的 yum repository 源,因此需要以下環(huán)境即可:
當前可運行的 CentOS 7.9 操作系統(tǒng) RHEL 7.9 ISO 文件(rhel-server-7.9-x86_64-dvd.iso) 從CentOS 至 RHEL 轉(zhuǎn)換過程 查看當前 CentOS版本
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
在 CentOS 中安裝 convert2rhel 方法1:在 CentOS 中執(zhí)行命令,分別下載 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 中執(zhí)行命令,基于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 中執(zhí)行命令,掛載RHEL的ISO文件
$ mkdir -p /mnt/rhiso
$ mount -o loop rhel-server-7.9-x86_64-dvd.iso /mnt/rhiso
在 CentOS 中執(zhí)行命令,用掛載的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,需要執(zhí)行以下命令。
$ 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
執(zhí)行轉(zhuǎn)換過程,執(zhí)行以下命令,如果沒有問題,convert2rhel 工具將自動完成轉(zhuǎn)換 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,執(zhí)行以下命令:
$ convert2rhel --disable-submgr --disablerepo=* --enablerepo RHEL8-BaseOS --enablerepo RHEL8-AppStream -y --no-rpm-va
執(zhí)行成功,查看系統(tǒng)版本,確認已經(jīng)轉(zhuǎn)換到 RHEL 7.9了
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
最后重啟及完成轉(zhuǎn)換。
$ reboot
轉(zhuǎn)換后由于CentOS沒有安裝 subscription-manager,因此要注冊RHEL訂閱,需要運行以下命令安裝相關(guān)軟件包
$ yum -y install subscription-manager subscription-manager-rhsm-certificates
04 FAQ
問題一、centos7.9以下執(zhí)行轉(zhuǎn)換步驟會有如下錯誤,需要先升級到指定版本才能轉(zhuǎn)換
問題二、第三方模塊導致轉(zhuǎn)換失敗
官方給出的解決方式參考: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
問題三、內(nèi)核不匹配問題
安裝了rpm包后,需要重啟一次操作系統(tǒng),重啟后會切換內(nèi)核版本為1160,然后再執(zhí)行一遍命令轉(zhuǎn)換即可