Forskjellen på VMware og Xen

Det kom et godt spørsmål i forumet som jeg tenkte var verdt å besvare på forsiden: Hva er egentlig forskjellen på VMware og Xen? VMware er et kommersielt produkt som har eksistert i mange år og som nå har blitt gratis. Kort fortalt er jeg av den oppfatning at produsenten er klar over at teknologien deres snart vil være avleggs, og dette er et siste forsøk på å kapre kunder og vedlikeholdskontrakter. Fordi programvaren er relativt moden, og mange oppgaver i dag ikke trenger all den datakraften som er tilgjengelig, kan de lykkes med nettopp dette i flere år framover. Xen er relativt umoden teknologi, som Red Hat liker å påpeke, og XenSource har foreløpig ikke lansert et eneste ferdig produkt. Men det kommer neste uke.

På den tekniske siden bruker Xen noe som kalles paravirtualisering, mens VMware fungere mere som en emulator med dynamisk omskriving av minne. For å forklare forskjellen trenger man bittelitt bakgrunn i moderne operativsystemer, og jeg kommer bare til å gi litt forenklet fakta med Linux som eksempel.

  • Linux kjernen (kernelen) er en supervisor.
  • CPUen eksekverer enten i supervisor modus eller i "vanlig" modus. Kun i supervisor modus er det mulig å snakke direkte med maskinvare.
  • Programmer kan ikke snakke direkte med maskinvare eller tildele seg selv minne, men må be supervisor om å gjøre det og gi dem resultatet. Slike forespørsler kalles "system calls" og håndteres spesielt av maskinvaren, ved at den automatisk bytter til å eksekvere supervisoren.
  • Å kjøre flere programmer samtidig betyr egentlig å kjøre ett og ett program av gangen, med supervisor mellom hvert bytte.

Utfordringen er at når man kjører et operativsystem så forventer det å kunne snakke med maskinvaren direkte, noe det ikke kan hvis det ble startet som et vanlig program, altså ikke som supervisor. Hvis man prøver på å gjøre dette fører det til en såkalt "exception", og maskinvaren vil automatisk kalle på supervisor som terminerer det aktuelle programmet for å sikre at maskinen ikke kræsjer.

Si at du ønsker å kjøre en vanlig versjon av Slackware på toppen av Debian. Begynnelsen av "programmet" Slackware vil være å laste Linux, som i tur og orden vil sette opp maskinvaren og tildele seg selv minne. Men her stopper det med en gang, for Slackware har ikke lov til å konfigurere eller tildele noe som helst i "vanlig" modus.

VMware
VMWare leser koden som skal lastes inn i minne på forhånd. Når den ser et sted der Slackware vil allokere minne så skriver den det om til en forespørsel til VMware koden om å etterspørre mere minne. VMware koden er tilpasset Debian og vet hvordan det skal spørre supervisor (Debian) om å få allokert mere minne. Tilsvarende, når VMware ser kode i Slackware som prøver å snakke direkte til PCI-busen, eksempelvis for å se hvilke nettverkskort som er tilgjengelige, blir dette skrevet om til en annen forespørsel til VMware sin kode. Siden dette gjøres før koden eksekveres lever Slackware i sin egen verden, og merker aldri at det ikke noensinne sender forespørsler til den egentlige maskinvaren. Ved å installere spesielle drivere i gjest-operativsystemet (Slackware) kan VMware i tillegg redusere behovet for slik omskriving.

Fordelen med VMware er at den ikke krever noen tilpasninger av Slackware, eller andre operativsystemer det skal kjøre. Programmet blir skrevet om etterhvert som det eksekveres. På grunn av abstraksjonsnivået er det heller ikke noe i veien for å flytte virtuelle maskiner mellom to fysiske PCer med forskjellig maskinvare. VMware fungerer som en vanlig applikasjon, som ikke bryr seg om hvordan nettverskort du har så lenge operativsystemet sier en nettverksforbindelse er til stede. Et lite unntak er 64 bits gjest-operativsystem, som krever at man har et 64 bits verts-operativsystem.

Ulempen i forhold til en vanlig emulator er at du ikke kan emulere en annen CPU, du kan f.eks. ikke kjøre kode skrevet for PowerPC på en x86 i VMware. VMware er mye raskere enn en slik emulator, men det å kontinuerlig skrive om minne krever også en del CPU tid. I tillegg er det kostbart at alle forespørsler går via koden til VMware før den når maskinvaren. Ytelsestap på mellom 10 og 50 % er ikke uvanlig, men kan ofte aksepteres fordi få maskiner bruker mer enn 5% av den tilgjengelige kraften over tid.

Xen
Xen har en annen tilnærming til den nevnte problemstillingen. Ideen er at man skal gi de forskjellige operativsystemene så direkte tilgang til maskinvaren som mulig for å minimalisere ytelsestap. Samtidig er sikkerhet viktig, to virtuelle maskiner skal ikke kunne ødelegge for hverandre. Dette fører til at man fortsatt må ha en øverste supervisor, også kalt en hypervisor. Det operativsystemet som startes først, og som kjører Xen, er nettopp dette.

Hvis man kjører Xen på vanlig maskinvare i dag så må man bruke spesialtilpassede versjoner av gjest-operativsystemene. I det eksempelet jeg brukte for VMware betyr det at Debian må bruke en versjon av Linux som har støtte for Xen, og Slackware må bruke en versjon av Linux som ber om Xen sin oppmerksomhet der det ellers ville ha forespurt maskinvaren direkte. Siden det ikke finnes noen tilpasset versjon av Windows, eller mange andre operativsystemer, er det derfor per i dag ikke mulig å kjøre disse under Xen.

Dette vil forandre seg når Intel og AMD lanserer prosessorer med maskinvare som støtter virtualisering, som ventes å skje relativt snart. Det kan forøvrig allerede være bygget inn i enkelte modeller som er på markedet i dag, uten at dette har blitt dokumentert. Man må huske at produsentene er godt tjent med at bedrifter kjøper en dedikert maskin til hvert formål.

Når prosessoren støtter virtualisering vil det finnes flere modus enn i dag. Jeg er ikke oppdatert på terminologien på dette området, men trikset er at man introduserer en falsk supervisor modus. Denne vil, for eksempel, la Slackware snakke med maskinvaren direkte når dette er mulig, og be Xen om hjelp når det kreves. Fordelen med dette er at det er transparent for Slackware, som tror at den kjører på ekte maskinvare. Dette fører også til at man kan bruke operativsystemer som ikke har blitt tilpasset, eksempelvis Windows.

Den store bonusen, i forhold til VMware og emulatorer, er at mesteparten av maskinvaren brukes direkte. Dette gir tilnærmet lik ytelse som om man kjørte systemet direkte på maskinvaren, uten virtualisering. Flere tester har vist svært god responstid og at ytelsen sjelden blir redusert med mer enn 5%.

En ulempe er at man igjen blir maskinvareavhengig, så hvis man skal overføre den virtuelle maskinen til en annen datamaskin så vil denne måtte ha de samme komponentene. Til gjengjeld har XenSource utviklet en del kjekke funksjoner. Blandt annet er det mulig å flytte et helt operativsystem som noen spiller Quake 4 på fra en fysisk maskin til en annen, over gigabit ethernet, uten at spilleren merker noe som helst. Systemet bruker en inkrementell strategi som gjør at mesteparten av systemet flyttes på forhånd, og at kun akkurat den delen av minnet som eksekveres må flyttes i siste liten.

Dette høres kanskje litt unødvendig ut, men hvis man kjører forretningskritiske applikasjoner kan det være uaktuelt å stoppe hele operativsystemet for å flytte det, slik man må på VMware.

Med andre ord har VMware per i dag en rekke fordeler på de fleste bruksområder, men disse vil fort forsvinne ettersom Xen får mere fartstid og maskinvaren får støtte for virtualisering.

Valg for kommentarvisning

Velg din foretrukket måte å vise kommentarer på og klikk på "Lagre innstillinger" for å aktivere endringene.

nc

Takk for en fin artikkel :-)

sturla

Godt skrevet og med masse informasjon som bygger opp om temaet. Veldig bra.

Jeg skulle ønske det var flere her inne som kunne tenke seg å skrive slike artikler som dette. Det er mange folk her inne som har stor kunnskap å dele.

Stort sett linker vi til artikler annet sted på nettet. For min egen del handler det selvfølgelig om at min kompetanse skorter med tanke på det å skrive artikler som dette. Men flere her inne sitter som nevnt med mye kunnskap og kunne fint laget artikler selv, i stedet for bare å henvise til andre sine artikler ellers på nettet. (Jeg sier ikke at dette ikke må gjøres. Jeg sier bare at en ikke bare skal gjøre dette, men kanskje våge å produsere noe eget. Dette gjelder også meg selv, så det er sakt).

Jeg tror Linux1 kunne han tjent på det. Innholdet hadde således blitt litt mer "genuint" om dere skjønner. Derfor, all honør til ak!

:-)

xiglet

Kjempefin og oppklarende artikkel. Kanskje vi skal lage en link hit fra linuxguiden.no ? Slike ting danner mer trafikk.

Vil bare si at det er "vmware server" (linux eller windows) som har blitt gratis. Produktet dem satser på har et eget os i bunnen (basert på eldre versjon av redhat) og heter vmware infrastructure 3. Denne koster ca 30.000.

Man kan også flytte virtuelle servere fra box til box uten at brukerene merker noe, men da trenger du virtual server i tillegg til vmware infrastructure. Prislapp: ca 45.000.

AK, kanskje du også skulle nevne IBM Openpower?

datapeder

kan man boote iso filer med vmware? eller må det være på cd? noen som kan sende link til screenshot??
--------------------------------------------------------------------------------------

-Windows doesn't just crash - it opens a dialog box and lets you press OK first.

DotCom - The box said "Requires Windows or better." So I installed LINUX

ak

Ja, du kan montere og boote en ISO-fil. Det er den vanligste maaten aa installere ting paa.

ak

Jeg har desverre aldri hatt anledning til aa teste eller se paa koden til IBM OpenPower.

Saavidt jeg kan skjoenne dreier det seg om en maskinvarebasert loesning som ligger naermere Xen enn VMware, men jeg har ikke mere informasjon enn det som nevnes paa IBM sine salgssider, f.eks.
http://www-03.ibm.com/servers/uk/eserver/openpower/

Det maa gjerne linkes til denne artikkelen fra Linuxguiden. Jeg gir herved tillatelse til at akkurat denne artikkelen kan brukes under Creative Commons License og gjengis i sin helhet paa Linuxguiden.no (og andre steder), men en tydelig kildehenvisning hadde vaert hyggelig.

terjejh

Aktuell artikkel som også inneholder noen elementer og eksemplifiseringer jeg ikke har lest før. At Xensource nå releaser sitt Enterprise produkt og at Novell SuSE Linux Enterprise 10 allerede inkluderer Xen, gjør teknologien lettere tilgjengelig og brukervennlig for flere av oss, som ønsker å prøve ut Xen i praksis.

At ikke Vmware ifølge dem selv gir bedre ytelse med Intel-VT hardware støttet virtualisering, kan vel tolkes begge veier. Maskinvarestøttet virtualisering krever støtte i både CPU, brikkesett/hovedkort og BIOS, for å kunne kjøre en typisk umodifisert Windows gjest på Xen. XEN HVM (hardware virtual machine) støtter både Intel-VT og AMD-SVM (tidligere kalt Pacifica) CPUer.
http://wiki.xensource.com/xenwiki/XenIntro

Fra Intel synes mye av nyere hardware det siste året å være Intel VT-x kapabel, selv om dette ikke alltid har vært enabled i BIOS'en fra leverandørene. Denne Xen wikien er kanskje heller ikke oppdatert og komplettert mht maskinvare:
http://wiki.xensource.com/xenwiki/IntelVT

AMD SVM eller AMD-V er såvidt lansert ved CPU-soklene AM2 (desktop) og S1 (mobil) og DDR2 minnekontrollere.
http://www.amd.com/us-en/Corporate/VirtualPressRoom/0,,51_104_543~108605...
http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_14...

Noen flere linker om virtualisering:
http://www.hwb.no/feature/serverarkitektur/slik_fungerer_intels_virtuali...
http://www.hwb.no/feature/serverarkitektur/beste_x86-virtualisering_amd_...
http://lists.xensource.com/archives/html/xen-devel/2005-12/msg00543.html
http://www.linuxjournal.com/article/8909
http://www.devx.com/amd/Article/30186

Ogger

postitivt at de kommer flere "gratis" programmer for virtuelle maskiner .

ak

At VMware sine teknikker ikke har noe å tjene på maskinvarestøtte er helt i tråd med alt jeg har lært om den slags virtualisering. Jeg er litt forundret over at andre komponenter enn CPUen skal være involvert i virtualiseringen. Du kan selvfølgelig flytte memory-management ut i maskinvare, men det vil jo isåfall være en design-endring enten man snakker om virtualisering eller ikke, og ikke en nødvendighet.

Ogger

er det noen her som har testet vmware server å fått de til å funke ?

ak

Yap, helt uproblematisk både på Dapper og CentOS 4.3.

Eneste tips jeg har er at hos meg fikk jeg problemer med nettverket. Jeg gjorde en rekke ting, bl.a. fordi maskinen står på en managed switch som kan finne på mye rart, men jeg lurer på om løsningen var å avinstallere VMware tools, reboote den virtuelle maskinen, og så reinstallere de. Dersom du får problemer med tapte pakker osv.

  • Skriv ut artikkel
  • Abonner med RSS

Siste kommentarer