毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
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
に書きましょう
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 が有効になっている場合、一部の仮想
パフォーマンス カウンタは仮想マシンで使用できない場合があります。