openstack虚拟机内核崩溃问题解决

时间:2022-04-02 05:50:24

openstack对接的kvm虚拟化环境,创建虚拟机后无法进如系统,一直卡在call Trace

openstack虚拟机内核崩溃问题解决

解决办法:

更改配置文件的cpu-model,libvirt_cpu_mode = custom

ps:

两种方式请求主机CPU模型

  • “host-model” - 这会导致libvirt识别与上述列表中的主机最匹配的指定CPU模型,然后请求额外的CPU标志来完成匹配。这应该提供接近最大功能/性能,如果将guest虚拟机迁移到具有稍微不同主机CPU的其他主机,则可保持良好的可靠性/兼容性。请注意,由于libvirt检测主机CPU的方式,使用主机模型创建的CPU配置可能无法按预期工作。来宾CPU可能会混淆客户操作系统(即使引起内核崩溃),使用CPU功能和其他不起作用的参数(如CPUID级别)的组合。

  • “host-passthrough” - 这会导致libvirt告诉KVM无需修改即可通过主机CPU。与主机模型的区别在于,而不是仅仅匹配功能标志,主机CPU的每个最后细节都是匹配的。这提供了绝对最佳的性能,对于某些检查低级别CPU详细信息的应用程序而言非常重要,但它的成本与移植成本相当。guest虚拟机只能迁移到完全匹配的主机CPU。

关于CPU模型的libvirt功能范围非常广泛,并在http://berrange.com/posts/2010/02/15/guest-cpu-model-configuration-in-libvirt-with-qemukvm/中进行了描述。nova.virt.libvirt.connection中的'cpu_compare'方法已经处理了检查主机之间CPU兼容性的问题,以允许调度程序确保在迁移期间正确放置guest虚拟机。因此Nova的主要缺失功能就是配置客户CPU模式+模型的能力

在大多数情况下,主机管理员在每个主机配置文件(/etc/nova/nova.conf)中指定来宾CPU配置就足够了。这将通过引入两个新的配置参数来实现

  • libvirt_cpu_mode = custom | host-model | host-passthrough
  • libvirt_cpu_model = ... /usr/share/libvirt/cpu_map.xml中的一个命名模型....(此参数仅在libvirt_cpu_mode = custom时有效 )

eg1

 libvirt_cpu_mode =主机模型

eg2

libvirt_cpu_mode = custom
libvirt_cpu_model = Opteron_G3