Virtualisation using KVM and Libvirt
- Aniketh Girish
It feels like almost a decade that I have written some good technical blog posts. I was so caught up with work and life a bit (alot!! :P). So, this post is all about creating a virtual machine using KVM, libvirt. So, here is a step by step process from installing necessary stuff to running your favorite OS on the virtual machine. This post is just targetting Ubuntu/ Debian distro users. I haven't basically tested out others. Surely will come up with others if asked/needed :D.
Let's start with giving out a heads-up by answering some questions:
What is KVM?
Kernel-based Virtual Machine, KVM, is a Kernel-based hypervisor. This is a part of Linux kernel mainline. KVM is a virtualization infrastructure that turns Linux kernel into a hypervisor.
P.S: A hypervisor is a program that allows multiple operating systems to share a single hardware host.
What is libvirt?
So basically, libvirt is an open-source API/ library, which has access or the option to handle/ workaround with system kernel daemon and management tool for managing platform virtualization. KVM is being managed by this library. But this is certainly not limited to KVM alone. VMware, QEMU, and other virtualization technologies are being managed by this library.
Why prefer virtualization with KVM while it's easier to create VM using the Virtual box and other easier options available in town?
For me, it all started when I decided to start contributing code to OpenStack. So, I could say it is something developers prefer and recommend.
Giving an overview altogether, KVM stands apart in multiple aspects. Some noticeable highlights would be, better performance, the higher level of integration it allows, and the cost, obviously, since it is open-sourced, the maturity and the stability KVM offers is commendable, scalability it brings in is outstanding, and unmatched functionality support.
KVM is typically the most popular choice for users who are concerned about the cost of operating each VM and less interested in enterprise-level features. This rule primarily applies to providers of cloud and host services, who are particularly sensitive to the cost and density of their servers. These users are highly likely to choose open-source hypervisors, especially KVM.
The tight integration with the host OS is one of the most common reasons for developers to choose KVM, especially those who use Linux. The inclusion of KVM in many Linux distributions also makes it a convenient choice for developers. KVM is also more popular among users who are unconcerned about brand names.
okay, now let's move on to the installation of KVM with libvirt(virt-install & virt-manager)
Let's get into Terminal/command line for a while now.
We need to check if your processor supports virtualization or not:
~$ egrep -c '(vmx|svm)' /proc/cpuinfo
if the output of above command is 0 then your CPU does not support hardware virtualization and if the output is 1 or more then it does. Further, if you still need to check your BIOS id virtualization [VT-x in Intel and AMD-v in AMD processor] is enabled or not.
You can also execute the following command to check for KVM compatibility:
Check the output of the command:
INFO: /dev/kvm exists KVM acceleration can be used
If you are with an output something like the above, you are good to go. If you end up with something like the one below, you can still run virtual machines, but it’ll be much slower without KVM extensions.
INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used
But if you see, something like the following then checks your kernel version. KVM works only with Ubuntu-kernel. You might need to manually set your kernel too here.
INFO: /dev/kvm does not exist HINT: sudo modprobe kvm\_intel modprobe FATAL: Module msr not found.
You need to install the following packages.
~$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Add your username to the group libvirtd
~$ sudo adduser \`username\` libvirtd
Note: Sometimes here you could end up with an error stating, 'Group 'libvirtd' does not exist', So what you need to do is that,
Create a group manually and add the user.
~$ sudo addgroup libvirtd sudo adduser \`username\` libvirtd
After adding the user, it is preferred to reboot the system once, so to have better and effective usage after adding the user to the libvirtd group.
Just follow the command:
~$ virsh -c qemu:///system list
This should give output like this:
Id Name State ———————————-
If this command fails to connect with the hypervisor, then you can check the errors and the solutions here.
modprobe -a kvm
For GUI instance of the virtualization manager:
~$ sudo apt-get install virt-viewer
Virt-manager is a GUI application for creating and managing virtual machines.
~$ sudo apt-get install virt-manager
Then you can create the virtual machine from the GUI interface easily using this manager. Or also you could follow the command-line interface for this as well :)
Hope this helps some people as it did for me and made my life lot easier. Will be back with lot more.
cya, peeps :D