Login Form



Home Virtualisatie

Wat is virtualisatie

Wellicht is dit alvast een van de moeilijkste vragen, en als je gaat zoeken met behulp van bijvoorbeeld Google dan kom je vaak op omschrijving waarbij zoiets gezegd wordt als dat het een methode is waarbij het besturingssysteem los wordt gekoppeld van de fysieke hardware. Eigenlijk vind ik dat een wat beroerde omschrijving waar je niets wijzer van wordt. In de Install & Configure Training van VMWare omschrijft men het met:

Virtualisatie is een techniek waarbij hardware wordt gebouwd in software


Eigenlijk zou je het kunnen vergelijken met het onder Linux bekende Wine project: je gaat niet Windows emuleren onder Linux, maar je gaat de Windows API implementeren in 'user-space'. Met virtualisatie gebeurd iets soortgelijks: in een speciale laag, die we een hypervisor noemen, wordt hardware opgebouwd, geimplementeerd in software. Wellicht is dit nog steeds erg cryptisch, maar het is erg werkbaar als definitie dat wordt wel duidelijker bij "de voordelen van virtualisatie".

Bovenop de in software gevormde hardware die we ook wel VMM (Virtual Machine Monitor) noemen komt de VM (Virtuele Machine) met daarbinnen je besturingssysteem.
Het grote verschil met emulatie zit voornamelijk in de processor: die wordt niet geemuleerd, gesimuleerd etc. Als je binnen je virtuele machine gaat kijken zie je dan ook gewoon alle eigenschappen van de fysieke cpu. Emulatie/Simulatie is dan ook een stuk trager.

Voordeel 1: Isolatie
Je kunt meerdere van die setjes hardware gaan bouwen in je hypervisor, dus heb je meerdere van die VM's. Het aardige is dat al die VM's volledig gescheiden van elkaar draaien: als 1 VM crashed, dan blijft de andere gewoon draaien (tenzij je een onderliggend hardware probleem hebt), idem voor virussen etc.
Wellicht is dit ook een van de grote motoren achter virtualisatie geweest: want als je een heleboel applicaties op 1 fysieke machine installeert onder met name Windows, dan is de kans op stabiliteitsproblemen nogal groot, om nog maar te zwijgen over de beheerbaarheid. Dus was er al snel de situatie dat je een fysieke machine maar een paar taken liet doen, met als gevolg een niet zo erg effecient gebruik van de hardware.

Voordeel 2: Consolidatie
Dat brengt ons meteen bij het tweede voordeel: iets wat met een lastige term consolidatie genoemd wordt. In de normale fysieke wereld wordt er vaak uiterst inefficient gebruik gemaakt van de hardware om de al eerder genoemde redenen. Als een processor continue voor 10% gebruikt wordt is het veel. Virtualisatie laat het toe een heleboel VM's te draaien op 1 fysieke machine, zonder problemen, zodat de hardware een stuk optimaler gebruikt wordt. Dit scheelt een stuk in je stroomkosten om maar eens wat te noemen (Green IT...) en als bonus wordt de boel ook nog eens een stuk beheersbaarder.

Voordeel 3: Hardware onafhankelijk
Een groot nadeel van een fysieke machine is dat er bijna geen pc gelijk is, met een stortvloed van drivers als gevolg. Dat is lastig op het moment dat je een stuk hardware moet vervangen (bijvoorbeeld je netwerkkaart), en ook niet elke driver is even stabiel. Bij virtualisatie krijgt iedere VM een standaard setje hardware, en die is altijd dezelfde, ongeacht hoe je fysieke machine er uit ziet. Dus heb je een Broadcom Netwerkkaart in je server die je vervangt door een een Intel, dan maakt dat voor de virtuele machine niet uit !
Een andere term die hier vaak bij valt is: hardware independence: het is allemaal standaard (draait bijvoorbeeld op x86 platform), en de virtuele machines hoeven niet uitgerust te worden met dezelfde configuraties (hoeveelheden geheugen, wel of niet een seriele poort etc) uitgerust te worden, zolang het maar onderdeel uit maakt van het standaard setje hardware wat de hypervisor kan vormen.

Voordeel 4: Encapsulatie
Nog zo'n ingewikkelde term, maar het betekend niets meer of niets minder dan dat een VM bestaat uit een (standaard) setje bestanden. Dit zorgt er voor dat je allerlei handige extra mogelijkheden krijgt in kopieren, verplaatsen van bestanden, backup etc.

Extra Voordelen
Afhankelijk van het product waar je voor kiest krijg je nog allerlei extra voordelen. Bijvoorbeeld in het uitrollen van VM's, omgaan met resources (geheugen, processor, storage en netwerk), beheer, monitoring etc. En er zijn ook allerlei coole features zoals het verplaatsen van VM's van de ene fysieke server naar de andere, zonder dat iemand er iets van merkt... VMWare noemt dit proces VMotion.

Nadelen
Elk voordeel heeft zijn nadeel, en bij virutalisatie is dat voornamelijk het standaard setje hardware. Zo kan het gebeuren dat juist de hardware die je nodig hebt niet ondersteund wordt, bijvoorbeeld geen usb poort. Verdere nadelen zijn er nauwelijks: de meeste virtualisatie producten zijn inmiddels zo goed dat je vrijwel alles zonder probleem kunt virtualiseren.

Wat is een hypervisor
De taken van de hypervisor zijn:

Het aanbieden van standaard setje hardware

Het aanbrengen van de isolatie tussen hardware en software, met andere woorden: vanuit de VM is er nooit geen toegang tot de fysieke hardware

De controle over, het uitvoeren van alle taken over de core resources: cpu, memory, netwerk en storage. Hoewel sommige fabrikanten netwerk en storage op een andere manier afhandelen, maar daarover later meer.

Draaien van meerdere vm's geisoleerd naast elkaar


Met andere woorden: de hypervisor is de laag die virtualisatie mogelijk maakt.

Er zijn een tweetal types hypervisors.

Hypervisor type 1
Dit is een vorm die we ook wel bare-metal virtualisatie noemen. Deze laag bestaat uit een over het algemeen zeer kleine software laag, die de hypervisor is. Een soort mini besturingssysteem die de eerder beschreven taken voor z'n rekening neemt. Grote voordeel is dat deze vorm echt de volledige controle heeft over de hardware en er dus erg weinig overhead is: performance heel wat beter dan bij type 2. Daarnaast zorgt de controle er ook voor dat je veel meer kan doen aan finetunen, gave dingen kunt doen als het real-life migreren van VM's etc. Nadeel is dat deze laag erg klein is, en men dus maar een zeer beperkte hoeveelheid fysieke hardware kan ondersteunen. Ook hier is er uiteraard wel verschil tussen de diverse vendors. Dit nadeel geldt meestal ook voor de VM: dit type virtualisatie ondersteund meestal geen zaken als geluid en usb.
Bekende voorbeelden van dit type virtualisatie zijn VMWare ESX/ESXi en Citrix Xenserver, maar ook KVM (virtualisatie in de Linux kernel) behoort bij dit type virtualisatie.

Hypervisor type 2
Type 2 noemen we ook wel host-based virtualisatie, en de term duidt eigenlijk al wel aan wat dit precies inhoud: de hypervisor laag is een stukje software wat geinstalleerd wordt bovenop je bestaande besturingssyteem, bijvoorbeeld Linux. Dit zorgt natuurlijk wel voor een behoorlijk nadeel: dat OS vraagt zelf ook de nodige resources en je hebt ook niet voor volle 100% de controle over de core resources. Voordelen zijn er ook: jouw besturingssysteem heeft wel ondersteuning aan boord voor een gigantische hoeveelheid hardware, en dat betekent niet alleen dat je het op veel meer systemen kunt draaien maar ook binnen je VM krijg je meer mogelijkheden. Vaak is er ook een beperkte communicatie met het host-os mogelijk, bijvoorbeeld voor het delen van bestanden of printen.
Deze vorm van virtualisatie wordt vaak thuis gebruikt of in kleine bedrijven. Daarnaast is het ook een zeer dankbaar platform voor software ontwikkelaars. Voorbeelden van dit type virtualisatie zijn VMWare Player/Workstation en Server, Parallels Workstation en natuurlijk niet te vergeten VirtualBox.

Verschillen bij Bare-Metal Virtualisatie

Binnen de type 1 virtualisatie zijn er een paar verschillen in methodiek.

Bij VMWare ESX/ESXi draait alles in 'user-space', het guest-os weet in principe van niets en behalve dat het verstandig is om de VMWare Tools te installeren voor o.a. wat geoptimaliseerde drivers is het OS niet aangepast. (Dat het voor Linux guest-os-en ook anders kan laat ik nu even buiten beschouwing. De Hypervisor doet alle taken.

Bij Linux KVM wordt de Linux kernel zelf de hypervisor en aangezien deze Linux de core-resources al prima aan kan hoeft het niet veel meer te doen dan het setje hardware (via quemu) aan te bieden.

Bij XEN is het veel complexer: een tweetal zaken vallen hierbij op: het guest os moet aangepast worden (voor Linux een speciale kernel) of er moet gebruik gemaakt worden van paravirtualisatie in het geval van Windows. Het tweede wat opvalt is dat storage en netwerk afgehandeld wordt door een speciale soort virtuele machine die we domain0 noemen.


Het is een lastige discussie om uit te maken wat de beste methode is, in kleinere omgevingen zul je het verschil tussen ESX en XenServer nauwelijks merken, maar in grotere omgevingen blijkt XEN lastiger schaalbaaar te zijn en vormt storage vaak de bottleneck. KVM moet zich nog bewijzen in grotere omgevingen, dus daar kunnen we weinig over zeggen. De toekomst is ook slecht voorspelbaar, er gebeurd zoveel o.a. op processor gebied.. Daarnaast lijken beide vendors zich iets minder strikt aan de modellen te houden en hier en daar de voordelen van elkaars technologie overnemen.

WICT geeft voor zowel kleine als grotere omgevingen op dit moment de voorkeur aan VMware ESXi omdat dit systeem zich al langere tijd heeft bewezen in de markt. VMware is snel, stabiel en hoeft licentie technisch niet duur te zijn. De beginende gebruiker kan starten met een stabiele en snelle gratis omgeving en deze eventueel later altijd uitbreiden naar een betaalde omgeving met extra mogelijkheden. Als indicatie kunnen bijvoorbeeld op een Dell Poweredge 2970 server met 2 quadcore processoren en 32 GB geheugen en 3 x 450GB 15000 rpm UltraSCSI3 SAS schijven en dubbele netwerkkaart, bij gemiddeld gebruik prima 2 of 3 win2003 servers en 15 virtuele winXP werkstations met elk 1 GB geheugen draaien. Vergelijk deze hardware investering van ca. 5000 euro met kosten van de aanschaf van 3 "harde servers" (om maar niet te spreken van de investering voor de werkplekken)