Quick start: 5分で完了するクイック設定
物理ESXiサーバー内部で仮想ESXi(Nested ESXi)を動作させるには、以下2つの設定を行うだけです。
ステップ 1: 仮想マシンのハードウェア仮想化を有効化する
デフォルトでは、ESXiは仮想マシンによるCPU仮想化命令セットの使用を制限しています。OSをインストールする前に、この設定フラグを有効化してください。
- WebインターフェースのESXi Host Clientにアクセスします。
- 仮想ESXiとして使用する仮想マシンをパワーオフ(Power Off)します。
- 仮想マシンを右クリックし、設定の編集(Edit settings)を選択します。
- CPUセクションを開き、ハードウェア仮想化: ゲスト OS にハードウェア アシストによる仮想化を公開(Hardware virtualization: Expose hardware assisted virtualization to the guest OS)にチェックを入れます。
- 保存(Save)をクリックして変更を適用します。
SSH経由で作業する場合は、.vmxファイルに直接以下のパラメータを追記します。
echo 'vhv.enable = "TRUE"' >> /vmfs/volumes/datastore1/Nested-ESXi-01/Nested-ESXi-01.vmx
ステップ 2: ポートグループのセキュリティポリシーを許可する
以下の3項目を許可しない場合、ネストされたESXi内の仮想マシンは完全にネットワークが不通となり、DHCPによるIP取得やゲートウェイへのping送信が行えません。
- ネットワーク(Networking)メニューを開き、ポート グループ(Port groups)タブを選択します。
- Nested仮想マシンを収容するポートグループ(例:
VM Network)を選択し、設定の編集(Edit settings)をクリックします。 - セキュリティ(Security)セクションを展開し、以下の3項目をすべて承諾(Accept)に変更します。
- プロミスキャス モード(Promiscuous mode): 承諾(Accept)
- MAC アドレス変更(MAC address changes): 承諾(Accept)
- 偽装転送(Forged transmits): 承諾(Accept)
- 保存(Save)をクリックします。これで仮想マシンをパワーオンし、通常どおりESXiをインストールできるようになります。
Nested Virtualizationの仕組み
Nested Virtualizationは、シンプルに言えば「仮想化環境の中でさらに仮想化を行う(入れ子構造の)」アーキテクチャです。ハイパーバイザーである親ESXi上の仮想マシンに子ESXiをインストールし、その子ESXiの上でさらに仮想マシンを稼働させます。
なぜこれが必要なのでしょうか。vSphere HA、DRS、vSANなどのクラスタ機能を検証するには、最低でも3台のESXiホストが必須となります。しかし、検証や技術習得のためだけに会社から物理サーバーを3台調達するのは現実的ではありません。ハードウェアコストが非常に高額になるためです。Nested ESXiを活用すれば、クラスタ全体をたった1台の物理サーバー上に集約できます。十分なスペックを持つデスクトップPCでも問題なく動作させることが可能です。
処理メカニズムとしては、Hardware Assisted Virtualization(VHV)機能がCPUレイヤー(Intel VT-xまたはAMD-V)に直接働きかけます。親ハイパーバイザー側でCPU命令をエミュレーションするのではなく、子ハイパーバイザーへ直接CPU命令をパススルー(中継)するため、子ハイパーバイザーはベアメタル環境とほぼ同等の形でハードウェアと対話できます。
検証環境の拡張に向けたネットワーク最適化と自動化
3〜4台のホストを手動で1台ずつ設定するのは非効率です。PowerCLIを使用すれば、ワンライナーで複数の仮想マシンに対して一括で仮想化フラグを適用できます。
# 名前に「Nested-ESXi」が含まれるすべての検証用VMでNested Virtualizationを有効化
Get-VM -Name "Nested-ESXi*" | Get-VMResourceConfiguration | Set-VMResourceConfiguration -NestedHVEnabled $true
ネットワークインフラについては、標準仮想スイッチ(Standard vSwitch)でプロミスキャス モード(Promiscuous mode)を有効化するのは暫定的な対応に過ぎません。このモードでは仮想NICが無関係なパケットまで全て受信するため、親ホストのCPU負荷が増加します。Distributed Switch(VDS)を使用している環境であれば、MAC Learningの利用を推奨します。
# esxcliを使用してvSphere Distributed Switch上の検証用ポートグループでMAC Learningを有効化
esxcli network vswitch dvs vmware mac-learning set -v "DVSwitch-Lab" -p "Nested-PG" -e true
この機能は物理スイッチと同様に動的にMACアドレスを学習するため、ブロードキャストストームによるCPUのボトルネックを防ぎつつ、スムーズな通信を実現します。
Nested ESXi環境を構築する際の実践的なノウハウ
ステージング検証環境の構築を重ねる中で得られた、重要な注意点を共有します。
- 物理メモリは最低64GBを推奨: 子ESXiを快適に動かすには、ホストあたり最低8GBのRAMが必要です。また、vCenter(VCSA 8.0)は最小構成(Tiny)でも約14GBのメモリを消費します。ホストとして動作する仮想マシンに対してMemory Ballooningに過度に依存するのは避けてください。子ESXiのメモリがディスクへスワップされると、内部で稼働するすべてのVMが著しくフリーズします。
- vSAN検証用のDisk UUID設定: 仮想ESXi上でvSANクラスタを構築するには、ディスク識別用フラグを有効にする必要があります。各子ホストの
.vmxファイルに以下の設定を追加しない場合、vSANはディスクを正しく認識しません。
disk.EnableUUID = "TRUE"
- 従来のHDDは避ける: 3台のホストを入れ子で稼働させると、膨大な量のランダムI/Oが発生します。HDD環境で検証を行うとディスクレイテンシが2,000ms〜5,000msまで急上昇し、ブート直後にシステムが応答停止に陥ります。最低でもSATA III SSD、vSANの検証を行う場合はNVMe SSDの使用を強く推奨します。
- ネットワークループの防止: プロミスキャスモードが有効な環境では、BPDU GuardやSTPが未設定のまま親と子のvSwitchをブリッジ接続することは絶対に避けてください。一度ブロードキャストループが発生すると、オフィスのネットワーク全体が数秒でダウンする危険性があります。

