Spawning a Little-Endian instance in OpenStack
rfolco 270004CUW7 Comments (3) Visits (8589)
By Rafael Folco, Advisory Software Engineer
In today's post we show an example on how to workaround virtio limitations and successfully spawn a little-endian instance in OpenStack. This post assumes you have an upstream version of OpenStack already installed with Nova (compute) and Glance (image) services up and running. Check Devstack for a quick way to deploy OpenStack on your system.
At the time of writing, there is a limitation for ppc64el images with the 'virtio' driver model, which doesn't work with vhost (kernelspace). OpenStack generates the libvirt XML for its guests using virtio settings with vhost. In other words, there is no way to use virtio without vhost in OpenStack. Default 'virtio' configuration (with vhost) adds "<model type='virtio'/>" to the guest libvirt settings.
The workarounds for this issue could be one of the following:
ibmveth (spapr-vlan) driver
ibmveth and ibmvscsi are legacy drivers derived from PowerVM and are now supported on PowerKVM, as explained in this blog post.
Currently, OpenStack upstream does not support ibmveth driver. This driver support in OpenStack is being addressed by http
Disable vhost-net module
This workaround doesn't require any change in OpenStack. Disabling the vhost-net module you force vhost=off when qemu runs the virtual machine.
This option uses qemu driver (userspace) instead of vhost (kernelspace) for the virtio model.
This model type has been 'accidentally' worked in my tests. Although it works, this is not officially supported and should not have be available for long-term usage. Here is an example of the 'virtio-net' model configuration in the libvirt xml:
In order to boot a little-endian image in OpenStack, you first need to upload it to the image service component, Glance. The following commands download and upload the image to Glance:
To spawn an instance of the Little-Endian image, run:
Log in to the guest using the key you provided, as shown below:
ssh -i mykey.pem firstname.lastname@example.org
ubuntu@test:~$ uname -m
Confirm your network device is using ibmveth driver:
For more information about IBM PowerKVM refer to the Redbook.