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 Voraussetzungen für eine erfolgreiche Virtualisierung? Diese Fragen sollen hier beantwortet werden, wobei das Augenmerk 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 Instanzen 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 Partitionen der Festplatte installiert; beim Einschalten wird das gewünschte Betriebssystem gewählt. Der Nachteil dabei ist, dass immer nur eines der beiden Systeme genutzt 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-Werkzeugen bedienen und Linux-Applikationen verwenden. Naturgemäß ist auch dieses Verfahren mit gewissen Einschränkungen verbunden.
- Bei "echter" Virtualisierung, die ebenfalls mit Hilfe einer geeigneten Software gesteuert wird, stehen hingegen mehrere vollwertige Betriebssysteme gleichzeitig zur Verfügung. Die oben genannten Nachteile entfallen, einen (großen) Wermutstropfen gibt es aber doch: Da zwei Betriebssysteme mehr Ressourcen verbrauchen als eines, ist Virtualisierung nur bei leistungsfähiger Hardware und hinreichend Hauptspeicher zu empfehlen.
Der Virtualisierung-Spezialist VMware (www.vmware.com) bietet mit VMware Server eine empfehlenswerte und kostenlose Virtualisierungs-Software, die trotz ihres Namens auch für PCs geeignet ist. VMware Server wird als Anwendungsprogramm im Windows- oder Linux-System installiert 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 Stromversorgung ü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 Aufwands 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 Auslastung ist es, auf einem Server unter demselben Betriebssystem verschiedene Services laufen zu lassen. Das ist allerdings nur bedingt empfehlenswert, weil Applikationen oft unterschiedliche Anforderungen an die Systemkonfiguration 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 Leistungsfähigkeit der Hardware ab. Angenommen, eine Software kann 15 VMs kontrollieren, so lassen sich auf vier physischen Maschinen 60 virtuelle Server unterbringen (bei Applikationen 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 Lizenz- 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 Virtualisierungsschicht meist eher bremsend als hilfreich.
Virtualisierung von Unix-Servern
Im Bereich der Großrechenanlagen (Mainframes) ist Virtualisierung 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 Einzelserver 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 Angebot an Virtualisierungs-Software für Intel-Server beinahe unüberschaubar: Die Firma Parallels reizt mit Intels Virtualization Technology (VT) bzw. mit AMDs Pacifica-Technologie 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 Workstationbetrieb.
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 komplette 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 abhängig, wie gut und performant die jeweilige emulierte Hardware programmiert ist. Die Virtualisierungs-Software selbst wird entweder als normale Anwendung gestartet (meist unter Windows oder Linux) oder läuft als "Mini-Betriebssystem" direkt auf der Hardware.
- Bei der Paravirtualisierung greifen die einzelnen Betriebssysteme mit Hilfe einer abstrakten Verwaltungsschicht auf gemeinsame Ressourcen (Netzanbindung, Festplattenspeicher, Benutzereingaben und -ausgaben) zu. Das virtualisierte Betriebssystem "weiß" also, dass es ein solches ist, verhält sich aber gegenüber den Anwendungen innerhalb der VM so, als ob es mit physischer Hardware arbeiten würde. Paravirtualisierte Betriebssysteme 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 mitunter 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 Virtualisierung mit VMware ESX Server und Paravirtualisierung 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 beispielsweise, eine virtuelle Maschine im laufenden Betrieb mit wenigen Mausklicks auf eine andere physische Hardware zu verschieben; der Ausfall der VM beträgt dabei nur wenige Millisekunden. Snapshots des aktuellen Zustands einer VM (einschließlich Hauptspeicher) sind jederzeit möglich. Weiters kann man eine virtuelle Maschine 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 Betriebssystemen einiges an Ressourcen spart: Die Software durchsucht permanent den Hauptspeicher aller aktiven virtuellen Maschinen und versucht übereinstimmende Bereiche zu lokalisieren, um diese physisch nur einmal bereitstellen 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 Netzwerk-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öglichkeiten 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; Voraussetzung 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-Technologie 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 verschiedene 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 Infrastruktur. Aus diesem Grund plant der Zentrale Informatikdienst, 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) produziert werden.




uni:it-Newsletter