【OLVM 4.5】 HCI 構成:仮想マシンの作成・ライブ マイグレーション・HA・ブリック障害の確認手順

GlusterFS の HCI 構成で、仮想マシンを data ドメインに作り、ライブ マイグレーション、ホスト障害時の HA、Gluster のブリック障害と自己修復を確認した手順と結果です。

目次

この記事の前提

参照した公式ドキュメント

構成

項目内容
環境HCI の構築手順で作った 3 台の HCI。エンジン(HostedEngine)は doc-olvm1 で稼働
ストレージdata ドメイン(GlusterFS、data ボリューム。レプリカ 3、3 台目はアービター)
ライブ マイグレーションと Gluster の通信gluster ネットワーク(bond0、active-backup)
仮想マシンrocky-hci01(Rocky Linux 9.8、2 vCPU、メモリー 2 GB、ディスク 20 GB、HA オン・リースは data)

仮想マシンの作成

仮想マシンの作り方は、3Tier 構成の手順と同じです。違いは、ディスクと VM リースの置き場所に data(GlusterFS)を選ぶことだけです。

項目設定値
ディスクの Storage Domaindata
Target Storage Domain for VM Leasedata
ISO イメージの置き場所data(ISO ディスクとしてアップロード)

この検証では、キックスタートでのインストールに約 10 分 30 秒かかりました(3Tier の iSCSI では約 8 分)。

仮想マシンの一覧

HostedEngine(エンジンの仮想マシン)も一覧に表示されます。HostedEngine は HA エージェント(ovirt-ha-agent)が管理するので、通常の仮想マシンのように停止や削除はしません。

Gluster ボリュームの確認

(1) [Storage] → [Volumes] に、Cockpit で作った engine と data が表示されます。[Bricks] 列はオンラインのブリック数(緑)とオフラインのブリック数(赤)です。

ボリュームの一覧

(2) data をクリックすると、[Volume Type] が Replicate Arbiter、[Replica Count] が 2 + 1 であることを確認できます。

data ボリューム

ライブ マイグレーション

仮想マシンの [Migrate] で、doc-olvm2 → doc-olvm3 → doc-olvm2 と 2 回移行しました(操作は 3Tier と同じです)。ゲストへ 0.2 秒間隔で ping を送りながら計測しています。

項目1 回目(olvm2 → olvm3)2 回目(olvm3 → olvm2)
所要時間(エンジンのイベント)29 秒(Total 39 秒)29 秒(Total 39 秒)
ping の欠落1 回(約 0.2 秒)2 回(約 0.4 秒)

移行元のホストの vdsm のログでは、移行のデータは gluster ネットワーク(bond0)の IP アドレスに送られています。

grep -oE "tcp://[^ ,']*" /var/log/vdsm/vdsm.log | tail -1
tcp://10.20.83.143

HA(ホスト障害時の再起動)

仮想マシンが動いている doc-olvm2 の電源を強制的に切りました(エンジンは doc-olvm1 で動いているので影響を受けません)。

仮想マシンのイベント
経過時間内容
0 秒doc-olvm2 の電源を切る
約 3 分 26 秒Host doc-olvm2 is non responsive./VM rocky-hci01 was set to the Unknown status.
約 4 分 18 秒Trying to restart VM rocky-hci01 on Host doc-olvm3(1 回目)
約 4 分 50 秒Trying to restart VM rocky-hci01 on Host doc-olvm3(2 回目)
約 5 分 9 秒ゲストに SSH で接続できる(doc-olvm3 で起動)

3Tier 構成(約 2 分 54 秒)よりも時間がかかりました。ホストが Connecting のまま約 3 分半続き、Non Responsive と判定されるまでが長かったためです。電源管理(フェンシング)を設定していないので、VM リースの期限が切れてから別のホストで起動しています。

doc-olvm2 が止まっている間も、data ボリュームは doc-olvm1 のブリックと doc-olvm3 のアービターで書き込みを続けました(レプリカ 3 の過半数が残るため)。停止中に書き込まれた分は自己修復の対象として記録され(data 28 件、engine 86 件)、doc-olvm2 を起動すると自動で修復されました。

gluster volume heal data info summary

ブリック障害と自己修復

ホストは動かしたまま、doc-olvm2 の data ブリックのプロセス(glusterfsd)だけを止めて、仮想マシンの書き込みと修復を確認しました。

(1) ブリックのプロセスを停止します(試験のための操作です)。

# doc-olvm2 で実行
kill -9 $(pgrep -f "glusterfsd.*gluster_bricks/data/data")
gluster volume status data detail | grep -E "^Brick |^Online"
Brick                : Brick doc-olvm2-gl.olvmdoc.lab:/gluster_bricks/data/data
Online               : N

(2) この状態で、仮想マシンの中で 500 MB を書き込みました(direct I/O)。書き込みはエラーなく完了しました(88 MB/s)。残りのブリックには、修復が必要なエントリーが記録されます。

修復待ちのブリック

[Bricks] タブの [Self-Heal Info] に、未同期のエントリー(unsynced entries)の数が表示されます。[Brick Directory] は gluster ネットワーク(bond0)の IP アドレスになっています。管理ポータルの状態は定期的に更新されるため、表示が遅れることがあります。

(3) 停止したブリックを起動し直します。

gluster volume start data force

(4) 自己修復デーモンが自動で修復します。この検証では、ブリックを起動してから約 5 秒で修復が完了し(52 件 → 0 件)、各ブリックの使用量が一致しました。

gluster volume heal data info summary
du -sm /gluster_bricks/data/data/   # 各ホストで
Total Number of entries: 0
Number of entries in split-brain: 0

doc-olvm1 5635 MB
doc-olvm2 5635 MB
doc-olvm3 1 MB (アービターはメタデータのみ)

結果のまとめ

試験結果
ライブ マイグレーション29 秒、ping の欠落 0.2〜0.4 秒。移行は bond0 経由
HA(ホストの電源断)約 5 分 9 秒で別のホストで起動(電源管理なし、VM リースで判定)
ブリック障害書き込みは継続。ブリックの再起動から約 5 秒で自己修復が完了

次の手順

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次