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\n'

排查過程

面向百度進行開發後,在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一樣的操作就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章