CentOS 7 から CentOS 8 への非公式アップグレード手順

概要
CentOS 8 は 2019年9月23日にリリースされ、公式サイトから ISO が入手可能です。最小インストール(約800 MB)イメージがすぐに提供されない場合があり、従来の 6 GB 相当のフルイメージと比べるとサイズ差が大きいです。本稿では CentOS 7 から CentOS 8 へ非公式にアップグレードする手順を示します。これは公式サポートされた方法ではないため、本番環境に適用する前に必ず検証とバックアップを行ってください。
重要: この手順は「非公式」です。本番環境では推奨されません。必ずスナップショットや完全バックアップ、リカバリ計画を用意してください。
前提条件
- フルシステムバックアップまたは VM スナップショットを取得済みであること
- 管理者権限(root)を持っていること
- ネットワーク接続と十分なディスク空き容量があること
- サードパーティ製パッケージやカスタムカーネルがある場合は影響範囲を把握していること
アップグレードの全体フロー(短い手順)
- EPEL リポジトリを追加
- yum-utils をインストールして rpmconf を実行
- 不要なパッケージをクリーンアップ
- dnf をインストールし、yum を削除
- dnf でシステムをアップデートしてリリースバージョンを 8 に同期
- カーネル、GRUB、グループパッケージを確認
- 再起動してバージョンを確認
手順(詳細)
- EPEL リポジトリをダウンロードしてインストールします。
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm- yum-utils をインストールします。
yum -y install rpmconf yum-utils- rpm パッケージの設定衝突を解決します。
rpmconf -a結果の例(設定ファイル確認画面)が現れます。

「Keep Default(デフォルトを保持)」を選択するのが一般的です。個別に差分を確認してから決定してください。
- 不要なパッケージのクリーンアップを行います。
package-cleanup --leaves
package-cleanup --orphans- DNF(RPM ベースのパッケージマネージャ)をインストールします。
yum -y install dnf- yum を削除します(dnf に置き換えるため)。設定ディレクトリも削除します。
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum- DNF でシステム全体をアップデートします。
sudo dnf -y upgrade- CentOS 8 のリリースパッケージをインストールします。
dnf -y upgrade http://mirror.bytemark.co.uk/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm- EPEL を CentOS 8 用にアップグレードします。
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm- 一時キャッシュをクリーンにします。
dnf clean all- 古いカーネルを削除します(必要に応じて)
rpm -e `rpm -q kernel`- 依存関係が問題となるパッケージを削除します。
rpm -e --nodeps sysvinit-tools- アップグレード本体を実行します。
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync- 新しい設定ファイルの処理を再実行します。
rpmconf -a- kernel-core が正しくインストールされているか確認し、必要なら再インストールします。
rpm -e kernel-core
dnf -y install kernel-core- GRUB がルートデバイスにインストールされているか確認します。
ROOTDEV=`ls /dev/*da|head -1`;
echo "Detected root as $ROOTDEV..."
grub2-install $ROOTDEV- 最小インストールのグループを適用します。
dnf -y groupupdate "Core" "Minimal Install"- バージョンを確認します。
cat /etc/centos-release
受け入れ基準
- システムが再起動後に正常にブートすること
- cat /etc/centos-release が CentOS 8 を示すこと
- 主要なサービス(web、DB、監視など)が正常に稼働すること
- 事前に準備したバックアップからリストア確認ができること
ロール別チェックリスト(管理者向け)
- インフラ担当: スナップショットとバックアップを取得する
- アプリ担当: アプリケーションの互換性を確認する(glibc、Python、Perl、Ruby 等)
- セキュリティ担当: 新しいカーネルとセキュリティ設定をレビューする
- 運用担当: ロールバック手順と連絡フローを確認する
失敗事例・いつこの方法が使えないか
- カスタムビルドのカーネルや非標準ドライバがある場合は壊れる可能性があります。
- サードパーティの RPM(商用ソフト等)が CentOS 8 に未対応の場合、依存関係で衝突します。
- 重要な本番環境は、可能な限りグリーンフィールドでの新規インストールと移行を推奨します。
代替アプローチ:
- 新規インストール: 最も確実でクリーン。設定とデータを移行する。
- コンテナ化: アプリケーションをコンテナ化してホストの OS 依存を減らす。
- 仮想マシンの置換(ブルー/グリーンデプロイ): 新 VM を作成して切替える。
リスクマトリクス(要点)
- ハイリスク: ブート失敗(原因: カーネル/GRUB ミス) — 緩和策: ブート可能なメディア、スナップショット復元
- 中リスク: 依存関係の競合 — 緩和策: テスト環境での事前検証、サードパーティとの互換性確認
- ローリスク: 小さな構成ファイルの差分 — 緩和策: rpmconf で差分を確認、設定管理を使用
ミニ方法論(検証手順)
- テスト環境で本手順を再現する
- アプリケーションの機能テストと負荷テストを実施する
- 障害時のリカバリ時間(RTO)とデータ損失許容度(RPO)を確認する
- ステージングを経て本番で実行する
1行用語集
- DNF: 次世代の RPM パッケージマネージャ
- EPEL: Extra Packages for Enterprise Linux(追加パッケージリポジトリ)
- distro-sync: リポジトリのパッケージ群に合わせてパッケージを同期する DNF サブコマンド
参考チェックリスト(実行直前)
- 完全バックアップ取得済み
- テストでのアップグレード成功確認済み
- 主要サービスの停止/再起動手順を確認
- リカバリ手順と連絡先リストを用意
まとめ
この手順は CentOS 7 から CentOS 8 への非公式な移行方法を示します。多くの環境で動作しますが、カスタム環境や商用パッケージがある場合は問題が発生しやすくなります。まずはテスト環境での検証、バックアップ、ロールバック手順の準備を徹底してください。
重要: 本番環境での適用は慎重に。可能であれば新規インストールとデータ移行を検討してください。
著者
編集