全部產品
Search
文件中心

Elastic Compute Service:Red Hat Enterprise Linux(RHEL)7升級為RHEL 8

更新時間:Aug 01, 2024

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進行升級。

操作步驟

重要

升級操作有一定風險。在升級之前,建議建立一個雲端硬碟快照備份重要資料,瞭解升級過程和可能出現的問題,並謹慎操作。

  1. 使用root使用者遠端連線RHEL 7系統的ECS執行個體。

    具體操作,請參見通過密碼或密鑰認證登入Linux執行個體

  2. 準備升級環境。

    1. 運行以下命令,將RHEL 7系統升級到最新,並重啟系統生效。

      yum -y update
      reboot
    2. 運行以下命令,在RHEL 7系統上安裝Leapp升級工具。

      yum -y install leapp leapp-rhui-alibaba --enablerepo="*"
  3. 預升級檢查。

    由於RHEL 7和RHEL 8的系統差異較大,在升級前需要先通過Leapp工具對系統進行預升級檢查。您可以查看Leapp工具的檢查結果,並根據Leapp工具的建議進行修複,以滿足升級需求。

    1. 運行以下命令,進行預升級檢查,預設升級至RHEL 8最新版本。

      leapp preupgrade  --no-rhsm
      說明
      • 您也可以指定具體的目標版本,例如升級至RHEL 8.8版本,需運行leapp preupgrade --no-rhsm --target 8.8命令。

      • 您可以通過leapp preupgrade -h命令查看系統支援升級的目標版本。

    2. 查看預升級結果。

      Leapp工具預升級的檢查日誌儲存在以下記錄檔中:

      • /var/log/leapp/leapp-preupgrade.log:Leapp工具的日誌

      • /var/log/leapp/leapp-report.txt:文字格式設定的預升級檢查報告

      • /var/log/leapp/leapp-report.json :JSON格式的預升級檢查報告

      預升級檢查失敗後,會列印出一些具體檢查失敗項, 如下圖所示。

      image.png

    3. 處理預升級結果。

      您可以在記錄檔/var/log/leapp/leapp-report.txt中查看具體的報告資訊,並根據Leapp工具的建議進行修複。以下列出一些常見的預升級檢查結果的處理辦法。

      • 案例1:系統中安裝了多個核心版本

        Risk Factor: high (inhibitor)
        Title: Multiple devel kernels installed
        Summary: DNF cannot produce a valid upgrade transaction when multiple kernel-devel packages are installed.
        Remediation: [hint] Remove all but one kernel-devel packages before running Leapp again.
        [command] yum -y remove kernel-devel-3.10.0-1160.11.1.el7

        處理辦法:系統中安裝了多個核心版本,需要卸載舊的核心包。您可以根據leapp工具的提示命令卸載舊核心,例如本案例中的yum -y remove kernel-devel-3.10.0-1160.11.1.el7

      • 案例2:系統中載入了RHEL 8不支援的核心模組

        Risk Factor: high (inhibitor)                                                                                                                                                                                         
        Title: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.                                                                                                                
        Summary: Support for the following RHEL 7 device drivers has been removed in RHEL 8:                                                                                                                                  
             - floppy

        處理辦法:部分模組(例如本案例的floppy模組)在RHEL 8上不支援,您可以運行以下命令進行卸載。

        rmmod floppy
      • 案例3:sshd_config配置異常

        Risk Factor: high (inhibitor)
        Title: Possible problems with remote login using root account
        Summary: OpenSSH configuration file does not explicitly state the option PermitRootLogin in sshd_config file, which will default in RHEL8 to "prohibit-password".
        Remediation: [hint] If you depend on remote root logins using passwords, consider setting up a different user for remote administration or adding "PermitRootLogin yes" to sshd_config. 
        If this change is ok for you, add explicit "PermitRootLogin prohibit-password" to your sshd_config to ignore this inhibitor

        處理辦法:

        1. 將設定檔/etc/sshd/sshd_config中的PermitRootLogin預設值配置為yes

          說明

          RHEL 7和RHEL 8的PermitRootLogin的預設值有差異:

          • RHEL 7:預設值為yes,表示允許root使用密碼、密鑰登入。

          • RHEL 8:預設值為prohibit-password,表示禁止密碼登入。

        2. 運行以下命令,重啟sshd服務。

          systemctl restart sshd
      • 案例4:沒有編輯確認應答檔案

        Risk Factor: high (inhibitor)
        Title: Missing required answers in the answer file
        Summary: One or more sections in answerfile are missing user choices: remove_pam_pkcs11_module_check.confirm
        For more information consult https://leapp.readthedocs.io/en/latest/dialogs.html
        Remediation: [hint] Please register user choices with leapp answer cli command or by manually editing the answerfile.
        [command] leapp answer --section remove_pam_pkcs11_module_check.confirm=True

        處理辦法:本案例需要刪除RHEL 8上不支援的pam模組,需要在應答檔案/var/log/leapp/answerfile中確認,您可以運行以下命令將confirm設定為True進行確認。

        leapp answer --section remove_pam_pkcs11_module_check.confirm=True

        image.png

  4. 運行以下命令,進行升級,預設升級至RHEL 8最新版本。

    leapp upgrade  --no-rhsm
    說明

    您也可以指定具體的目標版本,例如升級至RHEL 8.8版本,需運行leapp upgrade --no-rhsm --target 8.8命令。

    如下圖所示,表示升級成功。

    image.png

  5. 運行以下命令,重啟進入新系統。

    reboot
  6. 升級後驗證。

    • 查看升級的執行日誌或報告是否正常。

      進入新的作業系統後,可以通過/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上運行是否正常。

  7. (條件必選)運行以下命令,配置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文檔。