Linux-KVMをVMware Fusionで動かそう!あとFreeBSD BHyVe……!

皆さん仮想化してますか?
仮想化を膝に受けると、VMM(仮想計算機モニタ)の動作検証用に次々と実機が生えてきて大変だそうです。
「仮想環境やってんのに、実機増えてどうすんねーん!」ってお思いの方、多いと思います。今回は、Mac OSX向けの仮想化ソリューションであるVMWare Fusionの上でLinuxを動作させ、Linux-KVMが扱えるようにします。

VMware Fusionの上でKVMしようぜ!

VMMの上でVMMを動かす……それを人はnested vmm*1と呼ぶ……。今回はVMware Fusionの上でKVMを動かします。
今回の検証環境は以下の通り:

やること。

たった一行、VMware Fusion仮想マシン定義ファイル「vmxファイル」に書き加えるだけです。仮想マシン定義ファイルは、デフォルトだと以下のディレクトリに入っています。USER_NAMEとMACHINE_NAMEの部分は適宜読み替えて下さい:

mac$ cd /Users/USER_NAME/Documents/Virtual Machines.localized
mac$ ls
MACHINE_NAME.vmwarevm
mac$vim MACHINE_NAME.vmwarevm/MACHINE_NAME.vmx

vmxファイルを開いたら、以下の一行を追記します:

vhv.enable = TRUE   

以上で終了、お疲れさまです。編集した仮想マシンインスタンスが立ち上がっていたら再起動してやって下さい。

確認。

きちんと設定できているか確認します。以下は、設定前と後のcpuinfoの結果です:

  • 設定前

$ cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts

  • 設定後

$ cat /proc/cpuinfo | grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid

Intel VTの証、vmxが見えています。

もしかして:貴方のマシンはSandyBridge搭載のMac? BHyVeしよう!

Sandy Bridge搭載以降のMac*2ですと、嬉しいサプライズがあります。それは、今最もアツい生まれたてのType II VMM「FreeBSD BHyVe」を試せるということです。
FreeBSD BHyVeは、Intel VTとEPTが必要ですが、Early 2011以降のMacですと、喜ぶべきことにこれが搭載されているのです!先のcpuinfoの結果を見比べてみて頂いても分かる通り、vmxの他にeptという文字列がひょっこり現れているではありませんか。これは活用スル他ありませんね!

最後にーその他のNested VMM

Nested VMMは、その他VMware社製品でも動くようですWindowsやらLinuxやら使っているひと、是非試してみて下さい。
また、kvm上でkvmを動かすことも可能なようです(Linux Kernel 3.2以降)。

参考資料

BHyVe

お知らせ

カーネルVM探検隊第七回が開催されます。

  • 日時: 04/22 (日)13:00〜04/22 (日)22:00
  • 場所: 神保町三井ビル 17F 株式会社インターネットイニシアティブ(IIJ) 大会議室
  • 費用: 懇親会費込み\3,500+ATND手数料

*1:又はnested virtualization

*2:MacBookProだとEarly2011、サンダーボルトが搭載された世代以降