持ち運べる仮想化環境を作る必要が出てきたので Ryzen とかが載ったミニ PC を買おうかなぁと思っていたら、だいぶ前に査収して放置していた Intel Mac Mini 最後の 2018 があることを思い出した。
Mac に MacOS 以外の OS を入れるとか考えると Windows や Linux なイメージだったので ESXi を入れた姿が思い浮かばなかった。。
で、改めてスペックを確認したら i7 6core と CPU は当時の最上級グレードだけど、メモリが 8GB で全然足らんので換装することにする。
メモリ換装の方法はググれはいくらでも出てくるので割愛し、32GB の DDR4 SO-DIMM 2 枚組に無事換装。
内部のケーブルの扱いにさえ気を付ければ、難易度はそんなに高くない。
準備が整ったので配布が再開した ESXi8.0U3 を公式からダウンロードしてメディアを準備。
Mac Mini 2018 を USB 外部デバイスから起動させるには以下お決まりがあるので忘れずに対応。
[ T2 チップのセキュアブート設定変更 ]
1. 「command」+「R」キーを押しながら電源を入れる
2. 復元ボリュームの画面が出たら上部のメニューから起動セキュリティユーティリティを起動
3. 「安全な起動」を「セキュリティなし」に変更
4. 「外部起動」を「外部メディアからの起動を許可」に変更
5. 復元ボリュームのメニューを終了させる
これで再度電源オフした状態から「option」キーを押したまま電源投入するとブート可能な一覧が表示されるので外付け光学式ドライブを選択。
そうすると見慣れた黄色と黒の ESXi がインストーラが動くはず。
後はいつものようにインストール先のディスク一覧が表示されるところで内蔵 SSD を選ぼうとするけど何も表示されない。。
ググってみると Mac Mini 2018 の内蔵 SSD は MacOS 以外のインストールを受け付けないっぽい。(マジか!)
試しに USB メモリを挿してみたら認識したので、外部ストレージは問題なさそう。
想定よりスマートじゃないけど、内蔵 SSD が 256GB しかないモデルだったし、追加で 1TB の USB SSD を査収。
メモリも結構な出費だったけど SSD まで買うことになるとは。。
届いた SSD を接続して再度 ESXi のインストーラを起動。
特にフォーマット等しなくても問題なく 1TB の SSD を認識したのでそのままインストール続行。
インストール後、コンソールで IP の設定をし、ESXi Host Client からアクセス。

論理スレッド数 12 & メモリ 64GB なので結構贅沢な構成。
次に VM をぶっこむデータストアを切り出すか。とストレージの設定を見るもデータストアに使えるストレージがないと言われる。
OS が入っているところもデータストアに出来るよなぁとググってみたところ、USB のストレージはモノがなんであろうが、サポートの問題でデータストアに出来ないらしい。
SSH でログインしてパーティションを切って vmfs でフォーマットするっていう強硬策は出来るらしいけど、Google の AI さんにやるな。と言われたのでやめる。
そうするとデータストア用にもう一つ外部ストレージが必要らしい。
追加で買う前に今 ESXi を入れた USB SSD をフォーマットした上で、USB メモリに改めて ESXi をインストールし、USB SSD が認識しデータストアとすることが出来るか試してみることにする。
で、実際にやってみたところ、ストレージのデバイスメニューに USB SSD が表示されない。。
どうやら USB パススルーを無効化しないといけないらしい。
ESXi Host Client でも出来るけど、コマンドの方が楽なので SSH でログインして以下のように実行。
◇実施前のサービス状態確認
[root@moge:~] /etc/init.d/usbarbitrator status
usbarbitrator is running
◇サービス停止
[root@moge:~] /etc/init.d/usbarbitrator stop
◇実施後のサービス状態確認
[root@moge:~] /etc/init.d/usbarbitrator status
usbarbitrator is not running
◇サービスの自動起動停止
[root@moge:~] chkconfig usbarbitrator off
無事デバイスの一覧に表示されるようになった。
(というか挿してない USB ポートも見えてる)

改めてデータストアを切り出すかと操作するも、状況変わらずデバイスがない。。

ググってみると、なんでか知らんけど、手動で vmfs フォーマットしないといけないらしい。
やるしかないので以下手順で実施。
※対象のデバイス(mpx.vmhbaXX)は容量やベンダ名から間違えずに特定すること。

※自分の場合は vmhba32 だったので vmhba32 を指定している。
/vmfs/devices/disks/mpx.vmhba32:C0:T0:L0 <– 対象のディスク情報
◇GPT パーティションのラベル付け
[root@moge:~] partedUtil mklabel /dev/disks/mpx.vmhba32:C0:T0:L0 gpt
◇gpt になっているか確認
[root@moge:~] partedUtil getptbl /dev/disks/mpx.vmhba32:C0:T0:L0
gpt
121675 255 63 1954713600
◇終了セクタ数を算出
※上記コマンドで表示された 4 つの数字の内始めの 3 つを掛けた上で -1 する。
(121675 x 255 x 63) -1
[root@moge:~] eval expr $(partedUtil getptbl /dev/disks/mpx.vmhba32:C0:T0:L0 | tail -1 | awk ‘{print $1 ” \* ” $2 ” \* ” $3}’) – 1
1954708874
◇GPT パーティションテーブルを設定
※2048 は開始セクタ数
※1954708874 は上記で算出した終了セクタ数
※AA31E02A400F11DB9590000C2911D1B8 は VMFS を表す UUID なので決め打ち
[root@moge:~] partedUtil setptbl /dev/disks/mpx.vmhba32\:C0\:T0\:L0 gpt “1 2048 1954708874 AA31E02A400F11DB9590000C2911D1B8 0”
◇vmfs6 でフォーマット
※-S で指定している DataStore0 はデータストア名なので自由に
[root@moge:~] vmkfstools -C vmfs6 -S DataStore0 /dev/disks/mpx.vmhba32\:C0\:T0\:L0:1

因みに SSD なのに非 SSD と表示(認識?)されるのが嫌だったので以下コマンドで調教。
表示だけ変わるだけなのか、内部処理?も変わるのかは知らんす。。
[root@moge:~] esxcli storage nmp satp rule add -s VMW_SATP_LOCAL -d mpx.vmhba32:C0:T0:L0 -o enable_ssd
[root@moge:~] esxcli storage core claiming reclaim -d mpx.vmhba32:C0:T0:L0
とりあえずやりたい構成が出来そうなことが分かったのと、USB メモリに ESXi を入れるのはあまり好きじゃないので追加の USB SSD をポチって到着待ち。
軽い気持ちで Mac Mini 使えばええやん!って思ったけど、金も体力も想定以上に使う羽目になってもうた。。