Warum das Ganze?
Für große und mittlere Unternehmen ist die Servervirtualisierung das täglich Brot, doch auch für Privatanwender und kleine Unternehmen wird das Thema immer interessanter. Ich selber habe vor Kurzem einen halbwegs aussagekräftigen Vergleich der Technologien gesucht … und nicht gefunden. Daher habe ich mich 'ran gesetzt und selbst einen kleinen Vergleichstest durchgeführt, da sich unter meinem Kontakten ein Interesse dafür bekundet wurde habe ich mich entschlossen diesen Test hier zu publizieren. Damit das Ganze auch einen lehrreichen Aspekt vertritt gibt’s vorher noch eine kleine Übersicht über das Thema, welches keinen Anspruch auf Vollständigkeit hat, da es nur schnell aus dem Kopf zusammengetippt ist
Virtualisierung?
Im Gegensatz zu einer Emulation der Systeme wird beim Virtualisieren ein Großteil der Ressourcen geteilt und nicht nachgebildet, wodurch sich nur ein geringfügiger Rechenaufwand für das Verteilen dieser Ressourcen ergibt. Dieses Prinzip gilt allerdings nur für den Prozessor und Arbeitsspeicher, Zusatzhardware wie IO, Grafik oder Festplattencontroller müssen weiterhin emuliert werden. Einige Technologien( z.B. XEN) erlauben es Hardwarekomponenten direkt an das Clientsystem weiterzuleiten, jedoch kann diese Hardware dann nur jeweils von einem System genutzt werden - auch der Host ist darin mit einbezogen.
Im Serverbereich wird die Virtualisierung dafür eingesetzt Ressourcen effizienter zu nutzen und die Ausfallsicherheit zu erhöhen. Im privaten Bereich nutzt man es meist Testumgebungen aufzubauen oder um mehrere Betriebssysteme gleichzeitig nutzen zu können.
Die Konzepte und deren Stärken und Schwächen Grundlegende Schwäche:
Einer der immer wieder angesprochenen Vorteile der Virtualisierung ist das einfache Hardwareupgrade bzw. der problemlose Umzug auf ein anderes System. Das Problem das sich hierbei ergibt ist das direkte Durchreichen der CPU, so erkennt der Client direkt den CPU, so kann es zu kleinen Hürden kommen wenn man Beispielsweise von einem AMD auf ein Intelsystem wechselt, oder gar von einem Itanium auf einen x86er.
Auch kann Zusatzhardware - wie PCI(e) Steckkarten – nicht oder nur exklusiv an den Gast weitergegeben werden.
Betriebssystem-Virtualisierung:
oder auch OS-Container oder Jails. Bei diesem Konzept wird wird nicht nur die Hardware sondern auch Teile des Betriebssystems geteilt. Alle „gleichen“ Bestandteile des Betriebssystem wie der Kernel oder die Bibliotheken und sogar laufende Prozesse werden „geteilt“. Dadurch ergeben sich ein deutlich verminderter Verbrauch von von Rechen- und Speicherressourcen. Der Virtualisierungsschwund ist Vergleichen mit der üblichen
Komplettvirtualisierung um ein vielfaches geringer(2-5% vergleichen mit 10-40%). Nachteilig ist jedoch die starke Abhängigkeit vom Host, so muss beispielsweise das Gast-OS und das Host-OS identisch sein, dies bezieht auch Betriebssystemupdates, Treiber sowie Versionen der Bibliotheken mit ein. Des weiteren ist der Umzug auf andere Hardware deutlich erschwert. Diese Technologie wird meist für sogenannte vroots oder VDIs (Virtual Desktop Infrastructure) verwendet. Bekanntester Vertreter für Windows und Linux ist Parallels „Virtuozzo“. Für UNIX und dessen Dialekte (u.a. Linux) gibt es einige Ansätze wie OpenVZ oder BSD Jails.
Paravirtualisierung:
Bei der Paravirtualisierung „weiß“ das Gast-OS das es virtualisiert wird, dadurch muss keine Hardware emuliert werden, man muss lediglich APIs zur Verfügung stellen auf die das Gast-OS zugreift. Dieser Vorteil ist gleichermaßen ein Nachteil, da sowohl Host- als auch Gast-Kernel dafür angepasst werden müssen, was wiederum eine gewisse Quelloffenheit des Kernels voraussetzt. Dieser Umstand macht beispielsweise einen Einsatz von Microsofts Windows unwahrscheinlich, solang keine Unterstützung von Microsoft gegeben ist. Die Performance ist jedoch höher als bei der Komplettvirtualisierung. Die Paravirtualisierung galt lange Zeit als tot,
Komplettvirtualisierung:
Diese Technologie ist am verbreitetsten und mit dieser beschäftigt sich auch der zweite Teil dieses Beitrags. In der Komplettvirtualisierung wird dem Gast ein völlig autonomes System zur Verfügung gestellt, weswegen für jede VM auch ein eigenständiger Prozess laufen muss, der die gesamte Hardware eines Systems abbildet. Lediglich Zugriffe auf den Arbeitsspeicher und den Prozessor – falls eine Virtualisierungstechnologie (Vanderpool, Pacifica etc) unterstützt wird – werden direkt an die Hardware weitergegeben. Das Gastsystem arbeitet in seiner VM als ob es mit echter Hardware arbeitet und muss daher nicht angepasst werden.
Bei der Komplettvirtualisierung wird wiederum in gehostete und Hypervisor- Technologien unterschieden. Die Gehosteten sind Programme, die auf einem bereits bestehenden Betriebssystem aufsetzen. Hypervideor-Produkte setzen direkt auf die Hardware auf und benötigen kein eigenständiges Betriebssystem, lediglich ein Stück Software zur Verwaltung und Bereitstellung der Treiber ist notwendig.
[Zur Link-Ansicht bitte registrieren.] [Zur Link-Ansicht bitte registrieren.] Benchmarks
Um die Leistung zu messen wurde das Betriebssystem zunächst direkt auf der Hardware gemessen, danach wird eine Virtualisierungslösung aufgesetzt und das virtualisierte OS gemessen, wenn ein Host-OS vonnöten war, ist dies identisch mit dem virtualisierten identisch. Zum Testen der Leistung wurden folgende Benchmarks verwendet:
- Berechnung von Pi auf die ein millionste Stelle auf Grundlage des Gauss–Legendre Algorithmus mit dem Programm „SuperPi“ unter Windows und dem „System-Stability-Tester“ unter Linux. Angabe in Sekunden.
- Eintausend Abfragen – je 10 synchrone - eines WordPress-basierten Blogs auf Basis von Apache und MySQL. Zum Einsatz hierfür ist „ab“ - der Apache Benchmark – gekommen. Angabe in Abfragen pro Sekunde
- Geekbench – ein plattformübergreifender Benchmark, oft verwendete Aufgaben wie Text- und Bildkompression oder Speicherzugriffe misst. Angabe in Punkten.
- TPC-C ein Datenbanken Benchmark, der die Abarbeitung von Aufträgen in einem realistischen Handelsunternehmen simuliert und dabei auch unterschiedliche Transaktionstypen berücksichtigt. Als Grundlage wurde wieder auf die freie Datenbank MySQL gesetzt, welche nicht die realistischste Grundlage bildet, aber für einen Vergleich ausreichend ist. Angabe der durchschnittlichen Zugriffszeit in Millisekunden.
Obwohl Seth anständige Serverhardware zur Verfügung gestellt hätte, habe ich mich dazu entschlossen die Tests auf einem kleinen Notebook durchzuführen, welches zwar kein realistisches Umfeld darstellt, jedoch für einen Vergleich völlig ausreichend ist. Aktuell liegen nur Benchmarks der windowsbasierten Lösungen vor, sollte die Nachfrage groß genug sein werde ich auch de Linuxlösungen vervollständigen und die expliziten Hypervisor-Produkte testen.
Achja der Text und auch die Grafiken sind komplett bei Starbucks entstanden - ohne Maus - dementsprechend ist auch die Qualität
Waaaaah im WYSIWYG-Editor war eine super Tabelle und was ist das hier? Naja dann gibts halt nur ein Bild davon, beschwert uch bei kadder :P