Hoe zou de wereld eruit zien zonder hardware-virtualisatie? Dus zonder producten als VMware ESX, Microsoft Hyper-V, Citrix XenServer en Oracle VM. De gemiddelde computergebruiker zal denken: 'so what?'
Hij of zij produceert immers nog precies dezelfde software als toen virtualisatie nog nauwelijks werd gebruikt. En daar zit 'm nou net de kneep. Zonder hardware-virtualisatie waren we al lang gedwongen geweest om applicaties parallel te ontwerpen. Immers, al vanaf 2003 neemt de snelheid van processorchips niet meer toe volgens de wet van Moore. Die wet zelf is nog wel steeds geldig: elke twee jaar een verdubbeling van het aantal transistors op een chip.
Dit komt echter niet meer ten goede aan de kloksnelheid. Die plaats is ingenomen door multicore-technologie. Dus elke twee jaar een verdubbeling van het aantal cores op een chip. De norm van vandaag is ongeveer vier. Dat wil zeggen, een processorchip gedraagt zich als vier zelfstandige processors. In 2011 zal de norm dus zo'n 8 zijn, in 2013 al 16, enzovoort. Als je bedenkt dat de gemiddelde server zelf ook al meerdere processorchips bevat, dan blijkt dat hardware-virtualisatie eigenlijk een geluk bij een ongeluk is.
Eindig pad
Het 'ongeluk' is dat Moore niet meer geldt voor de snelheid van een chip. Het 'geluk' is dat we de structuur van onze software nog steeds niet hebben hoeven aanpassen aan parallelle verwerking binnen chips. De hypervisor van de hardware-virtualisatie zorgt er immers wel voor dat zo'n chip zich gedraagt als meerdere zelfstandige servers. En meerdere servers kunnen we in het datacenter van vandaag goed gebruiken. Maar ook dat is een eindig pad.
Uiteindelijk ontkomen we er niet aan om applicaties zelf parallel te structureren. Sommige programmeertalen maken dat al mogelijk. Ook overkoepelende concepten als Google's MapReduce kunnen hier en daar uitkomst bieden. Echter, waar tot nu toe de hardware voor spectaculaire vorderingen zorgde zal dat stokje toch binnenkort overgenomen moeten worden door de software. En een slimme meid is op haar toekomst voorbereid…
Hardware-virtualisatie een geluk bij een ongeluk?
Als je mij vraagt niet. Het is eerder een logisch gevolg.
Om te beginnen zijn virtuele machines precies wat het woord zegt, een machine, bijvoorbeeld een x86, gevirtualiseerd.
Een emulator dus.
Het idee van zo’n emulator is niet nieuw maar het is sinds een aantal jaar pas mogelijk om meerdere emulatoren gelijktijdig op een machine te draaien.
Virtualisatie hebben we mijn inziens te danken aan de komst van de 64bit x86 processoren.
@patchman, Het is al 41 jaar mogelijk. Dus ook al veel langer dan dat de 80×86 reeks van Intel bestaat. De technieken die IBM al meer dan 40 jaar toepast in het mainframe, en dan meer precies in (z)VM, zijn pas in de laatste 10 jaar mondjesmaat doorgedrongen in de x86 wereld. De hypervisor die nu zo wordt gehyped bestaat daar ook al jaren.
“Zonder hardware-virtualisatie waren we al lang gedwongen geweest om applicaties parallel te ontwerpen.”
Niet echt. Dit geldt als je applicaties 1-op-1 op dedicated servers laat draaien. Om dan goed gebruik te maken van meerdere cores moet je parallel processing bezitten. (wat is daar mis mee overigens?) Maar in een serveromgeving (en zelfs in de desktop) tellen meerdere factoren. Bijvoorbeeld hoeveel gebruikers parallel kunnen werken. Of hoeveel verschillende applicaties het OS naast elkaar kan laten draaien. Of hoeveel instances van dezelfde applicatie natuurlijk (aantal parallele processen in een webserver bijvoorbeeld). En inderdaad, een virtuele machine mag je dan natuurlijk ook als een losse applicatie beschouwen die door het OS wordt gehost in je hardware.
Men spreekt over virtualisatie, maar als je echt onder de motorkap kijkt, zie je een hypervisor met een “gemodificeerd” OS erop. Echte virtualisatie is (verbazingwekkend?) alleen beschikbaar op IBM mainframe. Je draait virtualisator z/VM ongemodificeerd onder z/VM en verder uiteraard. Let wel dat ook de eerste z/VM verplicht draait onder de hardware virtualisator PR/SM.
Linux/Xen of VMWare kan je niet draaien onder Xen of VMWare. Daar is (wederom verbazingwekkend?) nog een lange weg te gaan.
@Berry, Ok, je hebt gelijk. Ik ben zelf van de x86 generatie en heb dan ook nog nooit een IBM mainframe in het echt gezien.Ik heb alleen stapels x86 servers en een aantal Aplha-servers gezien.Als je dan voor iedere service, dienst of applicatie weer een server optuigt dan is z’n ESX-server geen gek idee, maar waarom wordt er voor iedere VW dan meteen een compleet server OS gebruikt? Ik heb het dan natuurlijk over Windows en naar mijn idee is ESX de pleister op de Windows gebreken.
Dan mis je wel wat want het zijn zulke mooie systemen :-).
Vanuit de PC systemen bekeken, die zijn niet gewend om virtueel te draaien. Dat betekent dat je een compleet OS moet hebben om het systeem te kunnen draaien. En ook is het lastig(er) om er onderdelen uit te halen. Enerzijds omdat de diverse componenten veelal in elkaar verweven is maar ook omdat het uitzoeken wat wel of niet nodig is erg gecompliceerd is. Met name de grafische omgeving, een pluspunt voor het succes van de omgevingen, maakt ook dat de omgevingen veel gecompliceerder zijn.
Vanuit VM bekeken. Wij hebben een installatie omgeving waarbij we 1 klein diskje (2.3G) kopieren om een nieuw VM te bouwen. Dit is dan geen ‘compleet’ systeem maar alleen datgene van de coding wat we ook echt nodig hebben. Vergelijk het met een linux zonder de hele yast/rpm-omgeving (of hoe je het noemt op een niet-suse linux) en met alleen die pakketten die je op de betreffende omgeving nodig hebt. Erg simpel om te klonen en zeer flexibel. Maar ook het complete systeem is eenvoudig te klonen.
De mainframe OS-sen (zVM, zVSE, zOS en de respectievelijke voorlopers) zijn traditioneel volledig ingericht om virtueel te kunnen draaien, juist omdat dat ook al jaren wordt gedaan. De PC wereld (en dan reken ik de unix-en daar voor het gemak dan ook even onder) heeft altijd de beschikking gehad over goedkope dedicated servers en daardoor is bij ontwikkeling geen aandacht geweest voor virtualisatie issues. Het kostte al aardig wat moeite om de eerste linux voor mainframe aan te passen aan de eisen van virtualisatie.
Een laatste punt zit ook tussen de oren. Het vereist een andere mindset om virtueel te draaien. Wat dedicated goed werkt is niet altijd verstandig in een virtuele omgeving.