Ondanks dat 95 % van de datacentra op onze planeet op VMware gevirtualiseerd lijkt te zijn, is Linux ook een zeer geschikte kandidaat voor virtualisatie. In deze aflevering uit de reeks “Linux als server” lees je hoe het werkt en wat daar voor nodig is.

 

De Linux kernel biedt niet minder dan twee verschillende hypervisors. De Xen hypervisor is de oudste en had in het verleden een specifieke kernel nodig. De KVM-hypervisor is sinds het begin al ontwikkeld als een kernel module en werd ontworpen met het doel virtualisatie eenvoudig te realiseren op een Linux platform.

 Ooit leek het erop dat KVM de Xen hypervisor weg zou vagen, maar dat is uiteindelijk niet gebeurd. Toen KVM opkwam, was Xen al in verschillende grote omgevingen in gebruik en daarnaast heeft Xen altijd een geweldige reputatie van stabiliteit gehad. Zeker sinds Xen geadopteerd is door de Linux Foundation, en gewoon mee kan liften met de main line kernel, is het nog steeds een valide keuze om te virtualiseren.

 Het succes van Xen wordt onder andere bewezen door de partijen waardoor het gebruikt wordt. Amazone Web Services, de grootste publieke cloud op de planeet, maakt er gebruik van en daarnaast kom je het tegen in industriële omgevingen waar stabiliteit de eerste vereiste is. In de distributies kom je Xen niet overal tegen. Sommigen hebben een twee-sporen-beleid, zoals SUSE. Andere distributies, zoals Red Hat, hebben Xen afgezworen en hebben KVM als enige hypervisor in het portfolio. In dit artikel zullen we verder kijken hoe je een virtualisatieplatform bouwt op basis van KVM op CentOS.

 

Hardware benodigdheden

Om te kunnen virtualiseren met KVM, heb je hardware virtualisatie nodig. Dit is een feature die geboden wordt door de CPU en aanwezig is op alle middel tot high-end CPUs. Als je Intel gebruikt, zit je goed als je een i5 of i7 hebt. Het kan zijn dat de hardware virtualisatie niet aan staat. Als dat het geval is, open je het BIOS-configuratie-menu en selecteer je daar de betreffende optie om hardware virtualisatie aan te zetten.

 Het is ook mogelijk embedded virtualisatie te gebruiken. Dit betekent dat je een virtuele machine aanmaakt in VMware Workstation of Fusion en daar bij de eigenschappen van de virtuele machine Hardware Virtualisatie aan zet. Dat maakt het mogelijk om een virtuele machine als KVM host in te richten en dus inderdaad virtuele machines in een virtuele machine te starten. Deze mogelijkheid, waarmee je uitstekend kunt testen, is niet aanwezig in Oracle VirtualBox overigens.

 Om te verifiëren of je CPU-virtualisatie ondersteunt, kan je op een draaiende Linux machine als root het commando grep vmx /proc/cpuinfo doen. Zie je resultaat? Dan is je hardware geschikt om als virtualisatieplatform gebruikt te worden.

 Naast de vereisten die gesteld worden aan de CPU, heb je natuurlijk voldoende RAM en diskruimte nodig. Als je alleen maar wilt testen, hoeft dit overigens niet bijzonder veel te zijn. Op een kleine machine met 1 GB RAM en een paar GB beschikbare schijfruimte kom je al een heel eind als je alleen maar een eenvoudige Linux VM aan wilt maken.

 

Software Installatie

De volgende stap bestaat eruit de juiste software te installeren. Op een CentOS 7 machine doe je dit met yum groups install “Virtualization host”, gevolgd door yum install virt-manager. Om KVM en andere virtualisatie platformen te beheren, gebruik je de grafische tool virt-manager of het commandline georiënteerde virsh. Met de Virtualization host yum group installeer je de benodigde softwarecomponenten voor de hypervisor. Deze bestaan uit twee kernel modules en libvirtd.

 De KVM kernel modules zijn kvm en een platform specifieke module, zoals kvm_intel. De beheerslaag wordt gerealiseerd door middel van libvirtd. Dit is een daemon die kan communiceren met verschillende hypervisors, maar ook met verschillende beheerprogramma’s. Je kunt dus met libvirtd niet alleen kvm beheren, maar bijvoorbeeld ook een omgeving die met Xen gevirtualiseerd is.

 Als beheersprogramma gebruik je, zoals eerder vermeld, virt-manager of het commandline georiënteerde virsh. Als je nog nooit gewerkt hebt met KVM, is het grafische virt-manager een aanrader. Je hoeft er alleen maar voor te zorgen dat een ISO-bestand van het OS dat je wilt installeren beschikbaar is om een installatie te starten. De volgende procedure beschrijft hoe het werkt.

 

1.         Open een commandline en type virt-manager om de Virtual Machine Manager te starten.

2.         Selecteer File > New om een nieuwe VM aan te maken. Let even op of je geen waarschuwing krijgt dat KVM niet aanwezig is. Ook zonder KVM kun je namelijk met virt-manager een VM aanmaken, alleen wordt er dan niet gevirtualiseerd, maar geëmuleerd en dat gaat erg langzaam.

3.         Ervan uitgaande dat je een lokale ISO beschikbaar hebt, kies je nu Local Installation Media. Selecteer dan de Browse knop en Browse local om het ISO-bestand te selecteren dat je voor installatie wilt gebruiken.

4.         In het volgende venster geef je aan hoeveel RAM en CPU je beschikbaar wilt stellen aan de VM. Kies wat je wilt, zolang je de fysieke mogelijkheden van de host maar niet overschrijdt.

5.         Vervolgens geef je aan wat je met storage wilt doen. Je hebt hiervoor grofweg twee keuzes: je kan een bestand aanmaken dat als backend voor de harde schijf functioneert of je geeft de device naam aan van het device dat je wilt gebruiken als back-end voor de harde schijf. In de meeste gevallen werkt het prima om een bestand aan te maken, dus dat is in dit geval ook aan te raden. Het bestand wordt geplaatst in de directory /var/lib/qemu/images, dus het is zaak om ervoor te zorgen dat je in deze directory voldoende schijfruimte beschikbaar hebt.

6.         In de laatste stap geef je een naam aan de virtuele machine. Als je niets doet, wordt de naam bepaald op basis van het besturingssysteem. Het is handig hier iets anders te kiezen, zodat je VM herkenbaar is op het moment dat je er heel veel hebt.

7.         In dit venster is het ook mogelijk aan te geven welk netwerk je wilt gebruiken. Dit is standaard een NAT-netwerk, maar via de eigenschappen van de hypervisor is het ook mogelijk een ander type netwerk aan te maken, zoals een geïsoleerd netwerk waarover alleen virtuele machines kunnen communiceren.

 

Als je nu op Finish klikt, wordt de virtuele machine aangemaakt en geïnstalleerd. Als dat gebeurd is, kan je hem vanuit virt-manager beheren, maar dat hoeft niet. Je mag het programma ook afsluiten, dat heeft geen effect op de huidige status van de VM – in tegenstelling tot wat het geval is voor programma’s zoals VMware Workstation en VirtualBox.

 

Conclusie

KVM virtuele machines kunnen onder Linux ook volledig vanaf de commandline beheerd worden. Hiervoor maak je gebruik van de virsh commandline interface. Dit commando heeft zeer veel opties om alle aspecten van virtuele machines te beheren en in te stellen. Denk dan niet alleen aan het starten en stoppen van een VM met virsh start vm en virsh shutdown vm, maar denk ook aan geavanceerde mogelijkheden om de configuratie van de VM vorm te geven zoals dat nodig is in elke specifieke omgeving.