第12章 スナップショットを使用したシステムアップグレードの管理

システム管理者は、Boom ブートマネージャー、Leapp ユーティリティー、および OS 最新化フレームワークを使用して、Red Hat Enterprise Linux システムのロールバック対応のアップグレードを実行できます。

警告

本章で説明する手順は、システムツリー内の複数のファイルシステム (別の /var または /usr パーティションなど) では機能しません。

12.1. Boom プロセスの概要

Boom を使用すると、GRUB 2 ブートローダーメニューからアクセスしたり、選択可能なブートエントリーを作成したりできます。起動エントリーを作成すると、ロールバック可能なアップグレードの準備プロセスが簡素化されます。

以下は、さまざまなブートエントリーで、これらのエントリーはアップグレードおよびロールバックプロセスの一部となっています。

ブートエントリーのアップグレード
Leapp アップグレード環境を起動します。leapp ユーティリティーを使用して、このブートエントリーを作成および管理します。このブートエントリーは、leapp によるアップグレード時に自動的に削除されます。
Red Hat Enterprise Linux 8 ブートエントリー
アップグレードしたシステム環境を起動します。アップグレードプロセスが正常に完了したら、leapp ユーティリティーを使用してこのブートエントリーを作成します。
スナップショットのブートエントリー
アップグレード元のシステムのスナップショットを起動し、これを使用してアップグレードの成功または失敗後に以前のシステム状態を確認してテストできます。システムをアップグレードする前に、boom コマンドを使用して、このブートエントリーを作成します。
ロールバックのブートエントリー
アップグレード前のシステムの環境で起動し、アップグレードが行われている部分を以前のシステムの状態にロールバックします。アップグレード手順のロールバックを開始する時に、boom コマンドを使用してこのブートエントリーを作成します。

ロールバック可能なアップグレードは、設定ファイルを編集せずに、以下のプロセスで実行します。

  1. root ファイルシステムのスナップショットまたはコピーを作成します。
  2. boom コマンドを使用して、現在の (以前の) 環境のブートエントリーを作成します。
  3. Red Hat Enterprise Linux システムをアップグレードします。
  4. システムを再起動し、使用するバージョンを選択します。

Red Hat Enterprise Linux 8、スナップショット、およびロールバックエントリーは、更新プロセスの結果に応じて、手順の最後に消去する必要があります。

  • 更新した Red Hat Enterprise Linux 8 システムを維持する場合は、boom コマンドを使用して、作成したスナップショットとロールバックエントリーを削除し、lvremove コマンドでスナップショット論理ボリュームを削除します。詳細は 「スナップショットの削除」 を参照してください。
  • 元のシステム状態にロールバックする場合は、スナップショットとロールバックのブートエントリーをマージして、システムを再起動した後に未使用のスナップショットおよびロールバックのブートエントリーを削除します。詳細は 「ロールバックのブートエントリーの作成」 を参照してください。

関連情報

  • man ページの boom

12.2. Boom で別のバージョンへのアップグレード

Boom に加え、以下の Red Hat Enterprise Linux コンポーネントが、このアップグレードプロセスで使用されます。

  • 論理ボリュームマネージャー (LVM)
  • GRUB 2 ブートローダー
  • Leapp アップグレードツール

この手順では、boom コマンドを使用して、Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 にアップグレードする方法を説明します。

前提条件

  • boom パッケージをインストールしている。

    # yum install lvm2-python-boom

    lvm2-python-boom パッケージのバージョンが boom-0.9 以上であることを確認します (理想的には boom-1.2)。

    注記

    Red Hat Enterprise Linux 8 に boom パッケージをインストールする場合は、以下のコマンドを実行します。

    # yum install boom-boot
  • スナップショットには十分な領域がある。次のコマンドを使用して、ボリュームグループおよび論理ボリューム上の空き領域を検索します。

    # vgs
    VG  #PV  #LV  #SN  Attr  VSize    VFree
    rhel 4 2 0 wz--n- 103.89g 29.99g
    
    # lvs
    LV     VG    Attr     LSize  Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    root rhel -wi-ao--- 68.88g
    swap rhel -wi-ao--- 5.98g

    ここで、rhel はシステムのボリュームグループに、rootswap はシステムの論理ボリュームです。

  • マウントした論理ボリュームをすべて検索しておく。

    # mount | grep rhel
    
    /dev/mapper/rhel-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
    注記

    複数のエントリーが存在し、追加のエントリーのマウントポイントに '/usr' または '/var' が含まれる場合は、追加の手順を実行せずに上記の手順は実行できません。ただし、この追加の手順は本書のユーザーストーリーの対象外となっています。

  • Leapp パッケージがインストールされ、ソフトウェアリポジトリーが有効になっている。詳細は、「アップグレード用の RHEL 7 システムの準備」セクションを参照して、アップグレードに必要なパッケージをダウンロードしてください。

手順

  1. root 論理ボリュームのスナップショットを作成します。

    • root ファイルシステムがシンプロビジョニングを使用する場合は、シンスナップショットを作成します。

      シンスナップショットを作成している間は、スナップショットのサイズを定義することができません。スナップショットは、シンプールから割り当てられます。

      # lvcreate -s rhel/root -n root_snapshot_before_changes

      ここでは、以下のようになります。

      • -s は、スナップショットの作成に使用します。
      • RHEL/root は、論理ボリュームにコピーされるファイルシステムです。
      • -n root_snapshot_before_changes は、スナップショットの名前になります。
    • root ファイルシステムがシックプロビジョニングを使用する場合は、シックスナップショットを作成します。

      シックスナップショットを作成する際は、アップグレード中にすべての変更を保持できるスナップショットサイズを定義します。

      # lvcreate -s  rhel/root -n root_snapshot_before_changes -L 25g

      ここでは、以下のようになります。

      • -s は、スナップショットの作成に使用します。
      • RHEL/root は、コピーされるファイルシステムです。
      • -n root_snapshot_before_changes は、スナップショットの名前になります。
      • -L 25g はスナップショットのサイズです。このスナップショットは、アップグレード中にすべての変更を保持できるサイズでなければなりません。

        重要

        スナップショットを作成した後には、追加のシステム変更は含まれていません。

  2. プロファイルを作成します。

    # boom profile create --from-host --uname-pattern el7
    注記

    Red Hat Enterprise Linux 8 で boom プロファイルを作成する場合は、el8 を uname-pattern として使用します。

  3. 元のブートイメージのバックアップコピーを使用して、元のシステムのスナップショットブートエントリーを作成します。

    1. boom-1.2 以降の場合:

      # boom create --backup --title "Root LV snapshot before changes" --rootlv rhel/root_snapshot_before_changes

      ここでは、以下のようになります。

      • --title Root LV snapshot before changes は、ブートエントリーの名前で、システムの起動時に一覧に表示されます。
      • --rootlv は、新しいブートエントリーに対応する root 論理ボリュームです。
    2. boom-1.1 以前のバージョンの場合:

      # cp /boot/vmlinuz-$(uname r) /boot/vmlinuz$(uname -r).bak
      
      # cp /boot/initramfs-$(uname r).img /boot/initramfs$(uname -r).img.bak
      
      # boom create -title "Root LV snapshot before changes" --rootlv rhel/root_snapshot_before_changes --linux /boot/vmlinuz$(uname r).bak --initrd /boot/initramfs$(uname -r).img.bak

      初めて boom create コマンドを実行すると、次のメッセージが表示されます。

      WARNING - Boom configuration not found in grub.cfg
      
      WARNING - Run 'grub2-mkconfig > /boot/grub2/grub.cfg' to enable

      GRUB 2 で Boom を有効にするには、次のコマンドを実行します。

      # grub2-mkconfig > /boot/grub2/grub.cfg
  4. Leapp ユーティリティーを使用して Red Hat Enterprise Linux 8 にアップグレードします。

    # leapp upgrade

    leapp upgrade コマンドのレポートで表示されたブロッカーを確認して対処します。

  5. アップグレード前のレポートで特定されたブロックの解決後に、--reboot オプションを指定してアップグレードコマンドを再実行します。

    # leapp upgrade --reboot

    このコマンドは、leapp ユーティリティーで作成したアップグレード済みのブートエントリーで再起動し、Red Hat Enterprise Linux 8 へのインプレースアップグレードを実行します。この reboot 引数は、アップグレードプロセス後に自動システムの再起動を開始します。

    再起動時に GRUB 2 画面が表示されます。

    GRUB2 display
    注記

    Red Hat Enterprise Linux 8 システムを使用している場合は GRUB2 ブート画面の Snapshot サブメニューは利用できません。

検証手順

  • RHEL Upgrade initramfs エントリーを選択して、ENTER を押します。アップグレードが続行し、新しい Red Hat Enterprise Linux 8 RPM パッケージがインストールされます。アップグレードが完了すると、システムが自動的に再起動し、アップグレードして利用可能なシステムと古いバージョンで利用可能なシステムが GRUB 2 画面に表示されます。アップグレードされたシステムバージョンがデフォルトの選択です。

    新しいバージョンと古いバージョン間の切り替え

    さらに、ブートエントリーの 変更前に作成されたルート LV スナップショット が存在するので、アップグレードする前のシステムの状態に即時にアクセスできます。

関連情報

12.3. Red Hat Enterprise Linux のバージョン間の切り替え

Boom ブートマネージャーは、システムのアップグレードに関連するリスクを軽減し、ハードウェアのダウンタイムを短縮するのに役立ちます。たとえば、元の Red Hat Enterprise Linux 7 環境を保持しつつ、Red Hat Enterprise Linux 7 システムを Red Hat Enterprise Linux 8 にアップグレードできます。これは、環境間の切り替え機能により、以下が可能になります。

  • サイドバイサイド方式で両環境をすばやく比較し、最小オーバーヘッドで環境を切り替えます。
  • 古いファイルシステムのコンテンツを復元します。
  • アップグレードしたホストの実行中も古いシステムへのアクセスを継続します。
  • 更新自体が実行中でも、更新プロセスをいつでも中止して、元に戻します。

この手順では、アップグレードの完了後に新しいバージョンと古いバージョンの Red Hat Enterprise Linux を切り替える手順を説明します。

前提条件

手順

  1. システムを再起動します。

    # reboot
  2. GRUB 2 ブートローダー画面で、該当する起動エントリーを選択します。

    新しいバージョンと古いバージョン間の切り替え

検証手順

  • 選択したブートボリュームが表示されていることを確認します。

    # cat /proc/cmdline
    
    root=/dev/rhel/root_snapshot_before_changes ro rd.lvm.lv=rhel/root_snapshot_before_changes rd.lvm.lv=vg_root/swap rhgb quiet

関連情報

  • man ページの boom

12.4. スナップショットの削除

スナップショットのブートエントリーは、アップグレード元のシステムのスナップショットを起動し、これを使用してアップグレードの成功または失敗後に以前のシステム状態を確認してテストできます。この手順では、スナップショットを削除する手順を説明します。

前提条件

手順

  1. GRUB 2 エントリーから Red Hat Enterprise Linux 8 を起動します。以下の出力で、新規スナップショットが選択されていることを確認します。

    # boom list
    BootID  Version                    Name                            RootDevice
    6d2ec72 3.10.0-957.21.3.el7.x86_64 Red Hat Enterprise Linux Server /dev/rhel/root_snapshot_before_changes
  2. BootID の値を使用してスナップショットエントリーを削除します。

    # boom delete --boot-id 6d2ec72

    これにより、GRUB 2 メニューからエントリーが削除されます。

  3. 論理ボリューム (LV) のスナップショットを削除します。

    # lvremove rhel/root_snapshot_before_changes
    Do you really want to remove active logical volume rhel/root_snapshot_before_changes? [y/n]: y
          Logical volume "root_snapshot_before_changes" successfully removed

    関連情報

    • man ページの boom

12.5. ロールバックのブートエントリーの作成

ロールバックのブートエントリーは、アップグレード前のシステムの環境で起動し、アップグレードが行われている部分を以前のシステムの状態にロールバックします。スナップショットのブートエントリーを使用して、アップグレードしたブートエントリーやロールバックのブートエントリーを確認後に、元の環境に戻すことができるようになりました。

ロールバックのブートエントリーは、アップグレードしたシステムまたはスナップショット環境から作成できます。

前提条件

手順

  1. スナップショットをマージします。

    # lvconvert --merge rhel/root_snapshot_before_changes
  2. マージされたスナップショットのロールバックブートエントリーを作成します。

    1. boom-1.2 以降の場合:

      boom create --backup --title "RHEL Rollback" --rootlv rhel/root
    2. boom-1.1 以前のバージョンの場合:

      boom create --title "RHEL Rollback" --rootlv rhel/root --linux /boot/vmlinuz$(uname r).bak --initrd /boot/initramfs$(uname -r).img.bak
  3. オプション: ロールバック環境を起動し、システムの状態を復元します。

    # reboot

    システムが再起動したら、矢印キーを使用して RHEL Rollback ブートエントリーを選択し、Enter を押してこのエントリーを起動します。

    root 論理ボリュームがアクティブになると、システムはスナップショットのマージ操作を自動的に開始します。

    注記

    マージ操作が開始されると、スナップショットボリュームは利用できなくなります。RHEL Rollback ブートエントリーが正常に起動すると、元の論理ボリュームにマージされるので、変更前のルート LV スナップショット のブートエントリーが機能しなくなりました。スナップショットの論理ボリュームをマージすると、スナップショットが破棄され、作成元のボリュームの状態が元の状態に戻ります。

  4. 必要に応じて、マージ操作が完了したら、未使用のエントリーを削除し、元のブートエントリーを復元します。

    1. /boot ファイルシステムから未使用の Red Hat Enterprise Linux 8 ブートエントリーを削除し、Grub2 設定を更新します。

      # rm -f /boot/el8
      # grub2-mkconfig -o /boot/grub2/grub.cfg
    2. 元の Red Hat Enterprise Linux 7 ブートエントリーを復元します。

      # new-kernel-pkg --update $(uname -r)
  5. システムへのロールバックに成功したら、boom ブートエントリーを削除します。

    # boom list
    # boom delete boot-id

関連情報

  • man ページの boom

このページには機械翻訳が使用されている場合があります (詳細はこちら)。