今天编译了一个libvirt 2.0.0
之前是在1.2.7上面跑的很正常,结果今天一换了libvirt之后就出问题了,本来还想安装个 3.7.0,但是发现还没下载3.7.0,编译太麻烦了,直接用以前编译好的2.0.0吧,不过还是出问题了,启动虚拟机报如下warn和error,把我吓一跳
[root@nova02 a9a2bb9b-5e7b-469f-b641-543a3153c9c3]# virsh start instance-0000023e
error: Failed to start domain instance-0000023e
error: internal error: process exited while connecting to monitor: 2017-09-14T14:23:12.515908Z qemu-kvm: warning: CPU(s) not present in any NUMA nodes: 2 3 4 5 6 7
2017-09-14T14:23:12.516014Z qemu-kvm: warning: All CPU(s) up to maxcpus should be described in NUMA config
2017-09-14T14:23:12.517227Z qemu-kvm: CPU feature cmt not found
warning: All CPU(s) up to maxcpus should be described in NUMA config
<cpu mode="host-passthrough">
<model fallback="allow"/>
<numa>
<cell id='0' cpus='0-1' memory='2097152' unit='KiB'/>
</numa>
</cpu>
这个警告,我找了下,大概原因就是没有把虚拟机里最大那个cpu 都给配置上,就是上面段xml里没有配置后面的cpu,所以会有警告,因为我们这个是要支持热插拔的,所以暂时先不设置这些,同时这个warn也可以忽略不计。
qemu-kvm: CPU feature cmt not found
这个才是致命的错误,1.2.7还是好好的,难道是新版的还不支持以前的特性了,也怀疑过可能是libvirt和qemu不兼容。
最终原因是libvirt或QEMU没有支持CPU的CMT特性
修正方式如下:
<!--
<cpu mode='host-model'/>
-->
<cpu mode="host-passthrough">
<model fallback="allow"/>
<numa>
<cell id='0' cpus='0-1' memory='2097152' unit='KiB'/>
</numa>
</cpu>