KVM staat voor 'kernel-based virtual machines'. Het werd oorspronkelijk ontworpen door de grootste Amerikaanse producent van Linux: Red Hat. Dat bedrijf gaf de code echter vrij in open source en volgens de GPL2-licentie. De benodigde KVM-code is standaard in de Linux kernel opgenomen sinds versie 2.6.20.
KVM zit alleen in de 64-bit kernel, uiteraard, aangezien het de hypervisorfunctionaliteit van moderne 64-bit processoren vereist. Omdat de functionaliteit alleen in de Linux-kernel zit, spreekt het vanzelf dat KVM alleen beschikbaar is in een 64-bit Linux host. Er is wel iemand bezig met een Windows-versie van KVM, maar die is nog lang niet af. Er is wel sinds 2007 een KVM voor FreeBSD. Aan de gastzijde ondersteunt KVM alles wat zijn virtuele hardware kan herkennen.
Compatibiliteit
KVM-hosts kunnen 64-bit Linux of FreeBSD zijn. Aan de gastkant emuleert KVM een Cirrus CLGD 5446 PCI VGA-kaart, i440FX host PCI bridge en PIIX3 PCI-naar-ISA-brug, als geluidskaart naar keuze een Sound Blaster 16, Ensoniq AudioPCI ES1370, Gravis ultrasound GF1 of CS4231A-compatibele geluidskaart; als netwerkkaart AMD Am79C970A, E1000 (Intel 82540EM, 82573L, 82544GC), Novell NE2000, en Realtek 8139. Bijna alle ons bekende besturingssystemen hebben wel drivers voor een of meerdere van deze hardware-onderdelen. Er kan maximaal 32 TiB ram gebruikt worden en KVM ondersteunt tot 64 cpu's of cores, maar minder in een VM (zie verder).
Functionaliteit
Qua functionaliteit krijg je binnen een KVM VM veel, maar niet alles wat een doorsnee Linux doorgaans biedt. Zo heeft een VM audio en usb, maar geen grafische 3D. Een VM kan wel 'levend' gesnapshot worden en ook 'levend' gemigreerd naar een andere KVM-host voor zover die van dezelfde opslagruimte gebruik maakt. Er is geen voorziening om hostfolders te delen met een VM en een klemborddeling is ook niet mogelijk. KVM ondersteunt maximaal 16 cpu's of cores binnen een VM. Het ondersteunt alle versies vanaf Windows NT 4.0 als gast, maar geen Windows 9x. Ook geen OS/2, maar wel Netware 4.1 onder FreeDOS 7. Alles kan headless draaien en VM's kunnen dan bereikt worden via VNC of TLS. Het hele systeem is ontworpen voor scripting en werkt standaard eigenlijk zonder beheer-GUI. Er zijn meerdere beheerconsoles voor KVM beschikbaar, maar voor desktopgebruik raden wij virt-manager aan. Die kan trouwens ook gebruikt worden voor de Xen-virtualisatiemodule die eveneens aanwezig is in de kernel van Linux.
Praktijk
Standaard zit KVM in de 64-bit Linux-kernel, maar de meeste Linux-distributies hebben standaard niets geïnstalleerd om daarvan gebruik te kunnen maken. Je moet dus eerst QEMU-KVM-pakketten installeren plus een GUI om het geheel mee te beheren. Wij kozen daarvoor het virt-manager-pakket. Vervolgens kom je een struikelblok tegen dat aantoont dat KVM eigenlijk ontworpen is voor Linux-servers. De hele omgeving veronderstelt namelijk dat je de VM's als root wil uitvoeren. Dat is wat ons betreft totaal ongewenst. Daardoor krijg je een foutmelding zodra je een virtuele machine in virt-manager probeert aan te maken, want die probeert te schrijven in /var/lib/libvirt/images en daar heeft alleen de root schrijfrechten voor. Je moet dus eerst in de voorkeuren van virt-manager een andere doeldirectory voor de virtuele harde schijven opgeven waar je als gewone gebruiker wél schrijfrechten toe hebt. Een andere optie is de /var/lib/libvirt/images-directory eerst met chmod een rechtenwaarde van 755 mee te geven, zodat gewone gebruikers er ook mee kunnen werken. Pas daarna lukt het aanmaken van een VM. Dat aanmaakproces gaat erg vlug en ook de resulterende VM maakt een snelle indruk. Er zijn opties beschikbaar om virtuele harde schijven van concurrerende virtualisatieproducten of zelfs beeldkopieën van fysieke systemen om te vormen tot het IMG-formaat dat KVM zelf gebruikt.
Conclusie
KVM werkt snel, maar het beheer via de grafische virt-manager is lang niet van hetzelfde niveau als dat van VirtualBox of VMWare onder Linux. Het is echter wel een goede concurrent van deze twee en concurrentie zorgt nu eenmaal voor een steeds hogere kwaliteit.
Productinfo
Product: KVM
Producent & leverancier: KVM; www.linux-kvm.org
Adviesprijs: gratis (GPL2-licentie)
Systeemvereisten: 64-bit Linux met kernel 2.6.20 of hoger; beheerapplicatie zoals Virt-Manager of iets anders
De Serie: Desktopvirtualisatie
Deel 1: Simuleren en testen op een virtuele pc
Deel 2: Microsoft Windows Virtual PC
Deel 3: Oracle VM VirtualBox
Deel 4: Red Hat KVM
Deel 5: VMWare Workstation
3D en klemborddeling is werk in uitvoering:
http://www.spice-space.org/features.html
Je hoeft geen gast als root uit te voeren maar proviandering vereist de nodige permissies net zoals handmatig schrijfrechten aanpassen dit vereist.
Als je zorgt dat installatie media en opslag capaciteit beschikbaar is dan kun je als gewone gebruiker verbinden naar een hypervisor met bijvoorbeeld virt-manager en deze zal een en ander voor jou uitvoeren als jij de nodige certificaten hebt.
Verder is er een hele suite aan gereedschap beschikbaar:
http://libguestfs.org/
Andere voordelen van libvirt en KVM/QEMU:
http://berrange.com/posts/2011/06/07/what-benefits-does-libvirt-offer-to-developers-targetting-qemukvm/