Så funkar det på Intelmaskiner

Intelservrar har växt upp med sina rötter i IBMs original-PC som främst var avsedd för ordbehandling. På grund av det och det stora antalet maskin- och kortleverantörer har Intelservrarna en mer komplicerad arkitektur än IBMs stordatorer. Främst är det den stora mängden styrkort för exempelvis skivminnen och nätverk som ställer till problem vid virtualisering.

Från och med Intels Pentiumprocessor finns ett visst stöd för virtuella maskiner inbyggt.

Funktionen som gör det hela möjligt sitter i två bitar i processorns statusregister: VIF (virtual interrupt enable, inte att förväxla med virtual image facility) och VIP (virtual interrupt pending). Tillsammans gör bitarna för virtuella avbrott att det »riktiga» operativet som kör direkt mot maskinvaran kan vidarebefordra data till enhetshanterarna i det virtualiserade operativsystemet.

Tidigare processorer i exempelvis 486-serien har inte dessa bitar och fungerar därför inte för virtuella operativsystem.

Emulering sinkar Intel

Men det räcker inte med virtuell avbrottshantering. En virtualiserad maskin måste också hantera när operativet försöker skriva direkt till fysiska enheter. Och det är här Intelservrar börjar förlora mot IBM stordatorer i Z- och 390-serien. Eftersom dessa maskiner har ett rent, genomtänkt gränssnitt som fungerar likadant för alla in- och utenheter oberoende av maskinvaran - kanal på IBM-språk - går de lättare att virtualisera effektivt.

På Intelservrar körs det virtuella operativsystemet med låg behörighet så att varje försök att direkt komma åt fysiska enheter såsom styrhenheten för skivminnet orsakar ett behörighetsfel. Det är sedan programvarans - VMware i det här fallet - uppgift att klura ut exakt vad operativet försökte göra, samt utföra det med programvara istället för den fysiska enheten.

Naturligtvis tar emulering av specifika funktioner i maskinvaran tid och för tillämpningar som kommunicerar mycket med maskinvaran leder det till prestandaförluster.

Ordentligt krångel

I VMware ESX har man optimerat detta genom att direkt koppla styrprogram för maskinvara såsom exempelvis skivminne till de virtuella maskinerna. I GSX, som kör ovanpå en vanlig Linux- eller Windows 2000-kärna, går alla anrop först via VMware och sedan via Linux innan de når maskinvaran.

ESX har alltså avsevärt bättre prestanda för skivminne och nätverk.

I GSX kör de virtuella maskinerna i en egen adressrymd, fristående från Linux vanliga rymd. Däremot används Linux vanliga funktioner för att hålla reda på det fysiska minnet. Det finns dessutom några extra moduler som hanterar Ethernet-emuleringen och skyfflar paketen mellan Linux och de virtuella maskinerna.

I ESX kör de virtuella maskinerna ovanpå VMwares egen kärna som fungerar som styrprogram. Ett virtuellt Linuxoperativ är alltid igång och används som systemkonsol och för att styra de andra virtuella maskinerna.

Låter det komplicerat? Helt rätt, det är det. Att VMwares lösning fungerar någorlunda väl imponerar desto mer.



Text : Ola Sigurdson

  (20010607)