incubator-cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wido den Hollander <>
Subject Re: QEMU support in CloudStack
Date Fri, 08 Feb 2013 14:07:14 GMT

On 02/08/2013 10:34 AM, Dave Cahill wrote:
> Hi,
> Recently I encountered two "nested virtualization" use cases which made me
> want QEMU hypervisor support in CloudStack. I'm interested to hear if
> anyone else is interested in this feature, and any notes on how it should
> be implemented.
> Here is a good explanation from OpenStack docs [2] on why they support 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."

So, I've been reading into the code and found this on my Ubuntu systems.

root@stack01:~# ls -l /usr/bin/kvm
lrwxrwxrwx 1 root root 18 Oct  4 02:44 /usr/bin/kvm -> qemu-system-x86_64

Imho Qemu is Qemu and KVM only comes into play when the kernel module 
'kvm' and 'kvm_amd' or 'kvm_intel' is loaded.

> Here are the use cases I encountered:
> [Use case: Dev environment]
>      Wanted to use Vagrant [1] to create a portable multi-node dev
> environment; however Vagrant uses VirtualBox, which doesn't support KVM.
>      Also, devcloud uses VirtualBox and devcloud-kvm uses kvm-within-kvm. I
> imagine maintenance of devcloud and devcloud-kvm would be easier if
> devcloud-kvm could use VirtualBox too.
>      Note: Of course, I'm aware of devcloud-kvm as an alternative for this
> use case, and I'll be looking into that next.
> [Use case: Demo environment]
>      We may want to spin up a multi-node CloudStack install in Amazon AWS
> for demo purposes.
>      Again, AWS instances don't support KVM, so this is not possible without
> QEMU support.
> [Implementation ideas]
>      The management server currently does a check for KVM support ("kvm-ok")
> on the host, and refuses to add the host if that fails. I think this check
> could be removed, as the agent setup scripts will fail anyway if the user
> is trying to setup a certain hypervisor on a machine which doesn't support
> it.

This way you could do nested virtualization indeed, but it could also 
hurt users who have their BIOS set to disabled and could lead to long 

>      Create a new setting in like "use_qemu", with a
> default of "false". If the person deploying CloudStack agent sets this to
> "true", cloud-setup-agent and other setup scripts would ignore lack of KVM
> support as long as QEMU support was available.

cloud-setup-agent generates a, so at that point it 
doesn't know that the user intents to use the system without KVM support.

>      Lastly, when creating the libvirt XML file for a VM, set hypervisor to
> QEMU rather than KVM in the XML file depending on the config setting.

That's not hard coded. The Agent does a getCapabilities() call to 
libvirt which returns a list of possible emulators.

/usr/bin/kvm is just one of them which is returned and matches the 


> Thanks for reading,
> Dave.
> [1]
> [2]

View raw message