CentOS系統轉換RHEL系統實操
隨著 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目標版本
- convert2rhel 工具支持對 CentOS 7/8 進行轉換(由于 CentOS 6 已經停更,因此已不再被支持,centos6需要先升級)。
- convert2rhel 只支持從一個主版本的 CentOS 轉換到對應版本的 RHEL,不能跨主版本轉換。例如從 CentOS 7.9 只能直接轉換到 RHEL 7.9,而不能直接轉換到 RHEL 8
- convert2rhel 只支持直接將最后一個次要版本的 CentOS 7/8 轉換到對等版本的 RHEL 7/8,目前分別是 CentOS 7.9 和 CentOS 8.5。如果被轉換的 CentOS 7/8 低于以上版本,則需要先進行升級。例如你的系統為centos7.4系統,需要先升級到centos7.9,然后再轉成redhat7.9.
- 由于每個特定次要版本的 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一般都是最新版本介質。
轉換限制
- 有以下情況的 CentOS 無法直接將其轉換到 RHEL
- 不支持對使用 FIPS 模式運行的 CentOS 進行轉換。
- 不支持對帶有 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,然后再執行一遍命令轉換即可