RHEL7 から RHEL8 へのアップグレードを実現するツール「Leapp」を試してみる

Blog

Red Hat Enterprise Linux 7(RHEL7)がEOLを2024年6月30日に迎えるにあたり、移行の計画や延長サポートの準備に入られている方も多いかと思います。今回はRHEL7からRHEL8にアップグレードを行ってくれるツール「Leapp」を実際に利用してみた検証結果を元にツールをご紹介したいと思います。

Leappは、OS とアプリケーションの最新化フレームワークです。このツールを利用することで再インストールすることなく既存のRHEL7環境をRHEL8環境へとアップグレードを実現します。

注意点として、すべてのシステムで完璧な移行を実現できるものではないため、事前に検証環境を用意頂きアップグレードが問題なく実施できるかどうかの確認は行っていただく必要があります。

事前の準備

Leappのサポート対象のアップグレードパスを事前にご確認ください。Leappを実施するには現在の環境がRHEL 7.9の最新パッケージの適用が行われている状態であることが前提条件となります。

また、ターゲットOSバージョンとしては、RHEL 8.8がデフォルトでの指定となります。

アーキテクチャーおよびシステム設定ソース OS バージョンターゲット OS バージョン
64 ビット Intel、IBM POWER 8、および 64 ビット IBM ZRHEL 7.9RHEL 8.6
RHEL 8.8 (デフォルト)
IBM POWER 9 (リトルエンディアン) および IBM Z (Structure A)RHEL 7.6RHEL 8.4
RHEL with SAP HANARHEL 7.9RHEL 8.6(デフォルト)
RHEL 8.8
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html-single/upgrading_from_rhel_7_to_rhel_8/index#doc-wrapper

次にハードウェア要件がターゲットのOSに対して要件を満たしているかご確認ください。
RHEL8の最小証券を下記にまとめましたのでご確認ください。詳細はこちらのページをご確認ください。要求は大きく変わらないように見えますので多くのシステムでは問題なく要件は満たせると思います。

Maximum logical CPUs :768 [8192]
※Red Hat は、論理 CPU をスケジュール可能なエンティティとして定義します。したがって、マルチコア/スレッド プロセッサ内のすべてのコア/スレッドは論理 CPU です。

Minimum required memory:1.5 GiB for local media or NFS network installation, 3 GiB for HTTP(S) and FTP network installation

Minimum required disk space:10GB minimum, 20GB recommended

https://access.redhat.com/articles/rhel-limits

次にRed Hat Subscription Manager を利用して、システムのサブスクリプションが有効かご確認ください。また、Red Hat CDNもしくはRed Hat Satelliteにて登録されていることをご確認ください

※ ここから先の作業は root ユーザーにて実施しております。

# subscription-manager status
+-------------------------------------------+
   System Status Details
+-------------------------------------------+
Overall Status: Disabled
Content Access Mode is set to Simple Content Access. This host has access to content, regardless of subscription status.

System Purpose Status: Disabled

Simple Content Access (SCA) が有効になっているアカウントを使用してシステムが登録されている場合は、Content Access Mode is set to Simple Content Access というメッセージが表示されることを確認します。

SCA が無効になっているアカウントを使用してシステムが登録されている場合は、Red Hat Linux Server サブスクリプションがアタッチされていること、製品名が Server で、ステータスが Subscribed であることを確認します。

# subscription-manager list --installed

レポジトリの有効化

Leapp をインストールするために以下の2つのレポジトリの有効化を行います。

1.Base リポジトリーを有効にします。

# subscription-manager repos --enable rhel-7-server-rpms

2.Leapp およびその依存関係が利用可能な Extras リポジトリーを有効にします。

# subscription-manager repos --enable rhel-7-server-extras-rpms

3.最新のRHEL7のコンテンツを使用するように Red Hat Subscription Manager を設定します。

# subscription-manager release --unset

※ 特定のマイナーバージョンの固定化やパブリッククラウドの提供するRHELインスタンスおよびレポジトリをご利用の方はアクセス方法が異なる場合があります。その場合はこちらのドキュメントを参照の上でご利用ください。

RHEL7を最新のパッケージへアップデート

RHEL7環境のすべてのパッケージを最新版にアップデートします。

# yum update
Loaded plugins: amazon-id, search-disabled-repos
rhui-client-config-server-7                                                                                        | 2.0 kB  00:00:00     
rhui-rhel-7-server-rhui-rh-common-rpms                                                                             | 3.8 kB  00:00:00     
rhui-rhel-7-server-rhui-rpms                                                                                       | 3.5 kB  00:00:00     
(1/8): rhui-rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/updateinfo                                            |  34 kB  00:00:00     
(2/8): rhui-client-config-server-7/x86_64/primary                                                                  | 2.4 kB  00:00:00     
(3/8): rhui-rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/primary_db                                            | 119 kB  00:00:00     
(4/8): rhui-client-config-server-7/x86_64/updateinfo                                                               |   71 B  00:00:00     
(5/8): rhui-rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/group                                                 |  124 B  00:00:00     
(6/8): rhui-rhel-7-server-rhui-rpms/7Server/x86_64/updateinfo                                                      | 4.3 MB  00:00:00     
(7/8): rhui-rhel-7-server-rhui-rpms/7Server/x86_64/group                                                           | 631 kB  00:00:00     
(8/8): rhui-rhel-7-server-rhui-rpms/7Server/x86_64/primary_db                                                      |  96 MB  00:00:00     
rhui-client-config-server-7                                                                                                         12/12
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.18.0-5.el7_7.1 will be updated
---> Package NetworkManager.x86_64 1:1.18.8-2.el7_9 will be an update
・・・・(略)
 python2-futures                              noarch       3.1.1-5.el7                           rhui-rhel-7-server-rhui-rpms        29 k
Transaction Summary
==========================================================================================================================================
Install    2 Packages (+6 Dependent packages)
Upgrade  169 Packages
Total download size: 276 M
Is this ok [y/d/N]: 

更新されるパッケージ情報が出力され、更新の確認が行われますので問題がなければ「y」を入力して実行してください。

Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/177): NetworkManager-config-server-1.18.8-2.el7_9.noarch.rpm                                                    | 151 kB  00:00:00     
(2/177): NetworkManager-1.18.8-2.el7_9.x86_64.rpm                                                                  | 1.9 MB  00:00:00     
・・・・(中略)
  xz.x86_64 0:5.2.2-2.el7_9                                     xz-libs.x86_64 0:5.2.2-2.el7_9                                            
  yum.noarch 0:3.4.3-168.el7                                    yum-utils.noarch 0:1.1.31-54.el7_8                                        
  zlib.x86_64 0:1.2.7-21.el7_9                                 
Replaced:
  iwl7265-firmware.noarch 0:22.0.7.0-72.el7                                                                                               
Complete!

最後に「Complete!」が表示されたらアップデートが完了です。再起動を行いログインを行ってください。

# reboot

再起動後に Leapp ユーティリティをインストールします。

# yum install leapp-upgrade
Loaded plugins: amazon-id, search-disabled-repos
rhel-7-server-rhui-rh-common-rpms                                                                                  | 3.8 kB  00:00:00     
rhel-7-server-rhui-rpms                                                                                            | 3.5 kB  00:00:00     
(1/6): rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/updateinfo                                                 |  34 kB  00:00:00     
(2/6): rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/group                                                      |  124 B  00:00:00     
(3/6): rhel-7-server-rhui-rh-common-rpms/7Server/x86_64/primary_db                                                 | 119 kB  00:00:00     
(4/6): rhel-7-server-rhui-rpms/7Server/x86_64/group                                                                | 631 kB  00:00:00     
(5/6): rhel-7-server-rhui-rpms/7Server/x86_64/updateinfo                                                           | 4.3 MB  00:00:00     
(6/6): rhel-7-server-rhui-rpms/7Server/x86_64/primary_db                                                           |  96 MB  00:00:00     
No package leapp-upgrade available.
Error: Nothing to do

Leapp ユーティリティのインストールが完了したら、アップグレードの確認に移ります。

その前に、次の項目に該当がないかご確認ください。該当がある場合はアップグレード作業に影響が発生する可能性があるためドキュメントに記載の注意事項をご確認ください。

  • ウイルス対策ソフトウェアが導入されている場合は無効にしてください。
  • 設定管理システムがインプレースアップグレードプロセスに干渉しないようにします。
    • Puppet、Salt、Chef などのクライアントサーバーアーキテクチャより設定管理システムをご利用されている場合は無効化を行ってください。
    • Ansible などのエージェントレスアーキテクチャで設定管理システムを使用する場合はインプレースアップグレード中に実行しないでください。
  • システムで、カーネル (eth) が使用する接頭辞に基づいた名前で、複数の Network Interface Card (NIC) が使用されていないことを確認します。RHEL 8 へのインプレースアップグレードの前に別の命名スキームに移行する方法は RHEL 7 でカーネルの NIC 名を使用している場合に RHEL 8 へのインプレースアップグレードを実行する方法 を参照してください。
  • ISO イメージを使用してアップグレードする場合は、ISO イメージにターゲット OS バージョン (RHEL 8.8 など) が含まれていること、およびアップグレードプロセス全体を通じて Leapp ユーティリティーがイメージにアクセスできるように永続的なローカルマウントポイントに保存されていることを確認してください。
  • システム全体のバックアップまたは仮想マシンのスナップショットが存在することを確認してください。これにより、ご利用の環境で、以下の標準の災害復旧手順に従って、システムをアップグレード前と同じ状態に戻せるようになります。

事前のアップグレードの可能性の評価

Leappを利用してアップグレードを実施する前に Leapps preupgrade コマンドを利用してアップグレード前に Leapp ユーティリティがシステムに関するデータを収集してアップグレード可能性を評価し、レポートを作成します。

アップグレード前に評価レポートを確認し、潜在的な問題を事前に対処することでアップグレードを問題なく実施できるようにします。実行コマンドは leapp preupgrade –target <target_os_version> になります。今回はターゲットとするOSバージョンは RHEL8.8 とするため、下記のコマンドにしています。

# leapp preupgrade --target 8.8

出力の最後に下記のようにレポートが出力されるので、エラー内容を1ずつ潰していきます。

============================================================
                     UPGRADE INHIBITED                      
============================================================
Upgrade has been inhibited due to the following problems:
    1. Inhibitor: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.
    2. Inhibitor: Possible problems with remote login using root account
    3. Inhibitor: Minimum memory requirements for RHEL 8 are not met
    4. Inhibitor: Missing required answers in the answer file
Consult the pre-upgrade report for details and possible remediation.
============================================================
                     UPGRADE INHIBITED                      
============================================================
Debug output written to /var/log/leapp/leapp-preupgrade.log
============================================================
                           REPORT                           
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
                       END OF REPORT                        
============================================================

今回は下記の4項目の問題点がレポートされました。今回の4項目はすべてレッドハット社のナレッジベースにて検索で該当する既知の問題になるため解決方法が確認できます。

Upgrade has been inhibited due to the following problems:
1. Inhibitor: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.
2. Inhibitor: Possible problems with remote login using root account
3. Inhibitor: Minimum memory requirements for RHEL 8 are not met
4. Inhibitor: Missing required answers in the answer file

今回の検証環境ではAWS上でCloud Accessを利用したRHEL環境を最小のt2microというインスタンスで立ち上げていたために、最小メモリが要件を満たしていない問題の3番と、RHEL8で用意されていないKernelドライバの検出の1番の問題がありました。解決方法として、インスタンスを t3midium に変更することで問題を解決しました。

小さすぎるシステム構成や古いハードウェアを利用している場合に同じ問題を引く可能性がありますのでご注意ください。物理サーバーでこの問題が発生する場合は仮想マシンやクラウドリフトなどの手段も検討ください。

また、2番については、今回AWS環境を利用していることでrootアカウントのリモートログインが許可されてないことの問題点が指摘されました。こちらは下記の作業を行うことで解消できます。

# vi /etc/ssh/sshd_config
・・・
# Authentication:

#LoginGraceTime 2m
PermitRootLogin yes ←この設定がコメントアウトされている場合は#を外します。
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

設定を反映します。

# systemctl restart sshd

最後に4番のエラーについては、Anserfile への回答が必要になるため、コマンド内に質問を応えるかAnserfile内に回答を記述するかのいずれかを実施ください。私の環境では下記を修正しました。

# cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title:              None
# Reason:             Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label:              Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description:        PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD.
# Reason:             Leaving this module in PAM configuration may lock out the system.
# Type:               bool
# Default:            None
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
confirm = true ← コメントの#を削除し、trueを入力

私の検証環境では以上の作業にてエラーが解消されて Leapp が実行出来る状態になりました。ここは環境毎に出力される問題は異なりますので、エラーメッセージを確認し一つ一つ問題を解消頂き、アップグレードの準備を進めてください。

Leapp ユーティリティを使用してアップグレードを実行

事前の準備とアップグレードの可能性評価も終えましたら、Leappユーティリティを使用してアップグレードを実行します。実施前にはかならずバックアップを取得頂き、問題が発生した場合にも実施前の環境に戻せるように準備を行ってください。

Leapp ユーティリティを実行し、アップグレードプロセスを開始します。

# leapp upgrade --target 8.8

アップグレードプロセスには時間がかかりますので完了までしばらくお待ち下さい。

Transaction Summary
=============================================================================================================================================
Install    256 Packages
Upgrade    268 Packages
Remove      72 Packages
Downgrade    7 Packages
Total size: 693 M
DNF will only download packages, install gpg keys, and check the transaction.
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Complete!
====> * add_upgrade_boot_entry
        Add new boot entry for Leapp provided initramfs.
A reboot is required to continue. Please reboot your system.
Debug output written to /var/log/leapp/leapp-upgrade.log
============================================================
                           REPORT                           
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
                       END OF REPORT                        
============================================================
Answerfile has been generated at /var/log/leapp/answerfile

アップグレードプロセスが終了してエラーなくレポートが表示されたらアップグレードプロセスは完了になります。再起動してRHEL8としてのシステムで起動させます。この再起動は通常の再起動と異なり時間がかかりますのでご注意ください。

# reboot

RHEL8システムのアップグレード確認

再起動したシステムにてレッドハットリリースの情報を確認することで、RHEL7システムがRHEL8システムに変更されたことが確認できます。

# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.8 (Ootpa)

また、カーネルバージョンの確認でも同様に確認することができます。

# uname -r
4.18.0-477.27.1.el8_8.x86_64

まとめ

Leapp ユーティリティを利用することで、RHEL7のシステムをインプレースアップグレードすることが可能になります。このユーティリティは環境によっては利用が難しいケースもありますが、シンプルな構成のサーバーシステムであれば容易にアップグレードが行える可能性があります。

RHEL7システムがEOLを迎えるにあたり、これからシステムリプレイスの検討される方には一つの方法としてLeappユーティリティによるインプレースアップグレードも加えて頂けたらと思います。

新規にシステムをインストール頂き、システムを移行するパターンが適する場合もありますので Leappユーティリティが全てでもないことはご承知おきいただけたらと思います。

長文となりましたが、最後までご覧頂きまして誠にありがとうございました。