Het analyseren welke servers goede virtualisatietargets maken kost veel werk. Daarnaast maakt een mix van fysiek en virtueel het beheer er niet minder complex om, met negatief effect op de OPEX.
In het artikel 'Acht tips voor virtualisatie' heb ik gereageerd op de tip 'virtualize all or nothing' van Wiebe Niehof. Ik mijn reactie gaf ik aan dat dit moeilijk te realiseren valt. Toch wil ik hier wat meer over kwijt.
We weten dat virtualisatie al behoorlijk lang bestaat, doch dat het x86 platform zich er niet voor leende. Dan praten we over de CPU-virtualisatie. VMware maakte het mogelijk door 'binary translation' (BT) toe te passen, wat we ook wel 'full virtualization' noemen. Een uitstekende methode waar het guest OS niet aangepast hoeft te worden. Nog steeds het meest toegepast, zeer flexibel, doch met veel performance vermindering. BT moet gebruikt worden als er privileged instructions worden gedaan (kernel mode) en sommige services doen dat regelmatig. Een bekend voorbeeld is bijvoorbeeld een Citrix-server. Ik ken dus SBC-partijen die ronduit weigeren een Citrix-server te virtualiseren, of dat in ieder geval nadrukkelijk afraden.
Een al bestaande oplossing voor het BT-probleem is paravirtualisatie. Het guest OS is dan bewust dat het gevirtualiseerd wordt. Helaas grijpt dat in in de guest OS-kernel, die dus moet worden aangepast. Gevolg: geen Windows dus (!), meerdere verschillende (Linux) kernels onderhouden, niet flexibel, soms geen support. Definitief niet ideaal.
Gelukkig hebben de processorboeren niet stil gezeten en hebben die vervelende X86-processors aangepast. We hebben nu beschikbaarheid over hardware assist (een mainframe-techniek uit 1972!). Privileged instructions van het guest OS hoeven niet meer vertaald te worden. Deze 'first generation' hardware assist is een verbetering, maar zeker nog niet optimaal. Buiten dat geldt het alleen voor CPU-virtualisatie.
Dan is geheugenvirtualisatie ook een bottleneck. Het geeft veel overhead daar er meerder keren gemapped moet worden. Ook hier kunnen we zeggen dat een Citrix-server zich er niet zo lekker bij voelt.
En dan als laatste: I/O devices. Daar is er wel paravirtualisatie mogelijk door speciale drivers in het guest OS te laden zonder de kernel aan te passen (bijvoorbeeld met VMware-tools), maar het blijft software, dus toch overhead. Niet erg optimaal voor services met veel I/O (databases, fileservers, back-upservers). Ook de maximum hoeveelheid iops is beduidend lager als fysiek.
Al met al zijn er voldoende redenen om bepaalde servers niet te virtualiseren en blijf je dus met een complexere omgeving zitten dan wat je zou willen: deels fysiek (met bepaalde beheertooling) en deels virtueel (met weer andere beheertooling). En dat komt een heel belangrijke reden om te virtualiseren, verminderen van operationele kosten (OPEX), niet ten goede.
Hoe moet dat nu? Al onze ROI-berekeningen de prullenbak in? Gelukkig is 2009 (of toch 2010?) echt het jaar van virtualisatie: het wordt nu technisch écht volwassen! Intel- en AMD-processors en -chipsets zijn er al met mogelijkheden om hardware assist óók voor geheugen en I/O devices toe te passen. De hypervisor moet er wel mee overweg kunnen. Onder andere vSphere (ESX 4.0) kan dat en anderen zullen zeker ook niet achterblijven.
Er zal dus een moment komen dat we ons niet meer hoeven af te vragen of een server wel of niet een goed virtualisatie-target is en een tool als 'capacity planner' kan de prullenbak in. Maar dan blijven we nog met één vijand zitten: het verleden en mindere ervaringen met de eerdere virtualisatiegeneraties. Er zullen dan nog heel wat mensen overtuigd moeten worden dat we dan wél de 'virtualize all or nothing' kunnen gaan toepassen. En de meeste beslissers zijn géén techneuten maar management. Ik ben er al zat tegengekomen die keihard roepen: 'een Exchange-server gaan we écht niet en nooit niet virtualiseren'.
Link: www.vmware.com/files/pdf/VMware_paravirtualization.pdf
Paul Kramer Freher
Itee Idee
Hoi Paul,
Ik ben het helemaal met je eens. Technologisch zijn er steeds minder redenen om niet de “virtual or nothing” strategie aan te houden.
En de weerstand is de laatste jaren al flink afgenomen om business critical systemen te virtualiseren. Nu steeds meer blijkt dat de beschikbaarheid van virtuele servers hoger is (kan zijn) door HA en uitwijk oplossingen zal die nog verder dalen.
Goede toelichting van complexe materie!
“… Ik ken dus SBC-partijen die ronduit weigeren een Citrix-server te virtualiseren, of dat in ieder geval nadrukkelijk afraden”.
Als je naar de resultaten van Project: Virtual Reality Check kijkt is de conclusie dat Virtualisatie van Terminal Servers met VMware ESX, Citrix XenServer en Microsoft Hyper-V wel degelijk erg goed mogelijk is.
http://www.projectvrc.nl/
Ik ben het met Ruben tot op zekere hoogte eens. In de praktijk ben ik toch nog wel e.e.a. tegengekomen wat op ESX raar gedrag vertoonde, zoals bijv. session reliability. Maar de dag dat we BT kunnen omzeilen, zal er veel verbeteren. Ik doel echter meer op het feit dat het niet makkelijk zal zijn vele techneuten te overtuigen. Ik las pas een opinieartikel van de “hoofdtechneut” van ??n van die partijen en die was ook al ervan overtuigd dat het nu w?l kan. Gaat dus de goede kant op! Sommigen zullen het toch nog als risico blijven zien en het gewoon weg niet doen. Maar dat is toch met alle nieuwe dingen?