修复Openstack Nova错误NoValidHost:找不到有效的主机。没有足够的主机。
我试图部署Openstack在VirtualBox中进行测试,但出现错误NoValidHost:未找到有效的主机。没有足够的主机。
尝试使用nova boot命令运行实例时: NoValidHost: No valid host was found.
我在将VDI转换为Qcow2并尝试在Nova上启动它之后完成了
如何将VirtualBox磁盘镜像(VDI)和img转换为Qcow2格式
当我们在VirtualBox中使用qemu作为虚拟机监控程序而不是KVM加速来运行Openstack Compute服务(Nova)时,通常会发生这种情况。
QEMU
从Compute服务的角度来看,QEMU管理程序与KVM管理程序非常相似。两者均通过libvirt控制,均支持相同的功能集,并且所有与KVM兼容的虚拟机镜像也与QEMU兼容。
主要区别在于QEMU不支持本地虚拟化。因此,QEMU的性能比KVM差,对于生产部署而言,它不是一个好的选择。
当我们尝试使用nova boot命令启动实例并获取状态错误时,日志文件/var/log/nova/nova-conductor.log可能会输出错误NoValidHost:找不到有效的主机。没有足够的主机。 。我们可以通过运行以下命令进行检查:
tail -f /var/log/nova/nova-conductor.log
要解决此问题,请打开nova.conf文件并添加以下行。
openstack-config --set /etc/nova/nova.conf DEFAULT compute_driver libvirt.LibvirtDriver openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu
我们使用上述命令启用了QEMU,并将计算驱动程序设为libvirt.LibvirtDriver。
如果我们在Bare Metal服务器上运行Openstck,则必须将virt_type设置为kvm。配置将如下所示:
openstack-config --set /etc/nova/nova.conf DEFAULT compute_driver libvirt.LibvirtDriver openstack-config --set /etc/nova/nova.conf libvirt virt_type kvm
可以根据我们使用的管理程序为virt_type设置的所有值是:kvmlxcqemuumlxenparallels
对于某些操作,我们可能还必须安装guestmount实用程序:
在Ubuntu/Debian上
sudo apt-get install guestmount
在CentOS和RHEL上
sudo yum install libguestfs-tools
在openSUSE上:
sudo zypper install guestfs-tools
QEMU和KVM虚拟机管理程序均支持以下虚拟机镜像格式:RawQEMU写入时复制(qcow2)VMware虚拟机磁盘格式(vmdk)
现在,我们应该能够使用QEMU虚拟机管理程序通过Openstack Nova启动实例。