openstack新建实例各种报错解决

最近自己装了下Openstack,零基础安装,参照了网上不少教程。

吃了百家饭的后果,就是出现了一堆不明问题...openstack安装比较复杂,很多配置文件,一个地方配置不正确,可能会导致后面的功能不可用。

仅以此文记录安装结束后,启动实例时候遇到的一系列错误及排查过程。

BUG 1: No valid host

报错

No valid host was found. There are not enough hosts available.

解决方法

网络节点执行

[root@openstack-controller-dev ~]# vim /etc/sysctl.conf 

增加下面内容:

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0

验证是否生效

[root@openstack-controller-dev ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

BUG 2: Unable to convert image to raw

报错

69ad3af8-3253-4a35-a6f1-ee5bcd1e37f2 aborted: Image 8f9cf451-764e-4219-ba0b-2edb93a9e63e is unacceptable: Unable to convert image to raw: Image /var/lib/nova/instances/_base/9b2bd71aef84e92d7147d0eb3697710afd403a4a.part is unacceptable: Unable to convert image to raw: Unexpected error while running command.
2019-11-15 01:12:18.776 162849 ERROR nova.compute.manager [instance: 69ad3af8-3253-4a35-a6f1-ee5bcd1e37f2] Command: qemu-img convert -O raw -f qcow2 /var/lib/nova/instances/_base/9b2bd71aef84e92d7147d0eb3697710afd403a4a.part /var/lib/nova/instances/_base/9b2bd71aef84e92d7147d0eb3697710afd403a4a.converted
2019-11-15 01:12:18.776 162849 ERROR nova.compute.manager [instance: 69ad3af8-3253-4a35-a6f1-ee5bcd1e37f2] Exit code: 1
2019-11-15 01:12:18.776 162849 ERROR nova.compute.manager [instance: 69ad3af8-3253-4a35-a6f1-ee5bcd1e37f2] Stdout: u''
2019-11-15 01:12:18.776 162849 ERROR nova.compute.manager [instance: 69ad3af8-3253-4a35-a6f1-ee5bcd1e37f2] Stderr: u'qemu-img: error while reading sector 17280: Input/output error
'

排查过程

面向百度进行开发后,在openstack的官网QA上找到了答案:镜像上传不完整.

参考链接: Image is unacceptable: Unable to convert image to raw.

于是重新上传,上传后发现新的问题...

BUG 3: CPU feature spec-ctrl not found

报错

internal error: process exited while connecting to monitor: 2019-11-15T09:42:49.789389Z qemu-kvm: CPU feature spec-ctrl not found

分析及排查

经过百度查看多篇文章后,发现下面这篇说的很在理。

参考链接: OpenStack这张嘴能否吞得下SkyLake这条热狗

排查相应计算节点的nova-compute日志时发现,日志中有错误信息

qemu-kvm: CPU feature spec-ctrl not found

该日志传达了几点信息:

  • Libvirt的获取宿主机的CPU指令集列表中包含该特性
  • qemu-kvm不支持CPU特性spec-ctrl

解决方案

  • 升级libvirt和qemu来适配新款CPU
  • 修改计算节点libvirt获取到的指令集列表cpu_map.xml,屏蔽虚拟化组件不支持的CPU特性。备份cpu_map.xml文件,然后修改/usr/share/libvirt/cpu_map.xml,将和spec-ctrl相关的特性删除

最后把libvirt服务重启生效。

因考虑到升级libvirt和qemu影响较大,升级过后可能会影响部分逻辑和功能,故推荐第二种解决方法。

像这样的配置

<model name='Haswell-noTSX-IBRS'>
  <model name='Haswell-noTSX'/>
  <feature name='spec-ctrl'/>
</model>

改为

<model name='Haswell-noTSX-IBRS'>
  <model name='Haswell-noTSX'/>
</model>

这样的直接删掉

<feature name='spec-ctrl'>
  <cpuid eax_in='0x07' ecx_in='0x00' edx='0x04000000'/>
</feature>

重启libvirt

[root@openstack-compute-dev ~]# systemctl restart libvirtd.service

上面的操作执行完后,再次新建实例,有可能还会报下面的错误:

internal error: process exited while connecting to monitor: 2019-11-15T11:02:14.259953Z qemu-kvm: CPU feature stibp not found

执行和上面针对spec-ctrl一样的操作就可以了。

原文地址:https://www.cnblogs.com/laolieren/p/solve_openstack_create_instance_error.html