ELevateを使用したCentOS 7からAlmaLinux/Rocky Linuxへのアップグレードガイド:再インストール不要で迅速かつスムーズに

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

CentOS 7のEOLとDevOpsエンジニアが直面する移行課題

2024年6月30日をもって、CentOS 7は公式に「EOL(End of Life)」を迎えました。もし、まだこのOSでサーバーを運用している場合、セキュリティパッチが提供されなくなるため、非常に大きなリスクを抱えることになります。私の現場でも、PHP 5.6やJava 8などのレガシーサービスを稼働させている数十台の旧型サーバーの管理は、移行を考える際にまさに悪夢でした。

そこで課題となるのが、「完全に新規インストール(Fresh Install)するか、それとも直接アップグレード(In-place Upgrade)するか?」という選択です。新規インストールの場合、Nginxの再構築MySQLの設定、ディレクトリ権限の設定など、膨大な細かい設定作業が発生します。しかし、AlmaLinuxチームによるオープンソースプロジェクトELevateを使えば、システムの現状を維持したまま、CentOS 7からRHELベースのディストリビューションへ直接アップグレードすることが可能です。

なぜ新規インストールではなくELevateを選ぶのか?

イメージしやすいように、私の現場で約20台のサーバーに導入した実体験に基づき、2つの方法を簡単に比較します。

1. 新規インストール(Fresh Install)方式

  • ワークフロー: データのバックアップ -> 新OSのインストール -> 環境の再構築 -> リストア。
  • 問題点: 1サーバーあたり通常2〜4時間のダウンタイムが発生します。最大のリスクは、/etc/配下に散在する設定ファイルのバックアップ漏れです。

2. ELevate(In-place Upgrade)の使用

  • ワークフロー: 稼働中のOS上でパッケージを自動変換するスクリプトを実行。
  • メリット: ユーザー、Crontab、SSHキー、および稼働中のサービスをそのまま保持できます。最初からインストールし直す場合に比べて、作業時間を約80%節約できます。
  • 制限事項: 公式リポジトリに含まれない外部ライブラリが大量にインストールされている場合、エラーが発生しやすくなります。

ELevateツールの評価

ELevateは単なる単純なスクリプトではありません。Red HatのLeappフレームワークに基づいており、非常に厳格なチェックプロセスを実行します。

利点:

  • 複数の移行先をサポート: AlmaLinux、Rocky Linux、さらには Oracle Linux を選択できます。
  • アップグレード前チェック(Pre-upgrade check)機能: 実際に変更を加える前に、ツールが潜在的なリスクをすべてリストアップします。
  • 完全に無料であり、コミュニティによって継続的にメンテナンスされています。

注意点: 現在、このツールはx86_64アーキテクチャのみをサポートしています。ARMチップを搭載したサーバーを使用している場合、現時点ではELevateは解決策になりません。

詳細な実行手順

重要な注意: 開始前に必ずシステム全体のスナップショットまたはバックアップを取得してください。アップグレードツールを100%過信してはいけません。

ステップ 1: CentOS 7を最新バージョンに更新する

まず、サーバーがバージョン7.9であることを確認します。以下のコマンドを実行してください。

sudo yum update -y
sudo reboot

ステップ 2: ELevateリポジトリのインストール

再起動後、ELevateのリポジトリパッケージをダウンロードします。

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

ステップ 3: Leappと移行先データのインストール

AlmaLinuxに移行するかRocky Linuxに移行するかに応じて、対応するパッケージをインストールします。ここでは安定性の高いAlmaLinuxを例にします。

# AlmaLinuxを移行先に選択
sudo yum install -y leapp-upgrade leapp-data-almalinux

ステップ 4: システムチェック(Pre-upgrade)の実行

これはサーバーの「健康診断」フェーズです。このコマンドはシステムをスキャンするだけで、アップグレードは実行されないため安全です。

sudo leapp preupgrade

結果は /var/log/leapp/leapp-report.txt ファイルに出力されます。「Inhibitor(阻害要因)」というエラーが表示された場合は、必ず対処する必要があります。以下は、よく遭遇する3つのエラーです。

  • PATA Driver: 新しいカーネルはこのドライバをサポートしていません。対処法: sudo rmmod pata_acpi
  • PermitRootLogin: RHEL 8ではroot権限の明示的な確認が必要です。対処法: sudo echo PermitRootLogin yes >> /etc/ssh/sshd_config
  • Answer file: 古いPAMモジュールの削除を確認する必要があります。コマンド: sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

ステップ 5: アップグレードの開始

preupgradeコマンドで SUCCESS が表示されたら、実際のアップグレードコマンドに進みます。このプロセスには、ハードウェア構成にもよりますが、通常15分から45分程度かかります。

sudo leapp upgrade
sudo reboot

ステップ 6: 結果の確認

再起動後、サーバーは一時的なアップグレード環境で起動します。操作せず、自動実行が終わるまで待ってください。ログイン画面が表示されたら、バージョンを確認します。

cat /etc/redhat-release
# 期待される結果: AlmaLinux release 8.10 (Cerulean Leopard)

エラーを回避するための「実戦」アドバイス

多くのシステムの移行に成功した後、いくつか注意すべき点が見えてきました。

  1. /bootパーティションの容量: このパーティションの空き容量が100MB未満の場合、アップグレードは確実に失敗します。古いカーネルを削除して空き容量を確保してください。
  2. SELinuxを一時的に無効化: permissive モードに変更することで、スクリプトがシステムファイルを上書きする際の権限エラーを回避できます。
  3. サードパーティ製リポジトリの処理: RemiやEPELなどのリポジトリは、アップグレード前に無効化(disable)しておくべきです。新OSに移行した後、RHEL 8に対応するバージョンを再インストールしてください。

ELevateをマスターすれば、CentOS 7からのアップグレードは決して怖いものではありません。この記事が、皆さんのサーバー移行作業の時間を短縮し、徹夜を減らす助けになれば幸いです。Leappの実行中に不明なエラーが発生した場合は、コメント欄にログを残してください!

Share: