iSCSI のストレージ ドメイン上に仮想マシンを作り、ライブ マイグレーション、iSCSI の片系の経路障害、ホスト障害時の HA(高可用性)の動きを確認する手順です。
この記事の前提
参照した公式ドキュメント
- Oracle Linux Virtualization Manager Administrator’s Guide
- Oracle Linux Virtualization Manager Getting Started Guide
構成
| 項目 | 内容 |
|---|---|
| ホスト | doc-olvm1〜3(Oracle Linux 8.10、KVM ホスト) |
| ストレージ | iscsi-data(iSCSI、2 経路のマルチパス)。iSCSI の手順で作成済み |
| ライブ マイグレーションのネットワーク | storage(bond0、active-backup)。ネットワークの手順で設定済み |
| ISO イメージ | Rocky Linux 9.8 の minimal ISO を iscsi-data にアップロード済み |
| 仮想マシン | rocky-olvm01(2 vCPU、メモリー 2 GB、ディスク 20 GB) |
仮想マシンの作成
(1) [Compute] → [Virtual Machines] を開き、[New] をクリックします。

(2) [General] タブで OS の種類と名前を入力し、[Instance Images] の [Create] をクリックします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Cluster | 仮想マシンを作るクラスタ | Default |
| Operating System | ゲスト OS の種類(既定のデバイスなどが決まる) | Oracle Linux 9.x x64 |
| Chipset/Firmware Type | チップセットとファームウェア | Q35 Chipset with UEFI |
| Name | 仮想マシン名 | rocky-olvm01 |
| Description | 説明 | Rocky Linux 9.8 |
(3) 仮想ディスクの設定を入力し、[OK] をクリックします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Size (GiB) | ディスクのサイズ | 20 |
| Interface | ディスクのインターフェース | VirtIO-SCSI |
| Storage Domain | ディスクを置くストレージ ドメイン | iscsi-data |
| Allocation Policy | Thin Provision(使った分だけ確保)または Preallocated | Thin Provision |
| Bootable | 起動ディスクにする | オン |
(4) [nic1] で vNIC プロファイル ovirtmgmt/ovirtmgmt を選び、[Show Advanced Options] をクリックします。

(5) [System] タブで、メモリーと仮想 CPU の数を設定します。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Memory Size | 仮想マシンのメモリー | 2048 MB |
| Maximum memory | メモリーのホットプラグの上限 | 8192 MB(既定) |
| Physical Memory Guaranteed | 必ず確保する物理メモリー | 2048 MB |
| Total Virtual CPUs | 仮想 CPU の数 | 2 |
(6) [High Availability] タブで [Highly Available] をオンにし、[Target Storage Domain for VM Lease] で iscsi-data を選びます。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Highly Available | ホストの障害時に、ほかのホストで仮想マシンを自動で再起動する | オン |
| Target Storage Domain for VM Lease | 仮想マシンのリースを置くストレージ ドメイン。リースがあると、障害が起きたホストを電源管理で止められなくても、二重起動を防いだうえでほかのホストで起動できる | iscsi-data |
| Resume Behavior | ストレージの一時停止から戻ったときの動き(リースを使うときは Kill) | Kill |
| Priority | 再起動・移行の優先度 | Low |
(7) [Boot Options] タブで、[Second Device] を CD-ROM にし、[Attach CD] をオンにして ISO イメージを選びます。[OK] をクリックします。

(8) 仮想マシン(Status:Down)を選び、[Run] をクリックします。

OS のインストール
[Console] からコンソールを開き、通常どおり OS をインストールします。この検証では、GRUB のメニューで e を押し、カーネルの行の末尾にキックスタートの指定(inst.ks=http://<Web サーバー>/rocky-olvm01.cfg)を追加して、Ctrl+X で自動インストールしました。

インストールが終わったら、ゲストにゲスト エージェントを入れます。IP アドレスや空きメモリーが管理ポータルに表示され、シャットダウンもゲスト OS 経由で行えるようになります。
dnf install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent
ISO イメージは、仮想マシンの右上のメニュー(︙)→ [Change CD] で [Eject] を選んで取り出します。
ライブ マイグレーション
(1) 仮想マシンの詳細画面で、[Status] が Up、[Highly Available] が Yes であることを確認し、[Migrate] をクリックします。

(2) [Destination host] を選び、[Migrate] をクリックします。[Automatically Choose Host] にすると、クラスタのスケジューリング ポリシーで移行先が選ばれます。

(3) 移行中は [Status] が Migrating From になります。

(4) [Events] タブに Migration completed が記録されます。

この検証の結果は次のとおりです(ゲストへ 0.2 秒間隔で ping を送りながら計測)。
| 項目 | 結果 |
|---|---|
| 移行元 → 移行先 | doc-olvm1 → doc-olvm2 |
| 所要時間 | 27 秒(イベントの Duration。Total は 38 秒) |
| ping の欠落 | 1 回(約 0.2 秒) |
| 移行に使ったネットワーク | storage(bond0)。クラスタの Migration Network |
iSCSI の片系の経路障害
仮想マシンが動いているホスト(doc-olvm2)の ens19(経路 A)のリンクを切り、仮想マシンの I/O が経路 B で続くことを確認しました。
ホストでは、切った経路が failed faulty になり、残りの経路で I/O が続きます。
multipath -ll
|-+- policy='service-time 0' prio=50 status=active
| `- 4:0:0:0 sdc 8:32 active ready running
`-+- policy='service-time 0' prio=0 status=enabled
`- 5:0:0:0 sdd 8:48 failed faulty offline
| 項目 | 結果 |
|---|---|
| 管理ポータルのイベント | リンクを切って約 15 秒で Faulty multipath paths on host doc-olvm2 が記録された |
| ゲストの I/O | 経路の障害中も 200 MB の書き込み(direct I/O)が完了(410 MB/s) |
| ゲストへの ping | 欠落なし |
| ホストの状態 | Up のまま(Non Operational にならない) |
| 復旧 | リンクを戻して約 15 秒で No faulty multipath paths が記録され、経路が active ready running に戻った |
HA(ホスト障害時の再起動)
仮想マシンが動いているホスト(doc-olvm2)の電源を強制的に切り、ほかのホストで仮想マシンが再起動されることを確認しました。
(1) 仮想マシンの [Events] タブに、Unknown 状態への変化と、doc-olvm1 での再起動が記録されます。

(2) [Events] 画面では、ホストが Non Responsive になった経緯と、少し前に行った経路障害のイベントも確認できます。

| 経過時間 | イベント |
|---|---|
| 0 秒 | doc-olvm2 の電源を切る |
| 約 49 秒 | Host doc-olvm2 is non responsive./VM rocky-olvm01 was set to the Unknown status. |
| 約 52 秒 | Host doc-olvm2 became non responsive. It has no power management configured. |
| 約 76 秒 | Trying to restart VM rocky-olvm01 on Host doc-olvm1(1 回目) |
| 約 150 秒 | Trying to restart VM rocky-olvm01 on Host doc-olvm1(2 回目) |
| 約 174 秒 | ゲストが ping に応答(doc-olvm1 で起動) |
再起動の試行は 2 回記録され、2 回目で起動しました(電源を切ってから約 2 分 54 秒)。
この検証環境ではホストの電源管理(IPMI などによるフェンシング)を設定していませんが、仮想マシンのリースを iscsi-data に置いているので、リースの期限が切れたあとにほかのホストで起動されました。電源管理を設定すると、障害が起きたホストをフェンシング(電源の再投入)してから再起動するので、より早く確実に切り替わります。本番の環境では、ホストの [Power Management] を設定してください。
電源管理のないホストが Non Responsive になると、「Please check the host status, manually reboot it, and click “Confirm Host Has Been Rebooted”」と表示されます。ホストを手動で再起動して状態を確かめるまで、ホストは Non Responsive のままです。