ELevateを使用してCentOS 7からRocky LinuxまたはAlmaLinuxへ移行する方法

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

CentOS 7のサポート終了に伴う課題

CentOS 7は2024年6月30日に公式にサポートを終了しました。レガシーサーバーを管理している場合、この日付は単なる節目ではなく、インフラがセキュリティ上のリスクにさらされ始めた日を意味します。サポート終了(EOL)を迎えたディストリビューションを実行し続けることは、重要なカーネルパッチやセキュリティアップデートを受け取れなくなることを意味します。従来の解決策は「クリーンインストール」でしたが、特定の構成が必要な複雑な本番環境において、そのプロセスはしばしば悪夢となります。

かつてOS의 메ジャーアップグレードは、カスタムの依存関係を破壊し、長時間のトラブルシューティングを引き起こすストレスの多い作業でした。AlmaLinuxチームは、インプレース移行(上書きアップグレード)用に設計されたオープンソースプロジェクト「ELevate」をリリースすることで、このプロセスを簡素化しました。これにより、ドライブを初期化することなく、CentOS 7からRocky LinuxやAlmaLinuxなどの RHEL 8ベースのディストリビューションに移行できます。50台以上のサーバー群でテストした結果、老朽化したマシンにとってこれが最も信頼できる経路であることがわかりました。

ELevateフレームワークの仕組み

ELevateは、Red HatがもともとRHELのアップグレード用に構築したLeappユーティリティの「洗練された頭脳」のようなものだと考えてください。単にリポジトリのURLを書き換えるだけではありません。プロセスは、詳細なアップグレード前分析と、実際のパッケージトランザクションという2つの明確なフェーズで行われます。

このアップグレード前フェーズがセーフティネットとなります。ハードウェアドライバー、カーネルモジュール、インストール済みのソフトウェアをスキャンし、問題となる可能性のある要素を特定します。ターゲットバージョンで特定のドライバーが不足している場合、ELevateはシステムファイルが1つでも変更される前にプロセスを停止し、警告を発します。この保護レベルにより、手動の移行スクリプトよりもはるかに安全に実行できます。

ステップ1:準備とバックアップ

検証済みのバックアップなしでOSカーネルに触れてはいけません。VMスナップショット、Veeamバックアップ、あるいは外部ドライブへの単純なrsyncであっても、必ず復旧計画を立ててください。私は以前、小規模なステージングノードでこの手順をスキップした際、移行途中でファイルシステムが破損し、データベースの再構築に一晩費やしたことがあります。そのようなリスクは冒さないでください。

まず、CentOS 7システムがバージョン7.9に完全にパッチされていることを確認します。

sudo yum update -y
sudo reboot

再起動後、最新リリースであることを確認します。

cat /etc/redhat-release
# 出力結果: CentOS Linux release 7.9.2009 (Core)

ステップ2:ELevateとLeappのインストール

まず、ELevateリポジトリをインストールします。このリポジトリには、カスタマイズされたLeappツールと、CentOSとその最新の後継OSとの橋渡しに必要なメタデータが含まれています。

sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm

次に、ターゲットOSに応じたデータパッケージをインストールします。Oracle LinuxやEuroLinuxも選択できますが、多くのチームはRocky LinuxまたはAlmaLinuxを選択します。

AlmaLinuxの場合:

sudo yum install -y leapp-upgrade leapp-data-almalinux

Rocky Linuxの場合:

sudo yum install -y leapp-upgrade leapp-data-rocky

ステップ3:事前アップグレードチェックの実行

ここがプロセスの中で最も重要な部分です。以下のコマンドは、データを変更せずにドライラン(シミュレーション)を実行し、競合を特定します。4GBのRAMと40GBのSSDを搭載した標準的なVPSでは、通常3分以内に完了します。

sudo leapp preupgrade

/var/log/leapp/leapp-report.txt に生成されたレポートを確認してください。最初の実行では、ほぼ確実に「Inhibitors found(阻害要因が見つかりました)」というメッセージで失敗します。これは正常な動作です。ツールがシステムを破損から守っているだけです。

ほとんどの失敗は、いくつかの一般的な問題によって引き起こされます:

  • 非推奨のドライバー: フロッピードライブや特定のPATAコントローラーなどの古いハードウェアのサポートは、RHEL 8で削除されています。
  • SSH構成: RHEL 8では、デフォルトでSSH経由のrootログインが禁止されています。
  • 回答ファイル: ツールは、特定のリスクを明示的に承認することを要求します。

これらのブロックを解除するには、通常、以下のようなコマンドを実行します:

# 使用していない古いフロッピードライバーを削除
sudo rmmod floppy

# pam_pkcs11モジュールの削除を承認
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

ステップ4:移行の実行

preupgrade コマンドが最終的に「グリーンライト(合格)」を返したら、移行の準備は完了です。このステップでは、約500MBから1GBの新しいパッケージをダウンロードし、一時的なブート環境を構築します。

sudo leapp upgrade

ディスク速度にもよりますが、プロセスには10分から20分ほどかかります。コマンドが正常に終了すると、再起動を促すメッセージが表示されます。ここが公式な「後戻りできないポイント」です。

sudo reboot

再起動中にGRUBブートメニューを確認してください。「ELevate-Upgrade-Initramfs」という新しいエントリが表示されます。サーバーはこの環境で起動し、数千のCentOS 7パッケージをRockyまたはAlmaLinux 8のバージョンに置き換え始めます。90%のところで数分間止まっているように見えることがありますが、完了するまで辛抱高く待ってください。

ステップ5:移行後のクリーンアップ

システムが最後に再起動したら、ログインしてください。新しいオペレーティングシステムのログインバナーが表示されるはずです。念のためバージョンを確認します。

cat /etc/redhat-release
# 出力例: Rocky Linux release 8.10 (Green Obsidian)

すぐに重要なサービスを確認してください。RHEL 8では iptables の代わりに nftables が使用されるため、ファイアウォールルールが期待通りに機能しているか確認してください。

systemctl status httpd
systemctl status mariadb
sudo nft list ruleset

最後に、古いパッケージキャッシュをクリアし、システムを軽量に保つために移行ツールを削除して終了します。

sudo dnf clean all
sudo yum remove leapp-upgrade leapp-data-rocky

まとめ

CentOS 7からの移行はもはや避けて通れませんが、手作業による悲劇にする必要はありません。ELevateは、カスタム構成を失うことなくサーバー群を近代化するための、構造化された再現可能な方法を提供します。事前チェックフェーズで阻害要因の修正に15分費やすだけで、予測可能な移行が可能になります。まだCentOS 7を運用している場合は、今すぐ移行を開始しましょう。ELevateはこの作業において最も効率的なツールです。

Share: