自然の赴くままに・そのときの 気分次第で・なんとなく

自分がその時その時に興味を持ったことを、なんとなく気の向くままに書いているブログです。

ESXi Arm Edition v1.2 でどこまでできるか「vSphere沼にハマっておぼれてみた」vSAN編

前回のESXi Arm Edition v1.2 でどこまでできるか「vSphere沼にハマっておぼれてみた」では,

Raspberry Pi 4 と周辺装機器を用意しハードウエア組み立てと ESXi Arm Edition のインストール、そして vCenter Server への登録(データセンターとクラスタへ)までやりました。今回はその先、外付けした USB ケースに入れた M.2 SSDバイスを使って vSAN を組んでみます。

前回のおさらい

前回の記事では、Raspberry Pi 4 に ESXi Arm Edition をインストールした 4ホストを、vCenter Server の「クラスタのクイックスタート」を使い、クラスタ構成するところまで行いました。そして、vCenter Server のバージョンによっては vSphere HA の検証ができるので、その環境のための VIB のインストールまで説明をしています。以下の状態ですね。

f:id:imaisato:20201224163316p:plain

クラスタ

今回はその先、「3.ホストの設定」から進めていきます。

まずはストレージデバイスの準備

今回は一般的な x86_64 のハードウエアではない Raspberry Pi 4 を使うため、ストレージ関連のデバイスは全て Micro SD または USB でつながなければなりません。Micro SD はUEFI や今後は ESXi Arm Edition のブート用に使われるので、ストレージデバイスとして使うことはできません。それより、そもそも Micro SD のメディア書き込み制限が先に来てしまうでしょう。そこで、今回は USB 3.x のケースに入れた M.2 SSD を 3本用意して、ストレージデバイスとして使うことにしています。

f:id:imaisato:20201224112954j:plain

M.2 SSD を使った USB ストレージデバイス

でも、このままではどんなに頑張っても vSAN の必要とする SSD としては認識されず、USB Disk としか認識されません。そこで、すべてのデバイスに対して「私は SSD ですよ!」と認識させるおまじないを掛けます。おまじないと言っても esxcli コマンドですね。

まず、USB デバイス仮想マシンにパススルーするサービスを停止します。これは前回やっているのでここでは作業しないで良いのですが、一応流れとして思い出せるように記載します。

/etc/init.d/usbarbitrator stop
chkconfig usbarbitrator off

これで USB ストレージデバイスがそのまま見えるようになりました。

f:id:imaisato:20201224164846p:plain

Diskの状態

次のおまじない、vSANがUSBストレージを使えるように詳細設定を追加します。以下のコマンド 2つを入力します。

esxcli system settings advanced set -o /Disk/AllowUsbClaimedAsSSD -i 1
esxcli system settings advanced set -o /VSAN/AllowUsbDisks -i 1

これで Disk にしか見えなかった USB 3.x のケースに入れた M.2 SSD が SSD として見えるようになりますので、次は STAP に新規ルールを追加

esxcli storage nmp satp rule add -s VMW_SATP_LOCAL -d mpx.vmhba32:C0:T0:L0 -o "enable_ssd enabled_local"

最後の "enable_ssd enabled_local" は実際には "enable_ssd" だけで機能します。次にパスのマスク解除。

esxcli storage core claiming unclaim -t device -d mpx.vmhba32:C0:T0:L0

そして、ルールを再読み込み、読み込んだルールの実行。

eesxcli storage core claimrule load
esxcli storage core claimrule run

最後に vSANに Flash だよと認識させる設定を追加。

esxcli vsan storage tag add -d mpx.vmhba32:C0:T0:L0 -t capacityFlash

これで Disk にしか見えなかった USB 3.x のケースに入れた M.2 SSDSSD として見えるようになります。

f:id:imaisato:20201226204300p:plain

SSDに変身

クイックスタートの続「3.クラスタの構成」

ここまで準備ができたら左ペインでクラスタを選択し、中央ペインで「設定」=>「クイックスタート」と進んで、「3.クラスタの構成」を開始します。[構成]ボタンをクリックして Distributed Switch を設定、アップリンクが 2つ必要なのに対して 1つめは Raspberry Pi 4のオンボードの vmnic128 を、2つめは USB の 100M の NIC vusb0 を指定して、とりあえずエラーにならないようにします。

f:id:imaisato:20201226205025p:plain

Distributed Switch

次は vSAN ストレージトラフィック用の IP アドレスを指定します。DHCP 配布しているならそのまま、していなければホストごとに固定 IP アドレスを設定します。

f:id:imaisato:20201226205224p:plain

ストレージトラフィック

詳細オプションは、このクラスタをどのように構成するかになります。さすがに Raspberry Pi 4 でストレッチクラスタまでやることは無いと思うので、NTP サーバーを指定するだけで先に進みます。この詳細設定で気になる設定項目「Enhanced vMotion Compatibility」(EVC)は、CPU Platformが全く異なるので使えません。なので、設定もできないようにグレーアウトで出てきます。

f:id:imaisato:20201226205400p:plain

詳細オプション

先のコマンドでしっかり Flash として設定ができていると、次の「ディスクの要求」では以下のように自動的に推奨構成としてディスクの構成が行われます。

f:id:imaisato:20201226210025p:plain

ディスクの要求

ホスト単位で見ても、期待通りの構成が組まれていました。

f:id:imaisato:20201226210330p:plain

ホスト単位でグループ化

最後にプロキシーを使っている場合の設定がありますが、我が家の家ラボでは使っていないのでそのまま先に、

f:id:imaisato:20201226210431p:plain

プロキシ設定

確認画面は内容を確認して、問題なければ[終了]で構成を開始します。

f:id:imaisato:20201226210526p:plain

確認画面

これで Raspberry Pi 4 上の ESXi Arm Edition に vSAN が出来上がりました。

f:id:imaisato:20201226211045p:plain

vSANの物理ディスク

データストアとしても見えるようになります。

f:id:imaisato:20201226212103p:plain

vSANDatastore

かなりイレギュラーな形で Raspberry Pi 4 の ESXi Arm Edition 上に vSAN 組んでいますので、もちろん性能や意図しないトラブルもあるかもですが、とりあえずそれっぽく組めたので良しとします。