> -----Original Message----- > From: Marcus Sorensen [mailto:shadow...@gmail.com] > Sent: Friday, February 08, 2013 10:57 AM > To: Edison Su > Cc: Alex Huang; Sebastien Goasguen; Wido den Hollander; cloudstack- > d...@incubator.apache.org > Subject: Re: QEMU support in CloudStack > > Hmm, looks like /usr/sbin/virt-what in the system vms is returning 'qemu', > rather than 'kvm', so cloud-early-config fails to do any setup. Forcing virt- > what to return kvm in place of qemu gets things going, but perhaps we'd > change cloud-early-config to do the same things for kvm|qemu.
Yes, system vm shouldn't care about it's qemu or qemu-kvm. > > So with those three changes, we have an environment that generally seems > to work and can be QA'd. > > On Fri, Feb 8, 2013 at 11:42 AM, Marcus Sorensen <shadow...@gmail.com> > wrote: > > Looks like it would work, but the centos 6.3 libvirt isn't new enough. > > libvirt says 'unknown os type hvm' on centos, even though I've > > verified that os type of 'hvm' works qemu and without kvm modules on > > ubuntu 12.04. > > > > I upgraded libvirt to a fedora version, and it worked (at least the > > system vms started coming up, need to wait and see if functions work). > > Changes made: > > > > IsHVMEnabled returns true always > > hardcoded _hypervisorType to 'qemu' rather than 'kvm' > > > > Obviously this was just for the test, we would make these changes some > > other way. > > > > On Fri, Feb 8, 2013 at 11:15 AM, Edison Su <edison...@citrix.com> wrote: > >> Wondering, how do you get devcloud-kvm work? > > > > by modprobing kvm, kvm_intel in the guest it can run virtual machines. > > Host system needs to have nested=1 set in it's kvm_intel or kvm_amd > > kernel module parameters (default on many distributions now). > > > >> > >>> -----Original Message----- > >>> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >>> Sent: Friday, February 08, 2013 10:02 AM > >>> To: Alex Huang > >>> Cc: Sebastien Goasguen; Wido den Hollander; cloudstack- > >>> d...@incubator.apache.org > >>> Subject: Re: QEMU support in CloudStack > >>> > >>> I'm running a quick sanity test here... just seeing if switching out > >>> kvm with qemu works, all else the same. Looks like there's a > >>> setHvsType for the LibvirtVMDef as well, that's hardcoded to 'kvm'. > >>> That should be easy to adjust as well, assuming everything just runs > >>> with these changes. > >>> > >>> On Fri, Feb 8, 2013 at 10:54 AM, Alex Huang <alex.hu...@citrix.com> > wrote: > >>> > In that case, why not create two resources with the kvm resource > >>> extending the qemu resource and do what Marcus suggests here in the > >>> qemu resource? > >>> > > >>> > Effectively then we have an agent for qemu and one for kvm and > >>> > they each > >>> can carry their own capabilities. > >>> > > >>> > --Alex > >>> > > >>> >> -----Original Message----- > >>> >> From: Marcus Sorensen [mailto:shadow...@gmail.com] > >>> >> Sent: Friday, February 08, 2013 9:41 AM > >>> >> To: Sebastien Goasguen > >>> >> Cc: Wido den Hollander; cloudstack-dev@incubator.apache.org > >>> >> Subject: Re: QEMU support in CloudStack > >>> >> > >>> >> You would in theory have to disable the check in the agent > >>> >> startup code that looks for the kvm kernel modules, and then > >>> >> libvirt should just fall back to qemu for everything automatically. > >>> >> > >>> >> In LibvirtComputingResource.java, comment out the check for > >>> >> IsHVMEnabled, and then rmmod any kvm modules, then try to do > >>> >> stuff with that version of cloudstack. > >>> >> > >>> >> On Fri, Feb 8, 2013 at 10:10 AM, Sebastien Goasguen > >>> >> <run...@gmail.com> > >>> >> wrote: > >>> >> > > >>> >> > On Feb 8, 2013, at 3:07 PM, Wido den Hollander <w...@widodh.nl> > >>> wrote: > >>> >> > > >>> >> >> Hi, > >>> >> >> > >>> >> >> 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 > >>> >> >> root@stack01:~# > >>> >> >> > >>> >> >> 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 > >>> debugging. > >>> >> >> > >>> >> >>> Create a new setting in agent.properties 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 agent.properties, 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 > >>> >> architecture. > >>> >> >> > >>> >> > > >>> >> > Wido, > >>> >> > > >>> >> > So can I add a "KVM" host that would in fact just use qemu ? > >>> >> > How would I do that ? > >>> >> > > >>> >> > -sebastien > >>> >> > > >>> >> > > >>> >> >> Wido > >>> >> >> > >>> >> >>> Thanks for reading, > >>> >> >>> Dave. > >>> >> >>> > >>> >> >>> [1] http://www.vagrantup.com/ [2] > >>> >> >>> http://docs.openstack.org/trunk/openstack- > >>> >> compute/install/yum/content/qemu.html > >>> >> >>> > >>> >> >> > >>> >> >