ZStack虚拟机创建报错 cpu->kvm_msr_buf->nmsrs’ failed 分析与解决
(一)报错问题
在ZStack 3.10版本 4.4 版本 使用云平台创建虚拟机时,出现以下关键错误:
可能涉及Zstack C76系列
可能涉及Zstack C86系列
具体涉及版本请自行实验
2025-02-10T14:43:39.782685Z qemu-kvm: -chardev pty,id=charserial0: char device redirected to /dev/pts/1 (label charserial0)
2025-02-10T14:43:39.812047Z qemu-kvm: error: failed to set MSR 0x10a to 0x0
qemu-kvm: /root/rpmbuild/BUILD/qemu-2.12.0/target/i386/kvm.c:2054: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
(二)硬件配置
硬件配置
|组件 | 型号 |
|-CPU-|-AMD Ryzen 7 5800X- |
| 内存 | DDR4 3200MHz 64GB |
| 显卡 | NVIDIA RTX 4070 Ti | (显卡和报错毛关系都没有)
(三)问题原因
CPU架构与内核兼容性
AMD Ryzen 5000系列(如5800X)基于Zen 3架构,需要较新的Linux内核(≥5.8)以支持其新增的CPU指令集和MSR功能。
软件版本限制
1.Linux 内核从 5.6 版本开始对 Ryzen 3000 系列处理器提供了更好的支持,修复了一些性能和稳定性问题。
对于旧的 AMD 架构,例如 Zen 之前的 CPU,可能需要更早的内核版本也能正常工作,但可能不会获得最新功能和优化。
2.ZStack未集成新版KVM驱动,无法适配新硬件的虚拟化
总结:硬件太新,脑子太旧。 赶不上趟
(四)解决办法
方法1
升级Linux内核至5.6以上版本(推荐≥5.8)
PS: 我使用5.4 就解决了这个问题,可能还有未知的问题。建议升级到5.6以上
# 检查当前的内核版本
[root@node1 ~] uname -r
3.10.0-1160.119.1.el7.x86_64
# 查看关于内核的包
[root@node1 ~] rpm -qa |grep kernel
kernel-3.10.0-1160.119.1.el7.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-tools-libs-3.10.0-1160.119.1.el7.x86_64
kernel-tools-3.10.0-1160.119.1.el7.x86_64
# 下载历史内核包
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-headers-5.4.226-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm
# 安装内核
rpm -Uvh *.rpm 可能会遇到相关依赖问题,直接强制安装。
[root@192-168-65-129 ~] rpm -Uvh *.rpm --nodeps --force
warning: kernel-lt-5.4.226-1.el7.elrepo.x86_64.rpm: Header V4 DSA/SHA256 Signature, key ID baadae52: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:kernel-lt-headers-5.4.226-1.el7.e################################# [ 33%]
2:kernel-lt-devel-5.4.226-1.el7.elr################################# [ 67%]
3:kernel-lt-5.4.226-1.el7.elrepo ################################# [100%]
# 设置启动内核
[root@node1 ~] cat /etc/grub2.cfg | grep menuentry|awk -F "\'" '$1=="menuentry " {print i++ " : " $2}'
awk: warning: escape sequence `\'' treated as plain `''
0 : CentOS Linux (5.4.226-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.27.6.d3d8ea1.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-1e62a4fd1d2b4360823ac44cf919edcf) 7 (Core)
# 设置启动顺序
grub2-set-default 0
# 重启生效
reboot
源码安装参考链接:https://blog.youkuaiyun.com/XiaoWang0777/article/details/140466154
方法2
运行下面命令,创建配置文件/etc/modprobe.d/qemu-system-x86.conf
cat > /etc/modprobe.d/qemu-system-x86.conf << EOF
options kvm ignore_msrs=1
EOF
然后重启
reboot
(五)相关报错
相关报错截图


报错日志:
[root@192 ~]# cat /var/log/libvirt/qemu/4695295e03f84312afa310ab758ece44.log
2025-02-10 14:43:39.722+0000: starting up libvirt version: 4.9.0, package: 6.el7 (Unknown, 2020-09-03-17:20:32, zstack-mini-007718b), qemu version: 2.12.0qemu-kvm-ev-2.12.0-44.1.el7_9.1, kernel: 3.10.0-957.27.6.d3d8ea1.el7.x86_64, hostname: 192.168.65.128
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin QEMU_AUDIO_DRV=none /usr/libexec/qemu-kvm -name guest=4695295e03f84312afa310ab758ece44,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-4695295e03f84312afa3/master-key.aes -machine pc-i440fx-rhel7.6.0,accel=kvm,usb=off,dump-guest-core=off,kernel_irqchip=on -m 1024 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid 4695295e-03f8-4312-afa3-10ab758ece44 -smbios type=1,serial=0252b17c-7425-4dee-8a9f-392efab2622b -smbios type=3,manufacturer=,asset=www.zstack.io -no-user-config -nodefaults -chardev socket,id=charmonitor,fd=29,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -boot menu=on,strict=on -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device usb-ehci,id=usb1,bus=pci.0,addr=0x5 -device nec-usb-xhci,id=usb2,bus=pci.0,addr=0x6 -device usb-ehci,id=usb3,bus=pci.0,addr=0x7 -device nec-usb-xhci,id=usb4,bus=pci.0,addr=0x8 -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x4 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x9 -drive file=/zstack_bs/rootVolumes/acct-36c27e8ff05c4780bf6d2fa65700f22e/vol-1862dede3db74b25b9bb27dd2e31654a/1862dede3db74b25b9bb27dd2e31654a.qcow2,format=qcow2,if=none,id=drive-virtio-disk0,cache=none -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xa,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1,write-cache=on -drive if=none,id=drive-ide0-0-1,readonly=on -device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 -netdev tap,fd=31,id=hostnet0,vhost=on,vhostfd=32 -device virtio-net-pci,host_mtu=1500,netdev=hostnet0,id=net0,mac=fa:d3:50:3b:d6:00,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,fd=33,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -chardev spicevmc,id=charchannel1,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -vnc 0.0.0.0:0 -device cirrus-vga,id=video0,bus=pci.0,addr=0x2 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb3.0,port=1 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb3.0,port=2 -chardev spicevmc,id=charredir2,name=usbredir -device usb-redir,chardev=charredir2,id=redir2,bus=usb4.0,port=1 -chardev spicevmc,id=charredir3,name=usbredir -device usb-redir,chardev=charredir3,id=redir3,bus=usb4.0,port=2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0xb -qmp unix:/var/lib/libvirt/qemu/zstack/4695295e03f84312afa310ab758ece44.sock,server,nowait -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny -msg timestamp=on
2025-02-10 14:43:39.722+0000: Domain id=1 is tainted: high-privileges
2025-02-10 14:43:39.722+0000: Domain id=1 is tainted: custom-argv
2025-02-10T14:43:39.782685Z qemu-kvm: -chardev pty,id=charserial0: char device redirected to /dev/pts/1 (label charserial0)
2025-02-10T14:43:39.812047Z qemu-kvm: error: failed to set MSR 0x10a to 0x0
qemu-kvm: /root/rpmbuild/BUILD/qemu-2.12.0/target/i386/kvm.c:2054: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
2025-02-10 14:43:39.820+0000: shutting down, reason=failed
报错代码
任务结果: 失败
错误原因:failed to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9 name:1] on kvm host[uuid:ddd37a94a968434f977a3adaf32410cd, ip:192.168.65.128], because Traceback (most recent call last):
File "/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py", line 4732, in start_vm
self._start_vm(cmd)
File "/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py", line 4652, in _start_vm
'unable to start vm[uuid:%s, name:%s], libvirt error: %s' % (cmd.vmInstanceUuid, cmd.vmName, str(e)))
KvmError: unable to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9, name:1], libvirt error: internal error: qemu unexpectedly closed the monitor: 2025-02-11T11:35:21.444922Z qemu-kvm: error: failed to set MSR 0x10a to 0x0
qemu-kvm: /root/rpmbuild/BUILD/qemu-2.12.0/target/i386/kvm.c:2054: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
创建时间:2025-02-11 19:35:19
完成时间:2025-02-11 19:35:23
请求:{
"type": "post",
"path": "vm-instances",
"body": {
"params": {
"name": "1",
"description": "",
"instanceOfferingUuid": "16bc21aa156643c69abb1f87f443ac6f",
"imageUuid": "30bc49e1d2512f48a3c3fe0bd371cff0",
"l3NetworkUuids": [
"931694864a794f0eabfd27b5c49444c8"
],
"dataVolumeSystemTags": [],
"rootVolumeSystemTags": [],
"vmMachineType": "",
"tagUuids": [],
"defaultL3NetworkUuid": "931694864a794f0eabfd27b5c49444c8",
"dataDiskOfferingUuids": [],
"systemTags": [
"vmPriority::Normal",
"cdroms::Empty::None::None",
"usbRedirect::false"
],
"vmNicConfig": {}
}
},
"sessionUuid": "eb6f93f09635412a8041ab6e11fb1b71",
"jobUuid": "a7ccd8a19e315496860ce24fefa31301"
}
错误消息:failed to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9 name:1] on kvm host[uuid:ddd37a94a968434f977a3adaf32410cd, ip:192.168.65.128], because Traceback (most recent call last):
File "/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py", line 4732, in start_vm
self._start_vm(cmd)
File "/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py", line 4652, in _start_vm
'unable to start vm[uuid:%s, name:%s], libvirt error: %s' % (cmd.vmInstanceUuid, cmd.vmName, str(e)))
KvmError: unable to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9, name:1], libvirt error: internal error: qemu unexpectedly closed the monitor: 2025-02-11T11:35:21.444922Z qemu-kvm: error: failed to set MSR 0x10a to 0x0
qemu-kvm: /root/rpmbuild/BUILD/qemu-2.12.0/target/i386/kvm.c:2054: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
返回:{
"error": {
"code": "SYS.1006",
"description": "An operation failed",
"details": "failed to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9 name:1] on kvm host[uuid:ddd37a94a968434f977a3adaf32410cd, ip:192.168.65.128], because Traceback (most recent call last):\n File \"/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py\", line 4732, in start_vm\n self._start_vm(cmd)\n File \"/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py\", line 4652, in _start_vm\n 'unable to start vm[uuid:%s, name:%s], libvirt error: %s' % (cmd.vmInstanceUuid, cmd.vmName, str(e)))\nKvmError: unable to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9, name:1], libvirt error: internal error: qemu unexpectedly closed the monitor: 2025-02-11T11:35:21.444922Z qemu-kvm: error: failed to set MSR 0x10a to 0x0\nqemu-kvm: /root/rpmbuild/BUILD/qemu-2.12.0/target/i386/kvm.c:2054: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.\n",
"cause": {
"code": "HOST.1005",
"description": "Failed to start vm on hypervisor",
"details": "failed to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9 name:1] on kvm host[uuid:ddd37a94a968434f977a3adaf32410cd, ip:192.168.65.128], because Traceback (most recent call last):\n File \"/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py\", line 4732, in start_vm\n self._start_vm(cmd)\n File \"/var/lib/zstack/virtualenv/kvm/lib/python2.7/site-packages/kvmagent/plugins/vm_plugin.py\", line 4652, in _start_vm\n 'unable to start vm[uuid:%s, name:%s], libvirt error: %s' % (cmd.vmInstanceUuid, cmd.vmName, str(e)))\nKvmError: unable to start vm[uuid:5cb150cb7a814a659e5adaa28fbedcc9, name:1], libvirt error: internal error: qemu unexpectedly closed the monitor: 2025-02-11T11:35:21.444922Z qemu-kvm: error: failed to set MSR 0x10a to 0x0\nqemu-kvm: /root/rpmbuild/BUILD/qemu-2.12.0/target/i386/kvm.c:2054: kvm_put_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.\n",
"location": "VmCreateOnHypervisorFlow.java: VmCreateOnHypervisorFlow (location:7/9)"
}
},
"jobUuid": "a7ccd8a19e315496860ce24fefa31301",
"success": false,
"sessionUuid": "eb6f93f09635412a8041ab6e11fb1b71"
}
参考链接
内核升级参考链接:
https://blog.youkuaiyun.com/XiaoWang0777/article/details/140466154
解决 AMD CPU 使用 VMWare 在嵌套虚拟化中用 qemu 启动虚拟机提示 Assertion ret == cpu-kvm_msr_buf-nmsrs failed
参考链接:https://blog.youkuaiyun.com/ZJunWhite/article/details/127162460
兼容性问题
参考链接:https://ask.youkuaiyun.com/questions/8087699
728

被折叠的 条评论
为什么被折叠?



