Setting up a KVM host perfectly requires knowldege in a lot of areas, especially when it comes to setting up the networking and optimizing disk performance. This tutorial is aims to be an "idiots guide" and glosses over most of these details in order to get you up and running with a simple setup quickly. It will link to additional content, such as my KVM cheatsheet, where appropriate so that you can delve further into the areas that are appropriate for you.
KVM is such a large field, and is constantly evolving. I will be using these KVM tutorials whenever I configure a KVM host, and thus, they will evolve over time as I gain further knowledge and new features are released.
For the time being, you need a dedicated server, or your own physical machine. You cannot setup a KVM Hypervisor on a VPS, such as a Digital Ocean or AWS EC2 instance. When I first wrote this tutorial, I used an Incero Instant server which was donated to me for research/testing. Unfortunately the service appears to have disappeared, but I hope it comes back. If you know a dedicated server provider that charges by the hour and deploys within minutes, thn please let me know in the comments below.
First, let's check that the machine you are trying to set up as a KVM host is compatible:
sudo apt-get install cpu-checker -y kvm-ok
- Alternatively, run
egrep -c '(svm|vmx)' /proc/cpuinfoand if it returns a number greater than 0, you should be fine.
sudo apt-get install qemu-kvm libvirt-bin bridge-utils virtinst -y
Note: You will also need virt-viewer if you want to install via VNC another day.
At this point we have a choice of creating a new user to manage the KVM virtual machines, or to make the current logged in user the manager. Pick one.
Please choose one of either of the options below:
Option 1 - Make Current User KVM Manager
sudo usermod --append --groups libvirtd $USER
Option 2 - Create KVM User
Add a subuser with sudo priviledges and a home directory:
KVM_USER="kvm_user" sudo useradd -d /home/$KVM_USER -m $KVM_USER sudo passwd $KVM_USER echo "$KVM_USER ALL=(ALL:ALL) ALL" | sudo tee --append /etc/sudoers
Note: Alternatively, you could use the adduser $KVM_USER command instead of useradd as this will automatically prompt you for a password and set up a home directory
Warning: When I tried to run everything as root instead of creating a user I received permission issues with the created disk images that were automatically made.
Add the kvm user to the libvirtd group
sudo usermod --append --groups libvirtd $KVM_USER
Log in as the kvm user. All commands from here on will be executed within this account.
Check the Installation
Check that installation went okay by running the following command:
sudo virsh -c qemu:///system list
[ You should see something like above ]
You now have a working KVM Host on which you can deploy virtual machines. I now suggest you read my getting started with KVM article so that you can quickly start deploying your own virtual machines with little to no effort/research.
Please refer here.