【HomeLab】ホストの USB デバイスを vSAN で使用するための設定
Table of contents
はじめに
Project Monterey の発表で ESXi on SmartNIC が言及されていましたが、先日の vSphere 7.0 Update 1 のリリース時に合わせて ESXi on Arm が Flings として公開されました。
ESXi Arm Edition | VMware Flings
ESXi-Arm インストール完了!
— Jangari (@Jangari_nTK) October 6, 2020
ラズパイで ESXi 動いてるの感動する pic.twitter.com/3fi8QqCuHE
私も Raspberry Pi 4b 8GB にインストールして遊んでみており、ESXi on Arm を監視ホスト(Witness Host)とした 2ノード vSAN を組んでみました。ESXi on Arm が使えるようになったら真っ先に試してみたかった構成の一つです。
I've tried to configure 2-node vSAN with #ESXionARM as a witness host. It works! pic.twitter.com/f2XMaGMMW3
— Jangari (@Jangari_nTK) October 7, 2020
ESXi on Arm を使った 2ノード vSAN を組んでいる中で、Raspberry Pi 4b の場合は USB 接続のディスクを利用することになりますが、USB デバイスを vSAN のキャッシュデバイスやキャパシティデバイスに使おうとするとトリッキーな設定が必要でしたので、備忘録として残しておきたいと思います。
注意点として、ESXi on Arm は Flings にある通り Tech Preview License ですので、製品としての正式なサポートではありません。また、ESXi on Arm に限らず通常の ESXi でも以下のドキュメントに記載の通り、ESXi ホストに接続された USB デバイスを VMFS データストアや vSAN のキャパシティデバイスといった仮想マシンの格納用に使用することはサポートされていませんので予めご承知おきください。
注: IDE/ATA または USB ドライブを使用して仮想マシンを格納することはできません。
今回、2ノード vSAN を作るにあたって、USB デバイス周りで参考にした情報は中の人の以下の記事になります。
Useful M.2 NVMe accessories for vSphere (VSAN/VMFS) Home Labs
なお、中の人も ESXi on Arm を Witness Host とする記事を出しているので完全な二番煎じになっていますがご容赦ください。
vSAN Witness using Raspberry Pi 4 & ESXi-Arm Fling
ESXi on Arm の構成
ESXi on Arm を Witness Host として構成するにあたって、私は以下のハードウェアを用意しました。HDD や USB メモリは自宅に落ちていた適当なものを流用しています。
- Raspberry Pi 4b 8GB
- 32GB microSD カード
- USB-C ACアダプタ
- モニター + microHDMI ケーブル
- 500GB HDD + SATA-USB 変換ケーブル (ESXi のインストール先)
- USB メモリ x2 (インストーラ、vSAN 用)
- USB 接続キーボード
なお、インストールは省略しますが、Flings のページから PDF でマニュアルがダウンロードできますので、手順などはこちらを参照ください。
インストールの大まかな流れとしては以下のようになります。
- Pi4b で Raspberry Pi OS を起動
- Raspberry Pi OS から boot EEPROM をアップデート
- Pi4b 用の UEFI Firmware イメージを microSD に焼く
- ESXi on Arm のインストーラを USB メモリに焼く
- Pi4b で UEFI を起動、メモリ上限などの設定を修正
- USB ブートで ESXi on Arm のインストーラを起動
- USB 接続のディスクに ESXi on Arm をインストール
- UEFI の起動順序を修正
- Host Client で NTP サーバを設定 (HW クロックが維持されない)
USB デバイスを ESXi 自身が使用できるようにする
ESXi ホストに接続された USB デバイスは、usbarbitrator サービスが仮想マシンへのパススルー用として認識させます。
Cannot mount a USB key or disk device media to an ESX/ESXi host (1036340)
Symptoms
- Connecting a USB key or disk device media to the ESXi/ESX host fails.
- The USB key or disk device media appears under lsusb but does not mount correctly.
Cause
This issue occurs because the usbarbitrator service has claimed the device to make it available for passthrough to virtual machines.
このため、ESXi Shell から usbarbitrator サービスを止めて VMFS データストアや vSAN などに使用できるようにします。
1# /etc/init.d/usbarbitrator stop
2# chkconfig usbarbitrator off
なお、usbarbitrator サービスを止めるとホスト USB デバイスを仮想マシンにパススルー接続できなくなりますのでご注意ください。
USB デバイスを SSD としてマークできるようにする
vSAN は最低でもホストに1つ SSD としてマークされたデバイスが必要ですが、既定では USB デバイスは SSD としてマークできないよう制限がかけられています。ホストの詳細設定 Disk.AllowUsbClaimedAsSSD を 1 に変更することで USB デバイスを SSD としてマークすることが出来るようになります。
こちらのホストの詳細設定はコマンドでも変更が可能です。
1# esxcli system settings advanced set -o /Disk/AllowUsbClaimedAsSSD -i 1
詳細設定を変更したら、vSphere Client からデバイスを SSD としてマークします。
なお、設定変更前に SSD としてマークすると The disk is in use といったエラーが出て失敗しました。
USB デバイスを vSAN で使用できるようにする
既定では USB デバイスは vSAN のキャッシュデバイスやキャパシティデバイスとして要求することができません。
以下のコマンドを実行することで USB デバイスを vSAN 用に要求できるようになります。
1# esxcli system settings advanced set -o /VSAN/AllowUsbDisks -i 1
なお、この設定は GUI からは変更が行えないようでした。
2node vSAN として構成する
あとは ESXi on Arm に USB デバイスを2つ接続し、1つを SSD としてマークすると 2ノード vSAN の Witness Host に利用できます。
おわりに
中の人の記事にもありますが、NVMe SSD を USB 3.0/3.1 で接続するような構成で vSAN を組む場合は今回の設定がキモになってくるかなと思います。サポート外の構成のため本番環境で見ることは無いと思いますが、ホームラボ作りなどの参考になりましたら幸いです。