2

I am trying to install OpenStack on Ubuntu 12.04.3 Desktop AMD 64 in VMware on a host Dell Inspiron15R 5521 with Windows 8 64-bit.

I have followed the tutorial here but I'm getting error

Your system isn't configured to run KVM properly. Investigate this before continuing.

after I run the command as suggested in tutorial

./openstack_networking.sh
Raphael Ahrens
  • 9,701
  • 5
  • 37
  • 52
Umair Ayub
  • 273
  • 1
  • 2
  • 8
  • What VMware product do you have and also you're going to need to add what CPU you have to answer this conclusively. I'm contending that given what setup you have (a budget Inspiron laptop w/ likely a i5 Intel CPU) it's not going to be "possible" (i.e. not usable) while Mike's answer might mean it's "possible" though completely unusable due to the performance being pitiful at any rate. – slm Mar 23 '14 at 10:45
  • 1
    @slm is right about (if there is any at all!) the awful performance- as i took care to note. Were i you i would try to use HyperV with Win8, ubuntu, and openstack running concurrently at the same 1-deep virt level. But maybe thats a lie, because i probably wouldnt be running Windows... Or ubuntu. – mikeserv Mar 23 '14 at 11:33

2 Answers2

4

You often cannot run virtualization products inside other virtualization products. In this case you're attempting to run KVM (one virtualization product) inside another one (VMware), and this might be technically feasible, the performance of having to run a nested hypervisor inside another hypervisor on your Dell Inspiron laptop will likely be completely unusable.

See my answer to this other U&L Q&A: Virtualbox under Proxmox which may help explain some of the issues. That question is regarding different virtualization products but the issues are applicable to all products in this category.

EDIT #1

After reading @mikeserv's answer I did further digging and research and did come across this blog post which would seem to indicate that you could install a nested KVM host inside of VMware Workstation 8. So your mileage may vary. The articled was titled: Nested KVM VM inside a VMware Workstation 8 VM – how to.

The article explains the steps as follows:

  1. Create a custom (advanced) VM in workstation 8
  2. Select "LSI Logic SAS" SCSI controller during creation
  3. After creation and prior to booting, customize the processing enabling: "Virtualize Intel VT-x/EPT or AMD-V/RVI".

          ss #1

  4. Modify the VM's .vmx file.

     apic.xapic.enabled=FALSE
     vhv.enable = “TRUE”
     vcpu.hotadd = “FALSE”
    
  5. Creating a KVM based VM inside

        ss #2

However given all this I would still be shocked if this was a usable configuration once set up. The performance will likely be, as Mike put it so eloquently, "atrocious".

slm
  • 363,520
  • 117
  • 767
  • 871
1

Here is my proposed solution:

In this blog post I find instructions for enabling nested virtualization instructions for ESXi or VMWare Workstation v8 on a Windows host. Though the blogger cites installing Microsoft's HyperV in his guest as his purpose for doing so, the same configuration should pass the necessary cpu instructions on to your guest's kvm module. Relevant screenshot:

*<code>VMWare Workstation 8 nested VT config</code>*

The same blogger warns us:

Remember nesting a hypervisor means it’s going to run very, very slow...

And I suggest it will (at least) work because...

I know the Kernel's Virtual Machine requires hardware-enabled virtualization CPU extensions. So the only way to enable kvm is to present it with either AMD-v or VT-x cpu extensions depending on your CPU's vendor, of course. Apparently, according to this, since vSphere 5 it is possible to present this in a virtualized 64-bit guest and therefore nest virtualization hosts. Since you only mention "VMWare" it's impossible for me to know exactly which of their products it is you're attempting to use - each has different capabilities.

But here are instructions for installing VMWare's ESXi in VMWare Workstation on a Windows host. Just being able to do so leads me to believe it must also be possible for kvm.

My own AMD architecture has supported AMD-Vi - or nested virtualization to include IOMMU - for years. According to this the kvm features that can make use of it are enabled by default, but the same is not true for Intel architecture. It seems on Intel architecture the kernel will ignore the necessary CPU extensions if you dont hand it this parameter at boot:

kvm-intel.nested=1

Alternatively you could configure the kvm module itself via modprobe by adding this to /etc/modprobe.d/dist.conf:

options kvm-intel nested=y

The above is primarily focused on how to enable a kvm host to pass virtualization instructions on to its guest - in other words doing the above should be necessary on a host machine but not in the guest. The guest should detect the extensions if present and enable the module - if installed - by default. But most noteworthy to me is that it is possible.

Going back to 2 and I find this addendum toward the bottom of the page:

If you are using an i3 or later processor (that is, you do not have a Core 2 Duo), you can enable nested Virtualization Technology (VT). This allows you to run 64-bit virtual machines within ESXi. To enable nested VT, add this line to the .vmx file of the ESXi virtual machine:

vhv.enable = "TRUE"

Then again, maybe all of your software supports propagating VT-x/EPT and/or AMD-Vi and the only missing piece of the puzzle is that either your CPU doesn't (possible) or that you haven't enabled it in your system's firmware (a little more likely).

mikeserv
  • 57,448
  • 9
  • 113
  • 229