Skip to main content

Install nested KVM in VMware ESXi 5.1

In this blog, I will explain the steps required to run a nested KVM hypervisor on  Vmware ESXi. The installation of KVM is done on Ubuntu 13.10(64 bit).

Note: It is assumed that you have already installed your Ubuntu 13.10 VM in ESXi, and hence we will not look into the Ubuntu installation part.

1) Upgrade VM Hardware version to 9.

In my ESXi server, the default VM hardware version was 8. So I had to shutdown my VM and upgrade the Hardware version to 9 to get the KVM hypervisor working. You can right click the VM and select the Upgrade hardware option to do this.


2)In the ESXi host In /etc/vmware edit the 'config' file and add the following setting

vhv.enable = "TRUE"

3)Edit the VM settings and go to VM settings > Options > CPU/MMU
Virtualization .
Select the Intel EPT option















4) Go to Options->CPUID mask> Advanced-> Level 1, add the following CPU mask level

ECX  ---- ---- ---- ---- ---- ---- --H- ----

5) Open the vmx file of the Ubuntu VM and add the following setting

monitor.virtual_exec = “hardware”
hypervisor.cpuid.v0 = “FALSE”
 

KVM installation steps


Once the above configurations are done in ESXi and the VM, hardware virtualization would be supported in the VM. Inorder to confirm that, run the following command in the Ubuntu VM.
 
egrep -c '(vmx|svm)' /proc/cpuinfo
 


You should get output as 1, which means hardware  virtualization is supported. Also you should see hvm flags in the output when you run the following command

cat /sys/hypervisor/properties/capabilities 
Or else you could also run the following command
 kvm-ok
The output should be as follows:
INFO: /dev/kvm exists

KVM acceleration can be used
 If the above command succeeds, proceed with the remaining steps below

1)Install KVM

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

2)Add user to libvirtd group

$ sudo adduser <username> libvirtd
  
username should be the same as the admin user that you are logged in with(the one created during Ubuntu installation)

3)Set permissions

The sock file permission should be as follows
$ sudo ls -la /var/run/libvirt/libvirt-sock

srwxrwx--- 1 root libvirtd 0 2010-08-24 14:54 /var/run/libvirt/libvirt-sock


The /dev/kvm permission should be as follows

 $ ls -l /dev/kvm

crw-rw----+ 1 root libvirtd 10, 232 Jul  8 22:04 /dev/kvm


sometimes, the device group would be root, in that case change it to libvirtd

sudo chown root:libvirtd /dev/kvm

Log off and log in for the changes to take effect

4)Install GUI

In the default Ubuntu installation GUI is not installed. You could choose to install it followed by
if you plan to use the graphical user interface virt-manager to manage the VMs in KVM

First install the Ubuntu GUI

sudo apt-get install --no-install-recommends ubuntu-desktop

This will get a bare minimum installation of the GUI, that would serve our purpose of using Virt-manager

Reboot the machine after installation, and you can login to the GUI from the VM console

Now, Install the virt-manager using the following command

sudo apt-get install virt-manager

5)Access Virt-manager to create/manage VMs in KVM

Once you login to GUI, the virt manager can  be found by browing /Usr/share/applications  and select Virt-manager

If all turns out well, you should be able to see the Virt-manager connected to localhost(QEMU). Now you can start creating your VMs!!!



Comments

  1. Hi Expert,

    I can't apply step 4 when I put ECX ---- ---- ---- ---- ---- ---- --H- ---- I have an eroor

    ReplyDelete
    Replies
    1. Can you tell me what the error is? Have you completed step 1, 2 & 3 successfully?

      Delete
  2. Thank you so much for these instructions. I'm preparing for a Red Hat certification and I used the first part of this tutorial. If it wasn't for this, I would have had to install CentoOS on a different machine in order to learn about KVMs.

    ReplyDelete
    Replies
    1. Hi Manoel..Happy that the blog was helpful :)

      Delete
  3. if your CPU doesn't have virtualization extensions, KVM won't work. VirtualBox and VMware would, but with reduced speed. Xen is the only solution that would give you a good performance.

    kvm vs vmware

    ReplyDelete
  4. Thanks for sharing this was very helpful. Please check our product akku
    Identity & Access Management Solution

    ReplyDelete

Post a Comment

Popular posts from this blog

Windows server 2012: where is my start button??

If you have been using Windows Server OS for a while, the one thing that will strike you most when you login to a Windows server 2012 is that there is no start button!!.. What??..How am I going to manage it?? Microsoft feels that you really dont need a start button, since you can do almost everything from your server  manager or even remotely from your desktop. After all the initial configurations are done, you could also do away with the GUI and go back to server core option.(In server 2012, there is an option to add and remove GUI). So does that mean, you need to learn to live without a start button. Actually no, the start button is very much there .Lets start looking for it. Option 1: There is "charms" bar on the side of your deskop, where you will find a "start" option. You can use the "Windows +C" shortcut to pop out the charms bar Option 2: There is a hidden "start area"in  the bottom left corner of your desktop

Use Diskpart to make drives online

Issue: In disk management, disk is shown as missing or Offline in Windows Resolution: The disks can be made online by using diskpart utility - Open a command prompt->type diskpart -Inorder to list the disks in the system type: list disk -Note down the number of the disk that you want to make online -Select that disk to operate upon, For eg:, if the disk number is 1, type: Select disk 1 -Now that particular disk will be selected as teh active disk. If you type "list disk" command once more, you can see a * symbol on the left side of the selected disk -Inorder to make the selected disk online type : online disk - If the disk is made online, you will get a message that the operation is completed successfully

Kubernetes best practices in Azure: AKS name space isolation and AAD integration

Once you have decided to run your workloads in AKS service in Azure, there are certain best practices to be followed during design and implementation. In this blog we will discuss two of these recommended practices and the practical aspects of their implementation- Azure AD integration and name space isolation While AAD helps to authenticate users to your AKS cluster using the existing users and groups in your Azure AD, name space isolation provides logical isolation of resources used by them. It is useful in multi tenant scenarios where the same cluster is being used by different teams/departments to run their workloads. It is also useful in running say a dev, test and QA environment for organization in the same cluster. Combining AAD integration with name spaces allow users to login to their namespace using their Azure AD credentials AAD integration with AKS : The following Microsoft document will get you started  with AAD integration of AKS cluster.: https://docs.microsof