Aus eins mach zehn:
Der Zauber der Virtualisierung

von Wolfgang Hennerbichler & Peter Marksteiner (Ausgabe 07/2, Juni 2007)

 

Du musst verstehn
Aus Eins mach Zehn

(J.W. Goethe: Faust I, Hexen-Einmaleins)


Virtualisierung - das neue Marketing-Buzzword der IT-Industrie ist in aller Munde. Doch was steckt dahinter? Welchen Nutzen bringt Virtualisierung? Was sind die Vor­aussetzungen für eine erfolgreiche Virtualisierung? Diese Fragen sollen hier beantwortet werden, wobei das Augen­merk vor allem auf der Virtualisierung von Intel-Servern liegt.

Virtualisierung bedeutet, kurz gesagt, dass ein physischer Rechner von mehreren Betriebssystemen gleichzeitig genutzt wird. Das können unterschiedliche Betriebssysteme sein (z.B. Windows und Linux), aber auch mehrere Instan­zen desselben Systems. Nach außen verhält sich jede solche Instanz - Virtual Machine (VM) genannt - wie ein kompletter Rechner. Im Idealfall sind die virtuellen Maschinen vollkommen unabhängig voneinander und von physischen Maschinen kaum zu unterscheiden.

Virtualisierung von PCs

Auf fast allen Arbeitsplatzrechnern ist als Betriebssystem eine Variante von Microsoft Windows, Linux oder Mac OS im Einsatz. Wenn nun jemand mehrere Betriebssysteme braucht, aber nur einen einzigen PC besitzt, hat er verschiedene Möglichkeiten:

  • Beim Dual-Boot-Verfahren werden zwei Systeme - meistens Windows und Linux - auf verschiedenen Parti­tionen der Festplatte installiert; beim Einschalten wird das gewünschte Betriebssystem gewählt. Der Nachteil dabei ist, dass immer nur eines der beiden Systeme ge­nutzt werden kann und jeder Wechsel einen Neustart erfordert.

  • Eine andere Methode besteht darin, mit Hilfe einer speziellen Software (Emulator genannt) ein fremdes System "nachzuahmen". Wird beispielsweise unter Windows ein Linux-Emulator1) gestartet, dann verhält sich der PC teilweise so, als wäre er ein Linux-Rechner - d.h. man kann das laufende Windows-System mit Linux-Werk­zeugen bedienen und Linux-Applikationen verwenden. Naturgemäß ist auch dieses Verfahren mit gewissen Ein­schränkungen verbunden.
  • Bei "echter" Virtualisierung, die ebenfalls mit Hilfe einer geeigneten Software gesteuert wird, stehen hingegen meh­rere vollwertige Betriebssysteme gleichzeitig zur Ver­fügung. Die oben genannten Nachteile entfallen, einen (großen) Wermutstropfen gibt es aber doch: Da zwei Be­triebssysteme mehr Ressourcen verbrauchen als eines, ist Virtualisierung nur bei leistungsfähiger Hard­ware und hin­reichend Hauptspeicher zu empfehlen.

Der Virtualisierung-Spezialist VMware (www.vmware.com) bietet mit VMware Server eine empfehlenswerte und kos­tenlose Virtualisierungs-Software, die trotz ihres Namens auch für PCs geeignet ist. VMware Server wird als An­wen­dungsprogramm im Windows- oder Linux-System instal­liert und kann mehrere virtuelle Maschinen kontrollieren.

Virtualisierung ist bei Arbeitsplatzrechnern in vielen Fällen nützlich, ihr Hauptanwendungsgebiet liegt aber im Server-Bereich. Vor allem große Rechenzentren - auch der Zentrale Informatikdienst der Uni Wien - setzen immer mehr auf Virtualisierung, um Kosten zu sparen und den Aufwand für Betrieb und Verwaltung der zahlreichen Server (am ZID sind es derzeit rund 250) zu reduzieren.

Virtualisierung von Servern

Ein professionell betriebener Server muss robust, stabil und fernwartbar sein, was sich im Anschaffungspreis niederschlägt. Er braucht außerdem Platz (idealerweise in einem speziellen EDV-Schrank), Energie (eine redundante Strom­versorgung über zwei Netzteile sowie eine höhere Leistung der Klimaanlage, um die erzeugte Wärme auch abzuführen) und einen Anschluss an das Datennetz, möglicherweise auch an ein Storage Area Network (d.h. an den entsprechenden Netzwerk-Switches müssen ausreichend freie Ports verfügbar sein). Die Kosten für die Infrastruktur fallen insgesamt oft mehr ins Gewicht als die Anschaffungskosten; dazu kommen die Personalkosten für die Betreuung von Hardware, Software und Infrastruktur. Trotz dieses Auf­wands ist die durchschnittliche CPU-Auslastung von typischen Servern meistens sehr gering: Fast immer liegt sie unter 10%, oft auch weit darunter - viele Applikationen, z.B. Mailinglisten, benötigen fast keine Rechenressourcen. Hier besteht also ein beträchtliches Einsparungspotential.

Die naheliegendste Methode zur Verbesserung der Aus­lastung ist es, auf einem Server unter demselben Betriebs­system verschiedene Services laufen zu lassen. Das ist allerdings nur bedingt empfehlenswert, weil Applikatio­nen oft unterschiedliche Anforderungen an die Systemkon­figura­tion haben; außerdem können bei Problemen mit einer Anwendung die anderen in Mitleidenschaft gezogen werden. Wird der Server hingegen virtualisiert, so kann man jeder Applikation ihr eigenes, speziell an ihre Erfordernisse angepasstes Betriebssystem zur Verfügung stellen.

Wieviele virtuelle Maschinen (VMs) gleichzeitig auf einem Rechner betrieben werden können, hängt von der verwendeten Virtualisierungs-Software und von der Leistungs­fähigkeit der Hardware ab. Angenommen, eine Software kann 15 VMs kontrollieren, so lassen sich auf vier physischen Maschinen 60 virtuelle Server unterbringen (bei Applika­tionen wie dem erwähnten Mailinglisten-Server liegt das durchaus im Bereich des Möglichen). Dies erhöht nicht nur die Effizienz, sondern auch die Ausfallsicherheit: Wenn die VMs so verteilt werden, dass jeder dieser vier Rechner im Normalbetrieb nur zu knapp drei Vierteln ausgelastet ist, können bei Problemen mit einem Rechner binnen kürzester Zeit dessen VMs auf die verbleibenden Maschinen übersiedelt werden (siehe Abb. 1).

Ideale Virtualisierungskandidaten sind Services, die keine hohen Anforderungen an die Hardware stellen (beispielsweise Li­zenz- und Authentifizierungsserver, kleinere Web- oder Mailserver) sowie Test-Server jeglicher Art. Services, die mehrere Gigabyte RAM bzw. sehr viel CPU-Zeit beanspruchen oder sehr viel Input/Output haben, sollten in der Regel nicht virtualisiert werden - hier wirkt die Virtualisie­rungsschicht meist eher bremsend als hilfreich.

Virtualisierung von Unix-Servern

Im Bereich der Großrechenanlagen (Mainframes) ist Vir­tualisierung schon seit Jahrzehnten Standard. Die teuren Mainframes wurden allerdings großteils durch wesentlich kostengünstigere Unix-Server ersetzt, deren Zahl infolgedessen explosionsartig gestiegen ist. Seit einigen Jahren ist eine Trendwende zu beobachten: Mainframe-Technologien halten auch im Unix-Bereich Einzug, sodass viele Einzel­server auf wenigen, leistungsfähigeren Maschinen zusammengefasst werden können. Alle bedeutenden Hersteller von Server-Hardware bieten Produkte zur Virtualisierung an: Die Firma Sun nennt ihre Variante Logical Domains (LDoms), HP bietet das HP Virtual Server Environment (VSE), und für IBM-Server in der POWER-Architektur steht mit Logical Partitioning (LPAR) eine besonders ausgefeilte Virtualisierungs-Technologie zur Verfügung, die es z.B. ermöglicht, auf Hundertstel einer CPU genau zu bestimmen, wie viele Ressourcen einer logischen Partition zugewiesen werden sollen.

Virtualisierung von Intel-Servern

Server auf Basis der x86-Architektur2) - vor allem unter Windows und Linux - sind in der IT-Landschaft noch zahlreicher vertreten als Unix-Server. Dementsprechend ist auch das An­gebot an Virtualisierungs-Software für Intel-Server bei­nahe unüberschaubar: Die Firma Parallels reizt mit Intels Virtual­ization Technology (VT) bzw. mit AMDs Pacifica-Techno­logie Desktop-Betriebssysteme aus (einschließlich Mac OS X), Microsoft mischt mit dem Produkt Virtual PC mit, Linux wird neuerdings mit der hauseigenen KVM (Kernel-based Virtual Machine) ausgeliefert, und viele neue Softwarehersteller drängen gerade auf den Markt, um "ihren" Ansatz zu präsentieren. Aber auch die "Veteranen" werden ständig weiterentwickelt: Beispielsweise ist der Open Source-Virtualisierer qemu, der vor einigen Jahren noch recht fehlerbehaftet war, mittlerweile ein ausgereiftes, einfach zu bedienendes Gratisprodukt für den Work­station­betrieb.

Der Großteil der Virtualisierungs-Software für Intel-Server basiert auf einem von zwei Konzepten:

  • Bei der Hardware-emulierten Virtualisierung täuscht die Virtualisierungs-Software jedem Gastsystem eine kom­plette Hardware vor, indem sie "virtuelle Chipsätze" implementiert, die von den gängigen Betriebssystemen meist out of the box unterstützt werden. Daher lässt sich auf der virtualisierten Hardware praktisch jedes gängige Betriebssystem ohne besonderen Aufwand betreiben; die Geschwindigkeit der VMs ist jedoch stark davon ab­hängig, wie gut und performant die jeweilige emulierte Hardware programmiert ist. Die Virtualisierungs-Soft­ware selbst wird entweder als normale Anwendung ge­startet (meist unter Windows oder Linux) oder läuft als "Mini-Betriebssystem" direkt auf der Hardware.

  • Bei der Paravirtualisierung greifen die einzelnen Be­triebssysteme mit Hilfe einer abstrakten Verwaltungs­schicht auf gemeinsame Ressourcen (Netzanbindung, Fest­plattenspeicher, Benutzereingaben und -ausgaben) zu. Das virtua­lisierte Betriebssystem "weiß" also, dass es ein solches ist, verhält sich aber gegenüber den Anwen­dun­gen innerhalb der VM so, als ob es mit physischer Hard­ware arbeiten würde. Paravirtualisierte Betriebs­systeme können sich über fast volle Geschwindigkeit freuen (der Ressourcenbedarf der Verwaltungsschicht ist nicht groß), benötigen jedoch immer eine Veränderung im Kernel, um als solche lauffähig zu sein. Das kann mit­unter zu Lizenzproblemen führen, und Kernelpatches für exotische Betriebssysteme zu bekommen ist schwierig bis unmöglich.

Da beide Konzepte ihre Vor- und Nachteile haben und es die perfekte Lösung wie so oft nicht gibt, ist es in erster Linie von der jeweiligen Anforderung abhängig, welche Technologie sich als geeigneter erweist. Folgerichtig versucht der Zentrale Informatikdienst, mit beiden Methoden Erfahrungen zu sammeln, und beschäftigt sich derzeit vor allem mit zwei Varianten intensiv: Hardware-emulierte Vir­tualisierung mit VMware ESX Server und Paravirtuali­sie­rung mit XEN.

  • ESX Server (www.vmware.com/de/products/esx/) ist eine sehr ausgereifte kommerzielle Software aus dem Hause VMware mit großartigen Möglichkeiten (und einem entsprechenden Preis). Das übersichtlich gestaltete Management-Interface strotzt vor Funktionen. ESX Server bietet volle VLAN-Unterstützung (die virtuellen Maschinen können somit in unterschiedlichen virtuellen Netzen angesiedelt werden) und ist auch sehr einfach an ein Storage Area Network (SAN) anzubinden. Dieser gemeinsame Speicherplatz ermöglicht es dann beispiels­weise, eine virtuelle Maschine im laufenden Betrieb mit wenigen Mausklicks auf eine andere physische Hard­ware zu verschieben; der Ausfall der VM beträgt dabei nur wenige Millisekunden. Snapshots des aktuellen Zu­stands einer VM (einschließlich Hauptspeicher) sind jederzeit möglich. Weiters kann man eine virtuelle Ma­schine klonen und diesen Klon als Muster verwenden, um z.B. eine Basis-Windows-Installation inklusive aller Treiber und Patches beliebig oft zu vervielfältigen. ESX Server verfügt - neben zahlreichen anderen - auch über ein Feature, das bei vielen gleichartigen Betriebssys­te­men einiges an Ressourcen spart: Die Software durchsucht permanent den Hauptspeicher aller aktiven vir­tuellen Maschinen und ver­sucht übereinstimmende Be­reiche zu lokalisieren, um diese physisch nur einmal be­reitstellen zu müssen.

  • Das Open Source-Produkt XEN (www.xensource.com) gilt als Vorreiter in der Paravirtualisierung und kann mit guten oder mittleren Linux-Kenntnissen auch am Notebook installiert werden. Für den erfolgreichen Betrieb benötigt man weder eine Softwarelizenz noch ein SAN. Ein gewaltiger Vorteil für "alte Linux-Hasen" ist, dass XEN auf die seit Jahren erprobten Linux-Tools zurückgreift. Ein Beispiel, das NetzwerktechnikerInnen interessieren wird: Die XEN-Skripts erstellen eine Netz­werk-Bridge automatisch mit brctl (es ist aber auch keine Hexerei, sie selbst zu definieren), und man kann an eine solche Bridge dann VLANs hängen, mit tc die Bandbreite beschränken oder mit den Standard-Regeln von iptables einen NAT-Router einrichten - die Mög­lichkeiten des Netzwerk-Setups sind so vielfältig wie Linux selbst. Snapshots im laufenden Betrieb werden mit lvm erstellt (der Hauptspeicher der laufenden VM geht dabei jedoch verloren, da beim Start des Snapshots gebootet und ein kurzer Filesystem-Check aufgerufen wird). Wie bei ESX Server ist die Live-Migration von Hosts innerhalb weniger Millisekunden möglich; Voraus­setzung dafür ist ebenfalls ein SAN als gemeinsamer Speicher. Hochverfügbarkeitslösungen mit redundanter Hardware können relativ unkompliziert mit Hilfe von Heartbeat (www.linux-ha.org) realisiert werden.

    Die Paravirtualisierungs-Patches von XEN sind zur Zeit leider nur für wenige Betriebssysteme verfügbar; daher bietet XEN neben Paravirtualisierung auch die Option, mit Hilfe von Intels VT bzw. AMDs Pacifica-Techno­logie Hardware-emulierte Virtualisierung zu betreiben. Bei exotischen Betriebssystemen und älteren CPUs, die diese Technologien nicht unterstützen, muss man daher unter Umständen ganz auf XEN verzichten. XEN ist auch als kommerzielle Version erhältlich; deren Vorteil gegenüber dem Open Source-Produkt besteht jedoch lediglich aus einer grafischen Benutzeroberfläche für den Administrator.

Am Zentralen Informatikdienst der Uni Wien kommt XEN bereits seit längerem für diverse Services im Backbone-Bereich des österreichischen Wissenschaftsnetzes ACOnet (www.aco.net) zum Einsatz: Route-Server für verschie­dene Netzwerke, Datenkollektoren und Testmaschinen werden hier ressourcenschonend auf XEN-Instanzen betrieben. VMware ESX Server ist ein aussichtsreicher Kandidat für die Virtualisierung zahlreicher anderer Intel-Server des ZID und wird derzeit "auf Herz und Nieren" geprüft.

Fazit

Virtualisierung ist der wohl mit Abstand eleganteste und nachhaltigste Ausweg aus einem Dilemma, vor dem zur Zeit viele IT-Dienstleister stehen: Einerseits werden ständig neue Services gewünscht, entwickelt und angeboten (wobei auch die Ansprüche der User an die Stabilität der Services ständig steigen, sodass die meisten Dienste redundant betrieben werden müssen), andererseits erfordern zusätzliche Server beträchtliche Investitionen in Hardware und Infra­struktur. Aus diesem Grund plant der Zentrale Informatik­dienst, einen Teil seiner Server möglichst noch heuer zu virtualisieren und dieses Konzept in den kommenden Jahren sukzessive auszuweiten.

 

1) Ein Beispiel für einen Linux-Emulator ist das Open Source-Produkt Cygwin (www.cygwin.com), das in der nächsten Ausgabe des Comment näher vorgestellt werden soll.

2) Diese werden hier der Einfachheit halber als "Intel-Server" bezeichnet, obwohl Prozessoren dieser Architektur nicht nur von Intel, sondern auch von anderen Herstellern (z.B. AMD) produ­ziert werden.