採用情報

お問い合わせ

BLOG

Linux の知識・学習 BLOG

Linux の知識・学習 BLOG

2024 年 05 月 09 日

CentOS 7 から AlmaLinux 8 へマイグレーションするには:インプレースでのメジャーバージョン移行方法

概要

通常、OS のメジャーバージョンを新しいバージョンに上げる場合、特に RHEL 派生のディストリビューションではクリーンインストールを行って移行 ( マイグレーション ) することが標準的です。とはいえ、いくつかの制約などがあるものの既存の環境やデータを維持したまま新しいバージョンに入れ替えるインプレースでのメジャーバージョン移行を実現するツールがあります。当記事では CentOS Linux 7 から AlmaLinux 8 への移行する場合を例に Leapp ユーティリティと ELevate Project、そしてツールの使い方について解説します。

ELevate Project とは?

ELevate Project は Leapp というユーティリティにいくつかのパッチを当てたり、バージョン間の対応データを作成して、RHEL 派生ディストリビューションでのメジャーバージョン移行を可能にするプロジェクトです。オリジナルの Leapp は Red Hat Enterprise Linux 上で動作するのが基本であり、ダウンストリームの派生ディストリビューションでの動作は特に想定されていません。この隙間を埋め、派生ディストリビューションでも Leapp を動作可能にするのが ELevate Project です。The AlmaLinux Project のサブプロジェクトとして活動しています。

使い方

典型ケース : CentOS Linux 7 から AlmaLinux 8 へマイグレーション

https://wiki.almalinux.org/elevate/ELevate-quickstart-guide.html で紹介されている手順を日本語で紹介します。

  1. 移行前にインストールされているパッケージを最新バージョンへアップグレードし、再起動する。
    $ sudo yum upgrade -y
    $ sudo reboot
    CentOS Linux 7 において、EOL を迎えた後は リポジトリの URL を vault.centos.org に変更する必要があるかもしれません。(2024 年 6 月以降 )
  2. elevate-release-latest-el7 をインストールする。
    $ sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
    
    "rpm --eval %rhel" は 現在使っているメジャーバージョンの番号を返してくれます。CentOS Linux 7 上では 7 が返ってくるので、elevate-release-latest-el7.noarch.rpm をインストールします。
  3. Leapp と AlmaLinux 向けの対応データをインストールする。
    $ sudo yum install -y leapp-upgrade leapp-data-almalinux
    
  4. アップグレード前にシステムの状態を確認する。
    $ sudo leapp preupgrade
    
    leapp ユーティリティを用いて、システムの状態を確認します。
    この実行結果として、レポートとアンサーファイルが生成されます。
    レポートのパスは "/var/log/leapp/leapp-report.txt"、アンサーファイルは "/var/log/leapp/answerfile" に生成されます。
  5. レポートを確認し、アンサーファイルに回答する。( この詳細は後述します )
  6. アップグレードを leapp に指示し、再起動する
    $ sudo leapp upgrade
    $ sudo reboot
    もし、leapp upgrade を開始できなかった場合は、レポートやアンサーファイルを確認してみましょう。Inhibitor な項目がある場合、適切な処置がされていなければユーティリティは動作を開始しません。
  7. 再起動時、leapp によって生成された initramfs を動作させる。( 自動 )
    このとき、アップグレードに失敗する可能性もありますので、いきなりプロダクション環境で実行するのは賢明ではないでしょう。また、環境のリソースが不十分な場合、アップグレードプロセスが止まってしまう場合があります。( 筆者の場合、仮想マシンで実行していたところ プロセスが SIGKILL により停止したため、調査の結果、割当メモリを増量したところ解決しました ) 他にも、パッケージの依存解決に失敗した結果、アップグレードも失敗するなどのケースも存在するようです。
  8. メジャーバージョンがアップグレードされていることを確認する
    $ cat /etc/os-release  | head -n2
    NAME="AlmaLinux"
    VERSION="8.9 (Midnight Oncilla)"
    

レポートとアンサーファイル

leapp を用いて preupgrade を行うと、leapp はシステムを検査してアップグレードする前にチェックすべきレポートを出力してくれます。例えば以下のような内容です。

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-693.el7
Key: 8ceea81afbbb1a329b7d82ca7212b21509e5b256
----------------------------------------
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
Key: d35f6c6b1b1fa6924ef442e3670d90fa92f0d54b

[... 略 ...]

----------------------------------------
Risk Factor: info
Title: SElinux relabeling will be scheduled
Summary: SElinux relabeling will be scheduled as the status is permissive/enforcing.
Key: 8fb81863f8413bd617c2a55b69b8e10ff03d7c72
----------------------------------------

ハイフンで区切られた各項目には leapp が出力したマイグレーションに際して、チェックするべき項目が報告されています。
Risk Factor が高い順に並び、(inhibitor) がついている項目は対処する、またはリスクを確認したことをアンサーファイルに 'True' を埋めなければ leapp によるマイグレーションは実行できません。また medium, low, info に分類される項目も、新しいメジャーバージョンにおける非互換な変更や注意点、マイグレーションに際して起こりうる注意・警告事項などを提示してくれるので一通り目を通しましょう。

では、実際に inhibitor な項目に対処しましょう。
"Multiple devel kernels installed" は 複数の kernel パッケージがインストールされているという項目です。kernel-devel パッケージはカーネルモジュールのビルドなどに必要な場合にインストールしますが、マイグレーション後ではカーネルのバージョンそのものが RHEL-8 系に上がってしまうので、アンインストールしても問題が無いと考えられます。そのため、 Remediation にあるとおり、yum remove によって、当該パッケージをアンインストールします。

$ sudo yum -y remove kernel-devel-3.10.0-693.el7

"Missing required answers in the answer file" は answerfile に 答えていない項目があるというそのままの内容です。answerfile の中身を見てみましょう。

# 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 =

この内容によると、remove_pam_pkcs11_module_check.confirm に答える必要があります。PAM( 特権アクセス管理 ) のモジュール pam_pkcs11 は RHEL-8 系のシステムでは SSSD で置き換えられているので、利用可能ではないことを確認する必要があるということです。個々のユーザーはこの変更が自分の運用するシステムで影響を及ぼすかどうか確認するべきですが、説明文によれば 8 系では SSSD で同等のことができると思われますので、便宜上コメントアウトを外し、confirm を True とします。以下のコマンドでも同等の編集ができます。

$ sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

これにてサンプルにあった inhibitor な項目はすべて対処しました。よって、leapp upgrade を実行することができます。

次回は、マイグレーションを行う際の注意点や、Leapp においてまだテスト中の機能について紹介します。[ 続く ]

AlamLinux OS サポートサービス ご相談・お問い合わせ
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime