VMware Player上でVMware ESXi Serverを動作させる(NestedVM)メモ。

出来るよって記述は多いのに、具体的なやり方を載せてくれているところが少なくて結構苦戦したんですが。みなさんどうなんでしょう。
ちなみに、今回の対象はPlayer2.5、ESXi3.5.0 Update3。ホストOSはCore2 U7500 @1.06GHz、メインメモリ1GB、WinXP SP3。かなりキツキツ。

  • 要件とか。

CPUはIntelVTに対応している必要がある気がする。気がするだけで、試してはいない。試しにBIOS設定でIntelVTをキルっとく(試した環境ではデフォルトdisableだった)と起動が異常に遅い。Core2でもIntelVTに対応しているのとしてないのがあるので、一概にOKではないようだ。さらには、M/Bも対応が必要だと思われ。Core2に関しては早ければいいというものでも無い。VT対応かどうかはwikipediaに載っている。
さらに、仮想環境がゲストOSを入れていくことを考えると1.0GB以上のメモリを要求してくるので全然不足している。ていうか、普通に動かすと起動時に割り当てサイズを強制的に減らされてしまい、結果としてESXiが起動すらしてくれず、紫画面(ハングアップ)になってしまう。VMware Player起動前に全てのアプリケーション、タスクトレイの不要な常駐アプリケーション、不要なサービスを落としてコミットチャージ合計を400Mくらいまで下げている。(Playerが起動すれば立ち上げてもOKっぽい。重いけど)
Player起動中に

perl -e "foreach(0..1000000000){$_[$_]= \[1000000000];}

なんてやってコミットチャージ最大値を増やしておくとPlayerが起動時にメモリを下げることをしなくなる気がするな。ブードゥ的だけど。


さて本題。用意するものは、適度な大きさのvmdkファイルとマシン定義ファイル。
vmdkファイルはqemu-img等でさくっと作ってください。

$ qemu-img create -f vmdk blank_4G.vmdk 4G

まあ、ゲストOS入れるのに4Gじゃ絶対足りんのですが。

マシン定義ファイルはこんな感じ。

.encoding = "Shift_JIS"
config.version = "8"
memsize = "1472"
MemAllowAutoScaleDown= "FALSE"

scsi0.virtualDev = "lsilogic"
scsi0:0.present = "true"
scsi0:0.fileName = "blank_4G.vmdk"
ide1:0.present = "true"
ide1:0.fileName = "VMware-VMvisor-InstallerCD-3.5.0_Update_3-123629.i386.iso"
ide1:0.deviceType = "cdrom-image"
floppy0.present = "false"

guestOS = "otherlinux"

ethernet0.present = "true"
ethernet0.virtualDev="e1000"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"

numvcpus="2"
monitor.virtual_exec="hardware"
monitor.virtual_mmu="software"
monitor_control.restrict_backdoor="true"
monitor_control.vt32="true"
virtualHW.version = "6"
virtualHW.productCompatibility = "esx"

displayName = "hoge"

usb.present = "true"
usb.generic.autoconnect = "false"
ehci.present = "true"

個人的に重要そうなところは赤字。
まず、memsize(メモリ割り当て)。1G以下じゃ動きません。ただ、1000MBでいいのか1024MBかまでは不明。メインメモリ減少時の960Mくらいでも動いている気がする。
scsi0.virtualDev(SCSIインターフェースの仮想デバイス)。HDDとの接続はSCSIである必要がある。あと、ESXiの認定互換HWを指定しておく必要がある。
同様にethernet0.virtualDev(NICの仮想デバイス)も認定HWのe1000を指定。
monitor.virtual_exec(CPU仮想化HWアシスト)、monitor.virtual_mmu(メモリ仮想化HWアシスト)はvirtual_execがHardware、virtual_mmuがsoftwareであること、らしい
また、monitor_control.restrict_backdoor(なんでしょ?)も必要みたい。いいから入れとけって奴。


monitor_control.vt32やvirtualHW.productCompatibilityとかは役に立っているか不明。
MemAllowAutoScaleDownについてはガン無視されて悲しい限り。


これで試して、2,3回はメモリ不足で失敗して、あと初回時には「このvmdkファイルはSCSIのジオメトリじゃない云々」言われたりして、それでも立ち上がれば御の字かな。
互換性チェックで失敗する場合は、alt+F2を押すとLinuxのコンソールが立ち上がっているので、lspciとかでデバイスがきちんと認識されているかとか確認しちゃってみてください。


ていうか、世の中の人はVMwareServer上で構築している人が多いっぽいなあ。にょろーん