Libvirt & KVM

Wat zijn Libvirt & KVM/Qemu ?

Al sinds virtualisatie relevant is geworden bestaat er al zo iets als KVM. (Kernel Virtual Machine) in de basis is dit een hypervisor zoals we dat gewend zijn.

Het idee is eigenlijk helemaal niet zo complex, een virtuele machine draait dankzij de techniek van KVM op kernel niveau. voor de wat minder Linux georiënteerde mensen, dit wilt dus zeggen dat het zo dicht mogelijk op de hardware draait (Vergelijkbaar met ESXI)

Verder heeft Linux iets genaamd “userland” , hier neemt qemu (spreek uit: KeeMu) het voor zijn rekening.
ook dit kunnen we voor de wat minder fanatieke linux gebruiker simpel uitleggen.

Op het systeem niveau waar wij als gebruiker met onze vieze vingers aan dingen mogen rommelen zorgt qemu ervoor dat we een makkelijkere manier hebben dan de hele tijd enge stukken code tegen de kernel aan te moeten schuiven.

Wat betreft Libvirt, dit is de laag Duplo waar we op zaten te wachten. het idee van Libvirt is om een gelijke set commandos beschikbaar te maken voor verschillende hypervisors. 

Dit betekent in normaal Nederlands dus eigenlijk niet meer als “Ik spreek met Libvirt, welke op zijn beurt vertaalt na wat er dan ook gesproken wordt”

Hoe installeer ik dit?

Tot zover de theorie. tijd voor een stukje praktijk georiënteerd prutsen!

Ik ga hier uit van Debian Linux 8, maar mocht je zelf iets anders willen gebruiken dan zul je met deze instructies nog best een eind komen.

apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

Gezien hierdoor het initramfs opnieuw gefabriceerd wordt zullen we wel even opnieuw moeten opstarten

reboot

Verder zou ik het persoonlijk aanraden om even de vhost kernel module aan te slingeren, zodat we ook virtuele netwerken kunnen gebruiken. dit is simpel te doen doormiddel van

modprobe vhost_net

als we vervolgens willen valideren of dit goed gegaan is:

lsmod | grep vhost

in mijn geval geeft dit het volgende resultaat:

vhost_net              17307  0
tun                    26385  1 vhost_net
vhost                  22500  1 vhost_net
macvtap                17526  1 vhost_net

Ter referentie, hier de file /etc/network/interfaces voor bridges

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source/etc/network/interfaces.d/*

# The loopback network interface
auto lo iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual

iface br0 inet static
address 10.0.0.30
network 10.0.0.0
netmask 255.255.255.0
broadcast 10.0.0.255
gateway 10.0.0.1
dns-nameservers 10.0.0.30
bridge_ports eth0
bridge_stp off
auto br0

Cool, en nu?

Nu hebben we als het goed is alles werkende en zouden we vanuit de commandline met het volgende commando naar libvirt kunnen om onze verse installatie van leuke dingen te voorzien.

virsh -c qemu:///system

Let even op met de drie-dubbele slash!

mocht je een desktop omgeving draaien omdat je dit aan het testen bent, dan zou ik aanraden om even het volgende commando te draaien voor een grafische client:

apt-get install virt-manager