Prism Element でクラウド イメージを登録して仮想マシンを作り、ライブ マイグレーション、仮想スイッチのボンドの NIC 障害、ノードの電源断(HA)を確認した手順と結果です。
この記事の前提
イメージの登録
(1) 歯車(Settings)→ [Image Configuration] で [+ Upload Image] をクリックし、名前、種類、ストレージ コンテナー、取得元の URL を入力して [Save] をクリックします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Name | イメージの名前 | rocky9-cloud |
| Image Type | ISO(インストール用)/DISK(そのままディスクにする) | DISK |
| Storage Container | イメージを置くコンテナー | default-container-… |
| Image Source | From URL(クラスタが URL から取得)/Upload a file(PC からアップロード) | From URL:Rocky-9-GenericCloud-Base の qcow2 |
(2) 取り込みが終わると State が ACTIVE になります(この環境では 600 MB のイメージで約 15 分)。

仮想マシンの作成
(1) 上部のメニューで [VM] を選び、[+ Create VM] をクリックします。名前と vCPU 数を入力します。

(2) コア数とメモリーを入力し、[Disks] の [+ Add New Disk] をクリックします。

(3) [Operation] で Clone from Image Service を選び、[Image] で登録したイメージを選んで [Add] をクリックします。

| 項目 | 説明 | 設定値 |
|---|---|---|
| Type | DISK/CD-ROM | DISK |
| Operation | Allocate on Storage Container(空のディスク)/Clone from Image Service(イメージから作る) | Clone from Image Service |
| Bus Type | SCSI/SATA/PCI/IDE | SCSI |
| Image | 元にするイメージ。サイズはイメージと同じ(ここでは変えられない) | rocky9-cloud(10 GiB) |
(4) [Network Adapters (NIC)] の [+ Add New NIC] で、[Subnet Name] に前の記事で作った vm-lan を選んで [Add] をクリックします。


(5) [Custom Script] にチェックを入れ、[Type Or Paste Script] に cloud-init の設定を貼り付けて [Save] をクリックします。

#cloud-config
password: P@$$w0rd
chpasswd: { expire: False }
ssh_pwauth: True
write_files:
- path: /etc/NetworkManager/system-connections/eth0.nmconnection
permissions: '0600'
content: |
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
method=manual
address1=192.168.1.177/24,192.168.1.1
dns=192.168.1.254;
runcmd:
- nmcli connection reload
- nmcli connection up eth0
この書き方では、初回の起動は固定 IP(192.168.1.177)になりましたが、HA で再起動したときに DHCP の IP になりました。cloud-init が DHCP の接続「System eth0」(自動接続の優先度 120)も作るためです。仮想マシンの中で次のように直すと、再起動しても固定 IP のままになりました。
nmcli connection add type ethernet con-name static-eth0 ifname eth0 ipv4.method manual ipv4.addresses 192.168.1.177/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.254 connection.autoconnect-priority 200、nmcli connection delete "System eth0"、/etc/sysconfig/network-scripts/ifcfg-eth0 を削除、/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg にnetwork: {config: disabled}を書く。
(6) [Table] で作った仮想マシンを選び、下の [Power on] をクリックします。

ライブ マイグレーション
(1) 仮想マシンが動いているホスト(Host 列)を確認し、[Migrate] をクリックします。

(2) [Host] で移動先を選び(自動で選ばせることもできます)、[Migrate] をクリックします。

(3) Host 列が移動先のホストに変わります。

CLI では CVM で acli vm.migrate <VM 名> host=<移動先の AHV の IP> を実行します(既定でライブ)。
| 項目 | 結果(3 回) |
|---|---|
| 移動にかかった時間 | 15.3 秒(Prism)・19.1 秒・16.7 秒(acli) |
| ping の欠落(0.2 秒間隔) | 3 回とも 0 |
NIC 障害(ボンドの片側のリンク断)
仮想マシンが動いているホスト(192.168.1.59)で、ボンドの稼働側の NIC(eth1)のリンクを、仮想化基盤の側で切りました。仮想マシンでは 1.5 GB の書き込み(dd、oflag=direct)を続けました。
実行する場所:AHV(root ユーザー)
# ovs-appctl bond/show | grep -E "active slave mac|^slave"
期待する出力(eth1 を切った後):
active slave mac: bc:24:11:4f:76:fe(eth0)
slave eth0: enabled
slave eth1: disabled
| 項目 | 結果 |
|---|---|
| ボンド | eth0 に切り替わった(リンクを戻すと eth1 も enabled に戻り、稼働側は eth0 のまま) |
| 書き込み | 止まらずに完了 |
| 仮想マシンへの ping | 最長 1.7 秒の途切れ(欠落 7 回) |
vs0 には CVM どうしのストレージの通信も載っているため、この切り替えでストレージの通信も継続しました。
HA(ノードの電源断)
仮想マシンが動いているホスト(192.168.1.59)の電源を強制的に切りました。
(1) [Hardware] に「Host 192.168.1.59 appears to have failed.」のアラートが出ます。

(2) 仮想マシンは別のホスト(192.168.1.61)で起動し直します。

| 経過(電源断から) | 状態 |
|---|---|
| 73 秒 | 止めたホストが HAFailoverSource(フェイルオーバー中)に |
| 134 秒 | 仮想マシンが 192.168.1.61 で動作 |
| 171 秒 | ゲストが起動し ping が通った(途切れは 171 秒) |
HA は既定で有効で、方式はベストエフォート(予約なし。空いているリソースがあれば別のホストで起動する)です(CVM で acli ha.get を実行すると ha_state: "kAcropolisHABestEffort"・reservation_type: "kAcropolisHANoReservations" と表示されます)。
(3) 止めたホストの電源を入れると、CVM が戻り、データの冗長度(ノード障害を 1 台まで許容)が回復します。この環境では、電源投入から 269 秒で 3 台の CVM がそろい、427 秒で Current Fault Tolerance が 1 に戻りました。仮想マシンは、ホストが戻ると元のホストに戻されました(VM の配置の復元)。
結果のまとめ
| 試験 | 結果 |
|---|---|
| ライブ マイグレーション | 15〜19 秒、ping の欠落なし |
| ボンドの片側の NIC 障害 | 書き込み継続、ping の途切れ 1.7 秒 |
| ノードの電源断(HA) | 134 秒で別のホストで起動、171 秒で ping 応答 |
| ノードの復旧 | 427 秒で耐障害性が回復 |
