designetwork

ネットワークを軸としたIT技術メモ

VT-x is not availableのエラーでネスト仮想化に失敗する

f:id:daichi703n:20161127224811j:plain

VMware ESXi(vSphere)では、正式サポートではないが、検証用にネスト仮想化(Nested Virtualize)を使用することができる。 これを使用して、ESXiのゲストOSとしてUbuntu(Linux)をインストールし、その中でVirtualBoxを使用することを考えた。

最終的にはPCF Dev(Pivotal Cloud Foundry Develop)を使用したかったのだが、エラーでネスト仮想化できず失敗した...

自宅LinuxVMでPCF Dev(Cloud Foundry)を構築する - designetwork

サーバースペック

試験した環境は以下の通り。ゲストOSはUbuntuを使っているが、Windows, Linux問わず同様にエラーで失敗した。

ESXiのネストのための設定

ネスト(Nested)構成にするため、追加設定が必要となる。以下の通りゲストOSのVT-xを有効化してサービスを再起動する。

# vi /etc/vmware/config

libdir = "/usr/lib/vmware"
authd.proxy.nfc = "vmware-hostd:ha-nfc"
authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl"
authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl"
authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc"
authd.fullpath = "/sbin/authd"
vhv.enable = TRUE    // add

# /etc/init.d/hostd restart
watchdog-hostd: Terminating watchdog process with PID 98940
hostd stopped.
Ramdisk 'hostd' with estimated size of 127MB already exists
hostd started.
~ #

vSphereのゲストOSはデフォルトではVT-xが有効になっていない。 仮想マシンをpoweroffし、設定を変更する。「オプション」タブの「CPU/MMU 仮想化」はデフォルトで”自動”になっているところを”Intel VT-x/AMD-vを命令セット仮想化に使用し、ソフトウェアをMMU仮想化に使用”を選択する。 仮想マシンpoweroff > 設定変更 > 仮想マシンパワーオン の順で作業する。

f:id:daichi703n:20161127193325p:plain

VT-x is not available

上記のPCF Devインストールの中でエラーに遭遇した。

VirtualBox

FAILED
Error: failed to start VM: failed to execute 'VBoxManage startvm pcfdev-v0.389.0 --type headless': exit status 1: VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
Waiting for VM "pcfdev-v0.389.0" to power on...

VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX)

VT-x(CPU仮想化機構)が動作していないというように見える。

vSphere Clientエラー

ゲストOSをパワーオフし、サマリ画面を見ると以下のような状態になっている。 仮想マシンが起動できない。サマリ画面ではこのようなエラーが表示されている。

Virtualized Intel VT-x/EPT is not supported on this platform.
仮想 msg.intel.hvhwmmu を使わずに続行しますか?

f:id:daichi703n:20161127211308p:plain

しかし、パワーオンしようとした際にエラーが発生した。失敗...

f:id:daichi703n:20161127193339p:plain

仮想 msg.intel.hvhwmmu には msg.intel.hvhwmmu の優先モードが必要です。自動に戻しています。

CPU(Core 2 Quad)がゲスト仮想化に対応していない

原因が分からず調査していたら以下のディスカッションを発見。

こちらによると、Core 2 QuadではNested VMをサポートしていない...

Core 2 systems do not support EPT, so you will not be able to run nested 64-bit VMs.

まとめ

Core 2 Quad(Duo)はネスト仮想化(Nested Virtualization)を使用できない。 Core iシリーズ以上のCPUに変更する必要あがある。