MACNOTES

Veröffentlicht am  16.05.08, 21:08 Uhr von  ml

Techtalk: Virtualisierung

Techtalk In unserer Serie Techtalk beschäftigen wir uns in loser Folge mit Hintergründen und technischen Details aus der Computerwelt. Diesmal wollen wir uns mit dem Thema Virtualisierung auseinandersetzen und dabei u.a. Begriffe wie Hypervisor, Paravirtualisierung und VT-x klären.

Doch was steckt allgemein hinter dem Begriff Virtualisierung? In der Informatik ist der Begriff nicht klar umrissen. Grob kann man sagen, dass mit Virtualisierung Methoden bezeichnet werden, mit denen sich die Ressourcen (CPU, Speicher und Geräte) aufteilen lassen. Virtueller Speicher in modernen Betriebssystemen ist z. B. eine solche Methode. Das soll aber nicht Bestandteil des folgenden Artikels sein, sondern wir wollen uns mit der Virtualisierung von Betriebssystemen beschäftigen.

Wozu Virtualisierung?
Die Rechenleistung von Computersystemen ist in den letzten Jahren insbesondere durch den Einsatz von Mehrkernprozessoren massiv gestiegen. Doch die Spitzenleistung wird nur selten benötigt und so arbeiten viele Systeme nur wenig ausgelastet vor sich hin. Dabei verbraten die Prozessoren sinnlos Strom und erzeugen Wärme. Insbesondere in Rechenzentren ist das ein echtes Problem, denn die Wärme muss mit immer aufwändigeren und teuren Kühlsystemen entsorgt werden.

Deshalb sind die Betreiber von Rechenzentren dazu übergegangen, mehrere Server in einzelne virtuelle Maschinen (VMs) zu übertragen und diese dann auf nur noch einem Server laufen zu lassen. Das ganze spart Kosten bei der Anschaffung neuer Hardware, da hiervon weniger benötigt wird und gleichzeit kann der Aufwand für die Kühlung der Systeme reduziert werden, da jetzt statt mehrerer nur teilweise ausgelasteter Server nur noch einer, dafür aber voll ausgelasteter Server läuft.

Auch für den Privatanwender bietet Virtualisierung Vorteile. Mal eben Windows oder Linux parallel zum Mac OS X in einer VM starten oder sich innerhalb einer virtuellen Maschine eine Art Sandkasten für Testzwecke einrichten: Die möglichen Anwendungsgebiete sind vielfältig.

Softwarevirtualisierung und Emulation
Bei der Virtualisierung von Betriebssystemen unterscheidet man in Software- und Hardwarevirtualisierung. Ein möglicher Ansatz von Softwarevirtualisierung ist die Emulation. Dabei wird ein komplettes Hardwaresystem in Software nachgebildet und ausgeführt. Zu PowerPC-Zeiten war VirtualPC ein solcher Emulator, der einen X86-PC auf dem Mac nachbildete. Der Vorteil dieser Variante ist, dass an den zu virtualisierenden Betriebssystemen (=Gastsystem) keine bzw. nur sehr kleine Änderungen vorzunehmen sind und sich auch andere Computer-Architekturen auf einem Hostsystem emulieren lassen. Der Nachteil von Emulation bzw. reiner Softwarevirtualisierung ist, dass die Geschwindigkeit der virtualisierten Umgebung gegenüber einem nativen System stark sinkt. Der Grund ist, dass jeder (Maschinen-)Befehl des Gastsystems zunächst durch den Emulator geht und dort von der Emulationsumgebung nachgebildet wird.

Herr der Ringe
Bevor wir mit dem Thema fortfahren, müssen wir einen kleinen Ausflug in den Bereich der X86-Architektur unternehmen. X86-Prozessoren verfügen über vier unterschiedliche Privilegierungsstufen, die bei Intel Ringe genannt werden. Mit Ring 0 wird die höchste Privilegierungsstufe, in der auch der Betriebssystemkern läuft, bezeichnet. Anwendungsprogramme werden in Ring 3 ausgeführt. Ring 1 und 2 haben keine praktische Bedeutung. Leider gibt es im Befehlssatz der X86-Architektur Befehle, die in Ring 0 und 3 unterschiedliche Semantiken haben. Das führt zu Problemen, wenn sich z. B. ein Gastsystem gerade im Ring 0 befindet und der Befehl einfach an den physischen Prozessor weitergereicht wird. Die Virtualisierungssoftware müsste darüber benachrichtigt werden, indem der Prozessor einen sogenannten Trap auslöst. Dieser Trap kann dann behandelt werden, indem z. B. der kritische Befehl in Software nachgebildet wird.

Mit den Virtualisierungserweiterungen VT-x (Intel) und Pacifica (AMD) haben die Prozessorhersteller in den letzten Jahren entsprechende Änderungen an ihren Prozessoren vorgenommen. Intel hat dazu einfach 4 neue Ringe hinzugefügt (-1 bis -3). Führt der Prozessor ein Programm in diesen Ringen aus, so lösen kritische Befehle einen Trap aus.

Virtualisierung nativ
Mit den eben vorgestellten Hardwareerweiterungen ist es möglich, dass ein Gastsystem direkt, gleiche Hardwareplattform vorrausgesetzt, auf dem Prozessor ausgeführt wird. Die bremsende Übersetzung von Befehlen entfällt. Die Virtualisierungssoftware muss lediglich dafür sorgen, dass das Gastsystem im richtigen Ring ausgeführt wird. Alle aktuellen Virtualisierungslösungen wie z. B. Parallels oder VMWare Fusion arbeiten in diesem Modus.

I/O-Virtualisierung
Wer schon mit solchen Virtualisierungslösungen gearbeitet hat, dem wird aufgefallen sein, dass z. B. virtuelle Netzwerkkarten angelegt werden. Diese leiten dann den Netzwerkverkehr des Gastsystems an die Netzwerkkarte des Hostsystems weiter. Um solche Geräte zukünftig auch virtualisieren zu können, hat Intel unter dem Namen VT-d (das d steht für directed I/O) weitere Erweiterungen vorgenommen. AMD hat ähnliche Techniken auch in seine Pacifica-Plattform eingebaut. Damit lassen sich zukünftig auch bestimmte Geräte direkt vom Gastsystem nutzen, indem sich z. B. Interrupts nur an eine virtuelle Maschine zustellen lassen.

Was gibt es noch?
Die bislang vorgestellten Virtualisierungsansätze benötigen immer noch ein Hostsystem, auf dem eine bestimmte Art von Virtualisierungssoftware läuft. Im nächsten Schritt lässt man das Host-Betriebssystem weg und ersetzt es durch einen sogenannten Hypervisor. Der Hypervisor ist vom Prinzip her ein minimaler Betriebssystemkern, der die Ressourcen des Rechners (CPU, Speicher und Geräte) an unterschiedliche virtuelle Maschinen verteilt und die VMs voneinander isoliert. Das ist die nächste Stufe des bekannten Multitaskings moderner Betriebssysteme: statt mehrerer Programme laufen mehrere Betriebssysteme parallel auf einem Rechner.

Eine weitere Möglichkeit ein Betriebssystem zu virtualisieren ist die sogenannte Paravirtualisierung. Dabei wird von einer Software eine Schnittstelle bereitgestellt, die ähnlich aber nicht identisch zur eigentlichen Hardware ist. Das Betriebssystem muss dann an diese Schnittstelle angepasst (portiert) werden. Daher eignet sich dieser Ansatz nur bei Systemen, bei denen man Zugriff auf die Quellen, z. B. bei Linux, hat. Vorteil dieses Ansatzes ist, dass man sowohl auf der Schnittstellenseite als auch auf Betriebssystemseite Optimierungen vornehmen kann und damit potentiell eine höhere Leistung der VM erreichen kann.

Fazit
Wie der Artikel zeigt, ist Virtualisierung von Betriebssystemen auf unterschiedliche Weise möglich. Dem flexibelsten Ansatz mit Hilfe eines Emulators stehen die Geschwindigkeitsvorteile der hardwareunterstützten Virtualisierung entgegen. Beide Ansätze habe ihre Berechtigung. Moderne Virtualisierungstechniken der Prozessoren ermöglichen u.a. die Effizienzsteigerung von Servern, indem ursprünglich dedizierte Systeme mit Hilfe von VMs auf einem System konsolidiert werden. Mit Hilfe von Emulatoren lässt sich auch alte Software für nicht mehr existente Hardwareplattformen wieder zum Laufen zu bekommen.

 Und wie ist deine Meinung?  Schreib uns einfach!

 4 Kommentar(e) bisher

  •  MacMaxi sagte am 16. Mai 2008:

    Sehr schöner Artikel… Nach dem in letzter Zeit sich in dem Sektor für den Mac ja einiges getan hat, ist das ganze Thema sehr gut erklärt!

    Danke… :)

    PS: Nichtmehr existierende Hardwareplattformen ist sehr gut umschrieben für Spielekonsolen :)

    Antworten 
  •  HeMan-3h sagte am 17. Mai 2008:

    … und wieder was dazu gelernt.

    Danke für diesen kurzen, knackigen Artikel.

    Antworten 
  •  Georg Peters sagte am 19. Mai 2008:

    Kompakter, aber nicht oberflächlicher Artikel. Durchaus auch als “Management Summary” zu empfehlen. Virtualisierung als Kontra zur Energieverschwendung verdient mehr Beachtung!

    But, please Don’t ignore the roots…

    G.P. – SysProg VM/SP, VM/XA, VM/ESA, z/VM, Virtual Machines since 1967!

    (Artikel gefunden durch Google Alert)

    Antworten 
  •  Robert sagte am 16. Juni 2008:

    Eine sehr gute Übersicht.

    Wer etwas über QEMU bzw. Q (QEMU für Mac) erfahren möchte, den sei das Buch “QEMU” empfohlen:

    http://qemu-buch.de

    In der Leseprobe wird auch etwas zur Theorie der Virtualisierung und Emulation beschrieben. Anschließend wird die Installation auf unterschiedlichen Betriebssystemen, auch Mac, erläutert.

    Sorry für die Werbung ;-)

    Antworten 

Kommentar verfassen

Werbung
© 2006-2013 MACNOTES.DE. Made with insanely great for all things Mac. Apple.de