vmware仮想マシン上のUbuntuでmultipassを動かす為に仮想 CPU パフォーマンス カウンタが必要だった話


毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。

0. はじめに

vmwareの仮想マシンでUbuntuを動かしてmultipassから仮想マシンをネストして動かそうとしたときに
「仮想 CPU パフォーマンス カウンタ」が必要だった、というお話です。

1. 何が起こったか?

multipassで仮想マシンを動かそうとすると以下の様なエラーがでました。

user@user-virtual-machine:~$ multipass launch --name test2104 21.04
launch failed: The following errors occurred:
qemu-system-x86_64: error: failed to set MSR 0x48f to 0x7fffff00036dfb
qemu-system-x86_64: /build/qemu-rbeYHu/qemu-4.2/target/i386/kvm.c:2691: kvm_buf_set_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.

2. 対応方法

2-1. vmware ESXiのNested Virtualizationを有効にします

ググれば沢山出てくると思うのでここでは割愛します。
vhv.enable = "TRUE"/etc/vmware/configに書きましょう

/etc/vmware/config
vhv.enable = "TRUE"

これで、vmxが有効になります。
cpuinfoをgrepすると以下の様にvmxが追加されます

$ grep -E 'svm|vmx' /proc/cpuinfo
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology 
tsc_reliable nonstop_tsc cpuid pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt 
tsc_deadline_timer aes xsave avx hypervisor lahf_lm pti ssbd ibrs ibpb stibp tpr_shadow vnmi 
ept vpid tsc_adjust arat md_clear flush_l1d arch_capabilities

2-2. 仮想 CPU パフォーマンス カウンタを有効にします

CPUのオプション設定で仮想 CPU パフォーマンス カウンタの有効化にチェックを入れます。

3. 動作確認

VMwareホストと仮想マシンを再起動してmultipass start します。

multipassの仮想マシンが動いたかmultipass listで確認します。

バッチリ動きましたね。

4. 環境情報

VMware : ESXi 7.0
Ubuntu OS: Ubuntu 20.04.2 LTS
multipss: multipass 1.7.0
qemu: 4.2-3ubuntu6.17

5. まとめ

vmwareで動かせると、bridgeも使えるようになったmultipassは超便利だと思います!

最初、以下のQEMUのバグかとおも思ったのですが、
Bug #1882774 “issues with secondary VMX execution controls” : Bugs : qemu package : Ubuntu
https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1882774

メッセージをググり直すと以下の記事がヒットしました。
Can't start minishift on Ubuntu 18.04: "qemu-system-x86_64: error: failed to set MSR 0x38d to 0x0" · Issue #3210 · minishift/minishift
https://github.com/minishift/minishift/issues/3210#issuecomment-602923316

VMware + vMotionが有効な場合は、「CPUパフォーマンスカウンター」が利用できない場合があるそうなので、ご注意ください。

仮想 CPU パフォーマンス カウンタが有効になっている場合、互換性のある CPU パフォーマンス カウンタを持つホストにのみ
仮想マシンを移行できます。
ESXi ホストの BIOS がパフォーマンス カウンタを使用しているか、Fault Tolerance が有効になっている場合、一部の仮想
パフォーマンス カウンタは仮想マシンで使用できない場合があります。