背景
RHEL 7のライフサイクルについては、Maintenance Support 2は2024年6月30日に終了となり、Extended Lifecycle Supportは2028年6月30日になります。
ただし、IBM CloudはRHEL 7のExtended Lifecycle Supportを提供していないため、RHEL 7.xのお使いのお客様は来年の6月末までにRHEL 8にアップグレードする必要があります。
RedHat自身はIn-place upgrade方法を提供していますが、IBM Cloud上のRHEL 7のin-place upgradeはサポートされていません。(今後のRHEL 8についてはin-place upgradeをサポートするか、まだ分からないんです。)OS Reloadというやり方はIBM Cloudに推薦されたUpgrade方法になります。
本記事では、先ずはOS ReloadでRHEL 7をUpgradeすることについて具体的な手順を示しました。次は、OS ReloadでUpgradeすると、システムへの影響及び注意点、そして、よくある質問についてまとめました。最後に、他の道があるかについては検討しました。
OS ReloadでVSIをRHEL 7からRHEL 8へUpgradeする
まずは、全体の流れについては次の通りです:
1.既存のVSI(RHEL 7)をBackupする
2.比較のため、Reloadする前にVSIの状況を確認する
3.Diskを保持してOS Reloadする
4.ReloadしたVSI(RHEL 8)でDataを復旧する
次は、詳細のステップについて説明します。
1. 既存のVSI(RHEL 7)をBackupする
OS Reloadの際には、Disk preservationという選択肢があり、原則的にそのDiskを使用してVSIを復旧することができます。ただし、万が一Diskを保存する時にエラーが発生する恐れを考慮して、最初に普段のBackup方法よりシステムをBackupすることがお勧めです。具体的なBackup方法はそれぞれありますので、この記事でBackupの部分を割愛します。
2. 比較のため、Reloadする前にVSIの状況を確認する
私の検証環境にClassic InfrastructureでRHEL 7.xのVSIを作成しました。
VSIの名前をクリックして、Storage TabでBlock storage detailsを確認すると:
‐ Portable Storageがないです。
‐ System storage detailsの一覧に、25GBのSystem Diskが一つのみ、あります。
VSIをSSH Loginして、現在のOS Release情報を確認します。CMDの出力により、現在はRed Hat Enterprise Linux Server 7.9を利用しています。
[root@virtualserver01-helen ~]# cat /etc/os-release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.9 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.9 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.9:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.9
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.9"
[root@virtualserver01-helen ~]#
データを保持できるかどうかを確認するため、SampleFileBeforeUpgrade.txtを準備します。
[root@virtualserver01-helen ~]# echo "This is made before the RHEL 7 upgrade" > SampleFileBeforeUpgrade.txt
[root@virtualserver01-helen ~]# ls
redhat_subscription.log SampleFileBeforeUpgrade.txt
[root@virtualserver01-helen ~]# cat /root/SampleFileBeforeUpgrade.txt
This is made before the RHEL 7 upgrade
[root@virtualserver01-helen ~]#
3. Diskを保持してOS Reloadする
VSIの詳細画面で、右上にあるActions ボタンを押して、OS reloadをクリックして、OS Reloadの設定画面に遷移します。
OS Reloadの設定画面では、
‐ Operating Systemの行で右側の三点メニューをクリックして、Editを選択して、New SelectionをRed Hat Enterprise Linux 8.x - Minimal Install (64 bit) (1-4 Core)に設定します。
- (重要)画面の下方に、必ずOS Reload with Disk Preservationを有効にしてください。そうすると、OS Reloadは新規DiskでRHEL 8を実行して、現在のSystem Diskを変更せずに丸ごとにPortable Diskとして保持しておきます。
設定が終わったら、右側の確認項目をチックして、Reloadボタンをクリックして、PopupしたWarning WindowsでConfirm OS ReloadをクリックしてReloadを始めます。Reloadは数分で完了するはずです。
4. ReloadしたVSI(RHEL 8)でDataを復旧する
Reloadが完了したら、VSIの情報を確認しましょう。
まずは、VSIの詳細画面で、現在のOS ImageとOSがRHEL 8になったことを確認します。
次は、Storage tabで、Portable StorageとSystem Diskの状況を確認します。
- Portable Storageには、DriveRetention-xxxの名前で25 GBのDiskが見えます。これは保持したRHEL 7のSystem Diskです。
- System storage detailsには、二つの25GB Diskが見えており、新規のRHEL 8 System Diskと保持したRHEL 7 System Diskであります。
VSIをSSH Loginして、CMDでOSとDiskの状況をチェックします。
CMD cat /etc/os-releaseの出力により、現在のOSはRed Hat Enterprise Linux 8.7に変更しました。
[root@virtualserver01-helen ~]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.7 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.7"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.7 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.7
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.7"
[root@virtualserver01-helen ~]#
OS Reload前に準備したSampleFileBeforeUpgrade.txtは、もちろん現在の /root folderに見えなくなりました。
[root@virtualserver01-helen ~]# ll
total 4
-rw-r--r--. 1 root root 665 Jul 13 05:59 redhat_subscription.log
Fdiskで現在のDisk情報を確認して、xvdaとxvdcの25GB Diskがあることが分かりました。
注:出力が長すぎて、一部の行が削除されました。
[root@virtualserver01-helen ~]# fdisk -l
Disk /dev/xvda: 25 GiB, 26843701248 bytes, 52429104 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb55622f5
Device Boot Start End Sectors Size Id Type
/dev/xvda1 * 2048 2099199 2097152 1G 83 Linux
/dev/xvda2 2099200 52428799 50329600 24G 83 Linux
......
Disk /dev/xvdc: 25 GiB, 26843701248 bytes, 52429104 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x97bf69a8
Device Boot Start End Sectors Size Id Type
/dev/xvdc1 * 2048 2099199 2097152 1G 83 Linux
/dev/xvdc2 2099200 52428799 50329600 24G 83 Linux
File Systemを確認してみますと,xvdaはMountされております。xvdcはMountされてない、アクセスできない状態です。
[root@virtualserver01-helen ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 928M 0 928M 0% /dev
tmpfs 978M 0 978M 0% /dev/shm
tmpfs 978M 17M 962M 2% /run
tmpfs 978M 0 978M 0% /sys/fs/cgroup
/dev/xvda2 24G 1.7G 21G 8% /
/dev/xvda1 974M 215M 692M 24% /boot
tmpfs 196M 0 196M 0% /run/user/0
つまり、RHEL 7のSystem Diskは保持されましたが、OS Reloadしてからは直接アクセスできません。以前のDataを復旧するため、そのDiskをMountする操作が必要です。手順は次の通りです。
[root@virtualserver01-helen ~]# mkdir /mnt/rhel7_data
[root@virtualserver01-helen ~]# mount /dev/xvdc2 /mnt/rhel7_data
[root@virtualserver01-helen ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 928M 0 928M 0% /dev
tmpfs 978M 0 978M 0% /dev/shm
tmpfs 978M 17M 962M 2% /run
tmpfs 978M 0 978M 0% /sys/fs/cgroup
/dev/xvda2 24G 1.7G 21G 8% /
/dev/xvda1 974M 215M 692M 24% /boot
tmpfs 196M 0 196M 0% /run/user/0
/dev/xvdc2 24G 1.2G 22G 6% /mnt/rhel7_data
[root@virtualserver01-helen ~]# ll /mnt/rhel7_data/root/
total 8
-rw-r--r--. 1 root root 665 Jul 13 04:04 redhat_subscription.log
-rw-r--r--. 1 root root 39 Jul 13 03:35 SampleFileBeforeUpgrade.txt
以上は、OS ReloadしてClassic VSIをRHEL 7からRHEL 8へUpgradeする手順、及び、Reloadした前のDataをアクセスする手順については、紹介しました。
システムへの影響及び注意点、そして、よくある質問
既に気づいたと思いますが、OS ReloadよりVSI RHELをUploadする方法は、実は新しいOSを構築するという方法です。
‐ OS Reload with Disk Preservationしないと、同じDiskでRHEL 8を実行して、前のRHEL 7に導入されたMiddleware、Application及びDataは、すべて上書きされてなくなりました。
‐ OS Reload with Disk Preservationを有効にしたら、新規DiskでRHEL 8を実行して、以前の環境はPortable Diskとして保持されています。
従って、いずれにしても、新規のRHEL 8のVSI環境には、お客様ご自身でMiddleware、ApplicationおよびDataを復旧する必要があります。Dataの復旧はPortable Diskから移行できますので、わりと簡単かなと思いますが、Softwareの復旧はシステムの構成により様々な状況があります。
ですので、RHEL Upgradeを検討する際に、必ず事前のシステムバックアップ、そして、後の復旧作業を含めて検討していただければと思います。もし、システムやApplicationの構築には、Ansibleなどの自動化ツールを利用している場合、復旧作業が大幅に低減でき、楽になれると思います。
また、以下についてはよく聞かれますので、お伝えします:
- OS Reloadしても、VSIのIP Addressが変更しません。
- OS Reloadする際、必ずVSI Downtimeがあります。実際のDowntime時間はOSのバージョンとDisk Sizeに依存してますが、大体数分ぐらになります。
- OS Reload with Disk Preservationを有効にしたら, そのPortable DiskはBlock Storageとして料金が発生します。
他の道があるかとうか
IBM CloudはOS Reloadのやり方を推薦していますが、 システム全体を考えてDowntimeを避けたい場合、現行環境を保持してまま、新規環境でRHEL 8の上にシステムを構築するという方法も可能です。平行期間にはCloud料金が倍になるとのデメリットがありますが、Downtimeを避けてしっかり検証できるとのメリットもあります。
最後に
以上は私の理解で書いた内容です。間違い点が出ましたら、ごコメントいただければ幸いです。