(Last Updated On: August 19, 2018)

I was trying to Deploy Openstack for testing inside VirtualBox and i got an error “NoValidHost: No valid host was found. There are not enough hosts available.” while trying to run an instance with nova boot command.

I did it after converting VDI to Qcow2 and trying to launch it on Nova, check

How to convert VirtualBox Disk Image (VDI) and img to Qcow2 format

This normally happens when you’re using qemu as hypervisor inside VirtualBox instead of KVM acceleration to run Openstack Compute service (Nova).

 QEMU

From the perspective of the Compute service, the QEMU hypervisor is very similar to the KVM hypervisor. Both are controlled through libvirt, both support the same feature set, and all virtual machine images that are compatible with KVM are also compatible with QEMU. The main difference is that QEMU does not support native virtualization. Consequently, QEMU has worse performance than KVM and is a poor choice for a production deployment.

When you try to launch an instance with nova boot command and get status ‘ERROR’, the log file /var/log/nova/nova-conductor.log is likely outputting the error “NoValidHost: No valid host was found.There are not enough hosts available. “. You can check it by running:

tail -f /var/log/nova/nova-conductor.log

To fix this problem, open nova.conf file and add the following lines.

openstack-config --set /etc/nova/nova.conf DEFAULT compute_driver libvirt.LibvirtDriver
openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

We enabled QEMU with above command and make compute driver to be libvirt.LibvirtDriver.
If  you’re running Openstck on a Bare Metal server, you’ll have to set virt_type to kvm. Your configuration will look as below:

openstack-config --set /etc/nova/nova.conf DEFAULT compute_driver libvirt.LibvirtDriver
openstack-config --set /etc/nova/nova.conf libvirt virt_type kvm

All values that can be set for virt_type depending on the hypervisor you’re using are:

  1. kvm
  2. lxc
  3. qemu
  4. uml
  5. xen
  6. parallels

For some operations you may also have to install the guestmount utility:
On Ubuntu/Debian

sudo apt-get install guestmount

On CentOS and RHEL

sudo yum install libguestfs-tools

On openSUSE:

 zypper install guestfs-tools

Both QEMU and KVM hypervisor supports the following virtual machine image formats:

  1. Raw
  2. QEMU Copy-on-write (qcow2)
  3. VMware virtual machine disk format (vmdk)

You should now be able to launch an instance with Openstack Nova using QEMU hypervisor.
Tags:
How to Setup Qemu as Openstack Hypervisor
How to Fix “NoValidHost: No valid host was found.There are not enough hosts available. ” on CentOS 7 Openstack Host OS.
Installing guestfs-tools on Linux
Nova integration with Qemu