RHEL 8からRHEL 9へのインプレースアップグレード(前編)

Red Hat Enterprise Linux (以下RHEL)では、RHEL 8からRHEL 9の様にメジャーバージョンをアップグレードすることが可能です。このようなアップグレードは「インプレースアップグレード」と呼ばれます。

RHEL 8からRHEL 9へのインプレースアップグレードの手順とポイントについて、前編と後編の二回に分けて解説します。

本記事では、まず前編として、アップグレード処理前の確認手順について解説します。

背景と事前準備

とあるアプリケーションが稼働しているサーバーがあり、OSはRHEL 8.10を使用しています。このアプリケーションの現行バージョンのサポート期間が終了するため、このアプリケーションの最新バージョンへのバージョンアップが必要となりました。

しかし、そのアプリケーションの最新バージョンの動作要件を確認したところ、OSはRHEL 9のみをサポートしているとあるため、アプリケーションのバージョンアップを行うには、まずOSをRHEL 9にアップグレードする必要がありました。

新規にRHEL 9のサーバーを用意してアプリケーションの最新バージョンのインストールを行い、アプリケーションの現行バージョンのデータや設定を移行するという方法も考えられますが、その移行方法が煩雑となります。

そこで、今回はOSのインプレースアップグレードを実施し、その後にアプリケーションをバージョンアップを実施することにしました。

なお、インプレースアップグレードの詳しい手順が記載されたドキュメントはRed Hatから公開されていますので、この内容に従って作業を進めます。

RHEL 8 から RHEL 9 へのアップグレード | Red Hat Enterprise Linux | 9 | Red Hat Documentation

システム要件の確認

まずアプリケーションのシステム要件を確認します。アプリケーションの最新バージョンのマニュアルのシステム要件のOSバージョンを確認したところ、以下の記載がありました。

The latest version of Red Hat Enterprise Linux 9

このため、OSはRHEL 9の最新バージョンとします。*1

なお、アプリケーションによっては最新バージョンはサポートしていない場合もあるため、必ずアプリケーションの要件を確認した上でOSのバージョンを決定します。このサーバーで複数のアプリケーションが稼働している場合は、すべてのアプリケーションのシステム要件を確認して、OSのバージョンを決定する必要があります。

また、アプリケーションだけではなく、サーバーのハードウェアや仮想基盤がそのOSのバージョンをサポートしているかどうかも確認が必要です。

インプレースアップグレードパス

RHEL 8のどのバージョンからでもRHEL 9へインプレースアップグレードできる訳ではありません。

EUS(Extended Update Support)を使用していない場合は、RHEL 8.10からRHEL 9の最新バージョン*2というパスになります。

もし、現在のOSのバージョンがRHEL 8.10より古い場合は、まずOSをRHEL 8.10にアップデートする必要があります。

引用元:第1章 サポート対象のアップグレードパス | RHEL 8 から RHEL 9 へのアップグレード | Red Hat Enterprise Linux | 9 | Red Hat Documentation

詳しくは以下を参照してください。

第1章 サポート対象のアップグレードパス | RHEL 8 から RHEL 9 へのアップグレード | Red Hat Enterprise Linux | 9 | Red Hat Documentation

またEUSについては以下を参照してください。

Red Hat Enterprise Linux (RHEL) Extended Update Support (EUS) の概要 - Red Hat Customer Portal

インプレースアップグレード実施前作業

バックアップ取得

インプレースアップグレードを行うサーバーのバックアップを取得します。

バックアップは、インプレースアップグレードに失敗した場合、元の状態に戻せるようにするために必要です。

※ 確実に元のサーバーの状態に戻すことができるのであれば、バックアップの手段は特に指定はありません。

サブスクライブ状態確認

インプレースアップグレードするサーバーがRed Hatにサブスクライブされていることを確認します。

今回使用しているRed HatアカウントはSimple Content Access (SCA)が有効となっているため、以下のメッセージが表示されます。

   # subscription-manager status
   +-------------------------------------------+
   システムのステータス詳細
   +-------------------------------------------+
   全体のステータス: 無効
   コンテンツアクセスモードは、シンプルコンテンツアクセスに設定されています。このホストは、サブスクリプションのステータスに関係なく、コンテンツにアクセスできます。
   
   システムの目的の状態: 無効

Simple Content Access については以下を参照してください。

Simple Content Access - Red Hat Customer Portal

レポジトリ確認

このサーバーに対してレポジトリ"rhel-8-for-x86_64-baseos-rpms"と"rhel-8-for-x86_64-appstream-rpms"が有効になっていることを確認します。

# subscription-manager repos --list-enabled

+----------------------------------------------------------+
    /etc/yum.repos.d/redhat.repo で利用可能なリポジトリー
+----------------------------------------------------------+
リポジトリー ID:  rhel-8-for-x86_64-baseos-rpms
リポジトリー名:   Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
リポジトリー URL: https://cdn.redhat.com/content/dist/rhel8/$releasever/x86_64/baseos/os
有効:             1

リポジトリー ID:  rhel-8-for-x86_64-appstream-rpms
リポジトリー名:   Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
リポジトリー URL: https://cdn.redhat.com/content/dist/rhel8/$releasever/x86_64/appstream/os
有効:             1

リリースバージョン設定

OSのリリースを8.10に固定します。

# subscription-manager release --set 8.10
リリースは次のように設定されています: 8.10

Leappユーティリティのインストール

インプレースアップグレードに必要なLeapp ユーティリティをインストールします。

# dnf install leapp-upgrade

全パッケージのアップデートと再起動

すべてのパッケージを最新にアップデートし、その後OSを再起動します。

    # dnf update
    # systemctl reboot

アップグレード前チェック

leappユーティリティでインプレースアップグレード前の処理を実行し、アップグレード可能かどうかチェックするレポートを作成します。

    # leapp preupgrade --target 9.6

レポートは/var/log/leapp/leapp-report.txtというファイルに作成されます。このレポートで"Inhibitor"(阻害要因)として報告された問題はアップグレードを実行する前に解決する必要があります。

レポート中に問題の内容と解決するための手順が記載されているので、それを参考に対応を行います。

以下に"Inhibitor"として報告された問題の例とその解決方法について説明します。

※ システムによってはこれ以外の問題が報告されることがありますが、レポートにはその問題の詳しい内容や対応方法とRed Hatのドキュメントへのリンクが記載されていますので、それらを参照して対応を行います。

問題例1:Cannot perform the VDO check of block devices

阻害要因

Risk Factor: high (inhibitor)

Title: Cannot perform the VDO check of block devices

Summary: The check of block devices could not be performed as the 'vdo' package is not installed. All VDO devices must be converted to LVM management prior to the upgrade to prevent the loss of data.Related links:

    - Importing existing VDO volumes to LVM: https://red.ht/import-existing-vdo-volumes-to-lvm

Remediation: [hint] Install the 'vdo' package and re-run upgrade to check for VDO devices requiring conversion or confirm that all VDO devices, if any, are managed by LVM.

解決方法

vdoパッケージをインストールします。

    # dnf install vdo

問題例2 Firewalld Configuration AllowZoneDrifting Is Unsupported

阻害要因

Risk Factor: high (inhibitor)

Title: Firewalld Configuration AllowZoneDrifting Is Unsupported

Summary: Firewalld has enabled configuration option "AllowZoneDrifting" which has been removed in RHEL-9. New behavior is as if "AllowZoneDrifting" was set to "no".

Related links:

    - Changes in firewalld related to Zone Drifting:

https://access.redhat.com/articles/4855631

    - Leapp Preupgrade check fails with error - "Inhibitor: Firewalld Configuration AllowZoneDrifting Is Unsupported".: https://access.redhat.com/solutions/6969130

Remediation: [hint] Set AllowZoneDrifting=no in /etc/firewalld/firewalld.conf

[command] sed -i s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/ /etc/firewalld/firewalld.conf

解決方法

Firewalldの"AllowZoneDrifting"オプションはRHEL 9でサポートされなくなったため、/etc/firewalld/firewalld.confの"AllowZoneDrifting=yes"を"AllowZoneDrifting=no"に修正する必要があります。

問題例3 Detected partitions mounted with the "noexec" option, preventing a successful in-place upgrade

阻害要因

Risk Factor: high (inhibitor)

Title: Detected partitions mounted with the "noexec" option, preventing a successful in-place upgrade.

Summary: Leapp detected that the /var mountpoint is mounted with the "noexec" option, which prevents binaries necessary for the upgrade from being executed. The upgrade process cannot continue with /var mounted using the "noexec" option.

Remediation: [hint] Temporarily remove the "noexec" option from /var entry in /etc/fstab until the system is upgraded, and remount the partition without the "noexec" option

解決方法

/varのマウントオプションに"noexec"オプションを設定していましたが、インプレースアップグレードの処理中はこのオプションを無効にする必要があります。

/etc/fstabを編集して、該当する/varの設定から"noexec"オプションを削除してください。

    /dev/mapper/rhel-var  /var   xfs   defaults,nodev,noexec,nosuid 0 0

その後、/varをマウントし直してください。

    # mount -o remount /var

インプレースアップグレードの処理が完了した後、マウントオプションに元の”noexec”オプションを追加した状態に戻してマウントし直す必要があります。

問題例4 Use of NFS detected. Upgrade can't proceed

阻害要因

Risk Factor: high (inhibitor)

Title: Use of NFS detected. Upgrade can't proceed

Summary: NFS is currently not supported by the inplace upgrade.

We have found NFS usage at the following locations:
- NFS shares found in /etc/fstab:
 - xxx.xxx.xxx.xxx:/nfs /mnt/nfs 
- NFS shares currently mounted:

 - xxx.xxx.xxx.xxx:/nfs /mnt/nfs 

解決方法

NFSマウントしている状態ではインプレースアップグレードを実施できないため、NFSマウントを一時的に無効にします。

/etc/fstabの該当するエントリをコメントアウトし、該当するマウントポイントをアンマウントしてください。

# umount /mnt/nfs

インプレースアップグレードの処理が完了した後、元のNFSマウントする状態に戻す必要があります。

問題例5 Possible problems with remote login using root account

阻害要因

Risk Factor: high (inhibitor)

Title: Possible problems with remote login using root account

Summary: OpenSSH configuration file will get updated to RHEL 9 version, no longer allowing root login with password. It is a good practice to use non-root administrative user and non-password authentications, but if you rely on the remote root login, this change can lock you out of this system.

解決方法

sshでrootログインが許可されているので無効にする必要があります。

/etc/ssh/sshd_configの"PermitRootLogin yes"を"PermitRootLogin no"に変更後、sshdサービスを再起動します。

    # systemctl restart sshd.service

Leappユーティリティ再実行

すべての"Inhibitor"として報告された問題の対応が完了したら、再度Leappユーティリティを実行します。

# leapp preupgrade --target 9.6 

/var/log/leapp/leapp-report.txtを再確認して"Inhibitor"として報告されていた問題が解決したことを確認します。この状態になればインプレースアップグレードを実行することができます。

============================================================

                      REPORT OVERVIEW                      

============================================================

 

HIGH and MEDIUM severity reports:

  1. Leapp detected loaded kernel drivers which are no longer maintained in RHEL 9.

 

Reports summary:

    Errors:                      0

    Inhibitors:                  0

    HIGH severity reports:       0

    MEDIUM severity reports:     0

    LOW severity reports:        1

    INFO severity reports:       2

 

Before continuing, review the full report below for details about discovered problems and possible remediation instructions:

    A report has been generated at /var/log/leapp/leapp-report.txt

    A report has been generated at /var/log/leapp/leapp-report.json

 

============================================================

                   END OF REPORT OVERVIEW                  

============================================================

まとめ

前編では、インプレースアップグレードを実行する準備の手順について説明しました。

後編では、アップグレードの実施と、その後に行う手順について説明します。

*1:本記事では9.6

*2:本記事では9.6

執筆担当者プロフィール
佐久間 賢

佐久間 賢(日本ビジネスシステムズ株式会社)

普段は主にRed Hat Enterprise Linuxをメインにデリバリしています

担当記事一覧