Servervirtualisierung: So findet man den optimalen Hypervisor

Nicht jeder Hypervisor kann alle Betriebssysteme mit hoher Leistung betreiben. ZDNet hat Hyper-V, KVM, VMware und Xen auf den Prüfstand gestellt und zeigt, in welchen Szenarien sie ihre Stärken und Schwächen haben.

In den Rechenzentren mittelständischer und großer Unternehmen setzen immer mehr IT-Leiter auf Virtualisierung. Mit moderner Virtualisierungstechnologie lassen sich heute Geschwindigkeiten von etwa 93 Prozent einer sogenannten Bare-Metal-Installation erzielen, bei der das Betriebssystem direkt auf der Hardware läuft und nicht als Gastbetriebssystem unter einem Hypervisor.

Bei der Geschwindigkeit ist nicht so sehr die CPU-Leistung entscheidend. Mit modernen CPUs, die Hardwarevirtualisierungsunterstützung bieten, lassen sich unter Normalbedingungen über 99 Prozent der Bare-Metal-Geschwindigkeit erzielen. In der Servervirtualisierung zählt vor allem dem I/O-Leistung. Wenn diese nicht annähernd so hoch ist wie in er nicht virtualisierten Umgebung, steigen die Kosten für zusätzliche oder leistungsstärkere Hardware.

In einer vollvirtualisierten Umgebung, bei der ein Betriebssystem unmodifiziert unter einem Hypervisor gestartet wird, ist die I/O-Leistung grundsätzlich unzureichend und erreicht teilweise nur etwa 30 Prozent der Bare-Metal-Leistung. Das liegt daran, dass das Gastbetriebssystem für I/O nur echte Hardwaretreiber benutzt. Damit diese funktionieren, muss der Hypervisor I/O-Befehle für Netzwerkkarten, Festplatten- und Fibre-Channel-Controller abfangen und softwaremäßig emulieren. Das führt zu gravierenden Leistungsverlusten.

Nahezu jeder Hypervisor bietet daher für gängige Betriebssysteme eigene paravirtuelle Treiber. Diese Treiber werden anstelle der Hardwaretreiber ins Gastbetriebssystem geladen und agieren direkt mit dem Hypervisor. So lässt sich die Geschwindigkeit erheblich steigern.

Trotz installierter paravirtueller Treiber bezeichnet man solche Lösungen nach wie vor als Vollvirtualisierung. Ein Gastbetriebssystem, das man als paravirtuell bezeichnet, besitzt weitere Schnittstellen mit dem Hypervisor. Das sind vor allem folgende:

  • gemeinsame Speicherverwaltung der Gastbetriebssysteme über den Hypervisor
  • Durchreichen von PCI-Hardware an Gastmaschinen
  • optimiertes Prozessscheduling zwischen Gastbetriebssystemen

Die gemeinsame Speicherverwaltung bildet die Voraussetzung, dass Hauptspeicherressourcen auf der Hardware nicht verschwendet werden. Jedes Gastbetriebssystem fordert dabei nur so viel Speicher an, wie es benötigt.

Fehlt eine solche gemeinsame Nutzung, muss für jede Gastmaschine eine feste Menge Hauptspeicher festgelegt werden, beispielsweise 4 GByte. Um drei Gastbetriebssysteme sicher und performant zu betreiben, benötigt die Hardware 12 GByte Hauptspeicher, der auch als virtueller Speicher mit Swapping realisiert werden kann. Sobald Swapping tatsächlich zum Einsatz kommt, sinkt die Performance des Gesamtsystems jedoch dramatisch.

Eine gemeinsame Speicherverwaltung zwischen den Gastmaschinen führt dazu, dass man mehr Gastmaschinen auf derselben Hardware betreiben kann. Idealerweise weiß dabei das Gastsystem, wenn die gemeinsamen Speicherressourcen einmal knapp werden und kann von sich aus Maßnahmen ergreifen. Voraussetzung, um mehr virtuelle Maschinen auf einer Hardware zu betreiben, ist jedoch, dass man die Hauptspeichernutzung kontinuierlich überwacht und auch für Spitzenzeiten Reserven hat.

Ähnliche Überlegungen gibt es beim optimierten Prozessscheduling zwischen Gästen. Wenn das Gastbetriebssytem dem Hypervisor jederzeit mitteilen kann, wann es in den Leerlauf geht, können andere Gastmaschinen die CPU-Ressourcen nutzen. Durch paravirtualisierte Treiber, die dem Hypervisor mitteilen, dass ein Prozess auf Netz- oder Platten-I/O wartet, lässt sich das nicht vollständig abbilden. Ein Prozess, der angewiesen wird, 500 Millisekunden zu "schlafen", sollte dies dem Hypervisor über seinen Gastkernel ebenfalls mitteilen. Nur so kann die CPU-Leistung optimal verteilt werden.

Sehr wichtig ist die Zuweisung von PCI-Geräten an Gastmaschinen, wobei mit PCI immer auch das auf der Softwareebene kompatible PCI-Express gemeint ist. So lassen sich PCI-Geräte, etwa eine Faxkarte, an eine Gastmaschine dedizieren. Standard-PCI-Karten können nur an eine Maschine, entweder den Host oder eine Gastmaschine gegeben werden.

Darüber hinaus existieren speziell virtualisierungsfähige PCI-Karten, die mehrere I/O- und Memory-Bereiche sowie mehrere PCI-Interrupts besitzen. In diesem Fall kann eine Karte, die auch im Chipsatz integriert sein kann, an mehrere Maschinen übergeben werden. Im Fall einer Ethernet-Karte mit einem physikalischen LAN-Port bedeutet das beispielsweise, dass dieser Port von mehreren Gastmaschinen direkt genutzt werden kann, ohne den Hypervisor zu belasten. Er muss lediglich die Interrupts an die Gastmaschinen verteilen.

Jede Gastmaschine erhält eine eigene MAC-Adresse und mindestens einen eigenen logischen LAN-Port. Dasselbe Prinzip gilt entsprechend für Fibre-Channel-Karten zum Zugriff auf SAN-Systeme. Wer also seine Server virtualisiert betreiben möchte, muss sich nicht nur für den richtigen Hypervisor, sondern auch für die richtige Hardware, vor allem bei Chipsatz und PCI-Karten entscheiden. Dass die CPU Virtualisierungsunterstützung bietet, reicht alleine nicht aus. Das berühmte grüne Häkchen hinter Hardwarevirtualisierungsunterstützung in Hochglanzbroschüren sagt praktisch nichts aus.

Hypervisor muss Features auch nutzen können

Nicht jeder Hypervisor kann heute jedes Gastbetriebssystem und jede Hardware optimal unterstützen. Manche Hypervisor sind daher realistisch gesehen nur für Linux oder Windows als Gast optimiert, nicht aber für beide OS.

Xen

Vorreiter bei der Paravirtualisierung ist Xen, das diese Technologie unter Linux optimal unterstützt und heute maßgeblich von Citrix weiterentwickelt wird. Um in den vollen Genuss der Paravirtualisierung mit allen Geschwindigkeitsvorteilen zu kommen, muss man allerdings einen speziellen Xen-Kernel verwenden.

Alle großen Linux-Distributionen bieten einen solchen Kernel alternativ zum Standard-Kernel bereits an. Mit einem Xen-Kernel läuft Linux als Gastbetriebssystem nahezu mit derselben Geschwindigkeit wie auf Bare-Metal. Grundsätzlich ist ab Kernel 2.6.23 auch im Standard-Kernel eine Xen-Unterstützung integriert. Zahlreiche Features, etwa das Durchreichen von PCI-Geräten und dynamische Speicherverwaltung zwischen Gästen, sind aber nicht implementiert. Xen-Gäste werden daher fast immer mit einem speziellen Kernel betrieben.

Nachteil bei Xen ist die unzureichende Unterstützung von Windows. An der Universität Cambridge wurde ein Projekt zur Portierung des Windows-XP-Kernels auf Xen gestartet. Es wurde aber nie kommerziell freigegeben. Zudem mussten sich die Forscher Microsoft gegenüber verpflichten, keine Details preiszugeben.

Für aktuelle Windows-Version sind lediglich paravirtualisierte Netz- und Festplatten-Treiber verfügbar, etwa die von James Harper vom XenSource-Projekt. Sie sind darüber hinaus auch noch experimentell und nicht für den Produktiveinsatz geeignet. Vollständige Paravirtualisierungsunterstützung für Windows gibt es bei Xen nicht.

Hyper-V

Genau andersherum verhält es sich mit Microsofts Virtualisierungslösung Hyper-V. Sie läuft unter Windows 2008 sowie 2008 R2 und vor allem Windows-Gastbetriebssysteme mit optimaler Performance betreiben.

Windows Gäste haben volle Treiberunterstüzung und können Speicher direkt aus dem Hypervisor beziehen. Auch das Prozessscheduling ist optimiert. Wer Windows unter Hyper-V betreibt, bemerkt sowohl in Benchmarks als auch bei der gefühlten Bediengeschwindigkeit nahezu keinen Unterschied gegenüber der Host-Maschine.

Was Linux-Gäste angeht, ist die sogenannte "Coopetition", ein Kofferwort aus Cooperation und Competition, mit Suse (vormals Novell), bemerkenswert. Wer Suse Linux Enterprise Server (SLES) ab Version 10 SP2 einsetzt, kommt unter Hyper-V in den Genuss der Paravirtualisierung mit zahlreichen Geschwindigkeitsvorteilen. So schnell wie unter Xen läuft SLES mit Hyper-V allerdings nicht.

Andere Linux-Varianten, etwa Red Hat Enterprise Linux, werden nicht unterstützt. Das Problem hierbei ist, dass sich die Marktanteile bei kostenpflichtigen Enterprise-Linux-Versionen immer mehr in Richtung Red Hat verschieben. In den USA ist der Marktanteil von SLES noch geringer als in Europa.

Kostenlose Serverdistributionen, die häufig auch als Server eingesetzt werden, beispielsweise CentOS, debian oder Ubuntu Server, werden von Hyper-V nicht paravirtualisiert unterstützt.

VMware vSphere

VMware vSphere (vormals VMware ESXi) ist der Hypervisor der Wahl, wenn man einen Mittelweg zwischen guter paravirtualisierter Unterstützung von Windows und Linux benötigt. Der Marktführer unterstützt beide Betriebssysteme als Gast mit paravirtuellen Treibern.

Allerdings gibt es Einschränkungen: Um etwa den paravirtuellen SCSI-Treiber zu benutzen, der laut VMware 12 Prozent mehr Leistung bietet als ein emulierter LSI Logic Controller, muss man ein Betriebssystem verwenden, das die PVSCSI-Schnittstelle unterstützt. Dazu zählen Windows ab 2008 sowie Red Hat Linux ab Version 5, SLES ab Version 11 SP1, Ubuntu ab 10.04 und jedes Linux-Betriebssystem ab Kernel 2.6.33, sofern der vmw_pvscsi Driver mitgeliefert wird.

Die Netzwerktreiber von VMware sind für alle Betriebssyteme paravirtuell. Sie bieten eine zufriedenstellende bis gute I/O-Leistung.

Bei der Speicherverwaltung geht VMware einen eigenen Weg. Physischer Hauptspeicher wird einer Gastmaschine nur dann zur Verfügung gestellt, wenn sie tatsächlich auf ihn zugreift. So wird eine dynamische Hauptspeicherverwaltung über den Hypervisor erreicht, ohne dass das Gastbetriebssystem das explizit unterstützen muss. Das ist fast so schnell wie Hauptspeicheranforderung über Hypervisor-Calls.

Schwierig wird es allerdings, wenn ein Prozess Speicher wieder freigibt. Das wird nicht in jedem Fall und vor allem nicht sofort erkannt. Gastmaschinen erhalten daher immer etwas mehr Hauptspeicher als sie tatsächlich benötigen.

Generell gilt aber: Wer Linux- und Windows-Gäste auf derselben Hardware betreiben möchte, hat eigentlich keine Alternative zu VMware, zumindest nicht, wenn man die Performance isoliert betrachtet.

KVM

KVM ist ein hauptsächlich von Red Hat entwickelter Hypervisor, der sowohl Voll- als auch Paravirtualisierung unterstützt. Aber auch andere Firmen, etwa IBM, beteiligen sich an der Entwicklung. Auf der Homepage wird KVM als "a Red Hat emerging technology" also "sich entwickelnde Technologie" bezeichnet.

KVM ist für Red Hat ein strategisch wichtiges Produkt und ersetzt in RHEL 6 die Xen-Technologien. Offensichtlich hat Red Hat und einigen anderen Linux-Playern die Citrix-Dominanz bei Xen nicht gefallen, so dass man ein eigenes System entwickelt hat.

Wer allerdings Paravirtualisierung in seinen Gästen einigermaßen gut unterstützen möchte, muss sehr viel in Textdateien konfigurieren. Bei der der Windows-Unterstützung ist das Projekt noch nicht so weit: Von paravirtuellen Festplatten lassen sich bisher nur Windows XP und Server 2003 starten. Windows Server 2008 und 2008 R2 haben noch keine stabile virtio-Unterstützung für Netzwerk und Platten.

Nahezu alle Virtualisierungshersteller bieten ihren reinen Hypervisor kostenlos an. Kostenpflichtig sind Enterpriseverwaltungstools und Advanced Features wie Live Migration. Allerdings gibt es überall ein minimales Benutzerinterface, so dass man auch ohne Editieren von Config-Files auskommt. Bei KVM ist das derzeit noch anders. Wer Paravirtualisierung oder Netzwerkunterstützung benötigt, muss Konfigurationsdateien ändern und mit Shell-Befehlen arbeiten.

Wer KVM nutzen möchte, kommt ohne die kostenpflichtige Red Hat Enterprise Virtualization derzeit nicht weit. Hier ist von Red Hat oder der Entwickler-Community noch einiges zu tun. Technisch hat KVM aber ein großes Potenzial. Es ist ein äußerst schlanker und moderner Hypervisor. Es bleibt abzuwarten, was Red Hat daraus macht.

Fazit

Wer seine Server virtualisieren möchte, sollte vorher gut über den Hypervisor nachdenken. Nicht jeder Hypervisor bietet in jedem Szenario die optimale Performance. Insbesondere hängt es davon ab, welches Gastbetriebssystem man hauptsächlich betreiben möchte.

Wer bei seiner IT-Infrastruktur auf Windows baut, erhält mit Hyper-V die beste Performance und Ressourcenausnutzung. Wer nahezu ausschließlich Linux-Server einsetzt, kann von der Geschwindigkeit von Xen profitieren.

Sehr große Unternehmen, die sowohl Windows als auch Linux einsetzen, sollten darüber nachdenken, mehrere Hypervisor einzusetzen. So macht es beispielsweise Amazon mit seinem Clouddienst EC2: Windows-Gäste laufen unter Hyper-V und Linux-Gäste unter Xen. Hilfreich ist dabei natürlich ein Management-System, das mit mehreren Hypervisor zurecht kommt.

Neben der Geschwindigkeit gibt es zahlreiche andere Faktoren, etwa welches Management-System sich bereits in bestehende Lösungen integriert, so dass die gesamte Unternehmens-IT handhabbar bleibt und nicht zu stark fragmentiert. Diese Fragestellungen gehen aber über den Umfang dieses Artikels hinaus.

Neueste Kommentare 

2 Kommentare zu Servervirtualisierung: So findet man den optimalen Hypervisor

  • Am 18. November 2012 um 17:40 von Philipp

    Hallo zusammen,

    ich habe versucht, einen aktuellen Vergleich der Hypervisor-Produkte von Microsoft, VMware und Citrix vorzunehmen. Das Ergbenis kann auf meiner Internetseite bewundert werden, wird ständig aktualisiert und ist als PDF und Excel-Dokument verfügbar.

    http://ccpowered.de/hypervisor-vergleich/

    Viele Grüße,

    Philipp

  • Am 28. Januar 2014 um 17:14 von tikka.massala

    Dieser Artikel ist aus dem Jahr 2011. Ich würde es sehr begrüßen, wenn dieser Artikel aktualisiert würde, da wir gerade vor genau dieser Entscheidung stehen.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *