2054764

Die Grundlagen der Virtualisierung unter Linux

07.06.2015 | 09:45 Uhr |

Ein Computer, ein Betriebssystem: Diese Gleichung stimmt so schon länger nicht mehr. Virtualisierungs-Software erlaubt es, mehrere Betriebssysteme gleichzeitig auf der Hardware auszuführen.

Virtualisierung bleibt ein heißes Thema, denn trotz sinkender Hardware-Preise haben virtuelle Maschinen bei steigenden Energie- und Lohnkosten einen Vorteil: Ein leistungsfähiger Rechner kann mehrere virtuelle PCs beherbergen und ihnen ganz nach Bedarf Systemressourcen bereitstellen. Virtualisierung ist eine gute Methode, um die Zahl dezidierter Rechner zu reduzieren und die vorhandene Hardware optimal zu nutzen.

Das spart Energie und Administratoren. Es ist deshalb kein Zufall, dass erste Virtualisierungstechnologien auf Großrechnern wie dem IBM S/370 entwickelt wurden.

Auf dieser Mainframe liefen Anfang der 70er-Jahre schon mehrere virtuelle Maschinen unter dem Betriebssystem VM/CMS. In Firmennetzwerken und Rechenzentren gehört die Technologie also schon länger zum Alltag, und für Heimanwender liefern Desktop-Virtualisierungslösungen eine ausgereifte Möglichkeit, ohne großen PC-Fundus verschiedene Betriebssysteme zu testen: Windows unter Linux, Linux unter Windows. Da die Festplatte eines virtuellen Systems meist nur in Form von Image-Dateien vorliegt, ist es auch ein Leichtes, den vorherigen Zustand eines virtuellen Systems wiederherzustellen.

Windows unter Linux dank Virtualbox - so geht's

Ist sein eigenes Betriebssystem: Virtualisierungsumgebungen wie Vmware ESX/ESXi übernehmen selbst die volle Kontrolle über die Hardware und lassen sich wie ein Betriebssystem installieren und konfigurieren.
Vergrößern Ist sein eigenes Betriebssystem: Virtualisierungsumgebungen wie Vmware ESX/ESXi übernehmen selbst die volle Kontrolle über die Hardware und lassen sich wie ein Betriebssystem installieren und konfigurieren.

Virtualisierung mit und ohne Betriebssystem

Rund um das Thema Virtualisierung fallen häufig die Begriffe Simulation und Emulation, die zwar Ähnliches, aber nicht dasselbe bedeuten. Fälschlicherweise werden die Begriffe oft synonym verwendet, obwohl es nicht das Gleiche ist. Zwar sind die Unterschiede zwischen Emulation und Virtualisierung oft fließend, da beispielsweise Virtualbox und Vmware stellenweise auch die Merkmale von Emulatoren annehmen, um virtuellen Gastsystemen das Leben zu erleichtern.

Es gibt verschiedene Techniken, um Gastbetriebssysteme auf einem Rechner in virtuellen Umgebungen zu starten. Bei der Klassifizierung der Virtualisierungstechniken unterscheidet man danach, auf welcher Ebene jene Abstraktionsschicht angesiedelt ist, auf der eine Virtualisierung dann vonstatten geht:

Typ-2-Hypervisor setzen als Basis für die Virtualisierungsumgebung ein ausgewachsenes Betriebssystem voraus. Generell ist ein Hypervisor, auch „Virtual Machine Monitor“ genannt, jene Verwaltungs-Software, welche die Kontrolle über die virtuellen Maschinen hat. Beispiele für Typ-2-Hypervisor sind die Virtualisierungsprogramme für den Desktop, etwa Qemu, Oracle Virtualbox und Vmware Player/Workstation.

Typ-1-Hypervisor läuft direkt auf der Hardware und ersetzt dabei das Betriebssystem. Solche Virtualisierungsumgebungen werden beim Einsatz auf Servern und in Rechenzentren auf Computern bevorzugt, die sowieso nur virtuelle Maschinen beherbergen sollen, dann allerdings gleich dutzendweise. Beispiele dafür sind Vmware ESX/ESXi, Oracle VM Server und Citrix Xen Server, die auch gleich geeignete Verwaltungswerkzeuge für Hunderte von VMs mitliefern.

KVM und Hyper-V sind Mischformen: Dazu gehören etwa die Kernel-basierende virtuelle Maschine (KVM) von Linux und Hyper-V von Microsoft Windows 8. Die Virtualisierungsfunktionen sind hier Teil des Betriebssystems selbst oder werden wie bei von Linux direkt als Kernel-Modul geladen. Das Betriebssystem kann sich so selbst virtualisieren und mehrere unabhängige Instanzen starten. Für die Erstellung und Verwaltung von VMs ist keine Zusatz-Software nötig, alle Tools bringt das Betriebssystem selbst mit.

Moderne Prozessoren wie hier ein Intel Core i7 unterstützen Virtualisierung: Die Abfrage der „Flags“ der Prozessorkerne gibt deshalb die Erweiterung „vmx“ für Intels Virtualisierungs-Befehlssatz zurück.
Vergrößern Moderne Prozessoren wie hier ein Intel Core i7 unterstützen Virtualisierung: Die Abfrage der „Flags“ der Prozessorkerne gibt deshalb die Erweiterung „vmx“ für Intels Virtualisierungs-Befehlssatz zurück.

Ringe regeln Privilegien

Gleich welche Methode der Virtualisierung zum Einsatz kommt – eines ist allen gemeinsam: Einige Befehle, die das Gastsystem an die CPU sendet, müssen über die Virtualisierungsschicht abgefangen werden. Der Grund liegt im Design der x86-CPUs von Intel und AMD. Nur das zuerst gestartete Betriebssystem darf privilegierte CPU-Instruktionen verwenden, die später gestarteten Anwendungen dagegen nicht. Dieser privilegierte Zugriff findet im „Ring 0“ der CPU statt, auch „Kernel-Mode“ genannt, und umfasst direkten Zugriff auf Interrupts und RAM. Die Ringe darüber, Ring 1, 2 und 3, gehören zum „User-Mode“. Betriebssystemtreiber dürfen beispielsweise im Ring 1 und 2 arbeiten, normale Programme im Betriebssystem arbeiten dagegen nur ab Ring 3.

Ein Problem dieser historisch bedingten Prozessoreinteilung: Virtualisierungs-Software läuft im Ring 3 und soll dort Gastbetriebssysteme ausführen können. Die prozessornahen Assembler-Befehle „CLI“ (Clear Interrupts) und „STI“ (Set Interrupts) zur Interrupt-Steuerung laufen aber in höheren Ringen nicht, und der Prozessor verweigert deren Ausführung.

Der Hypervisor muss deshalb die Aktionen einer virtuellen Maschine analysieren und Hardware-Befehle bei Bedarf umbauen, damit sie im Ring 3 laufen können. Sie müssen deshalb bei vielen Virtualisierern angeben, um welches Gastbetriebssystem es sich handelt und ob das System für die 32-Bit- oder 64-Bit-Plattform vorliegt. Nach diesen Angaben entscheidet der Hypervisor, welche Befehle übersetzt werden müssen.

Mit und ohne Betriebssystem: Ein Typ-1-Hypervisor wie Citrix Xen Server und Vmware ESX/ESXi unterscheidet sich vom verbreiteten Typ 2 durch seinen kompletten Verzicht auf ein Host-Betriebssystem.
Vergrößern Mit und ohne Betriebssystem: Ein Typ-1-Hypervisor wie Citrix Xen Server und Vmware ESX/ESXi unterscheidet sich vom verbreiteten Typ 2 durch seinen kompletten Verzicht auf ein Host-Betriebssystem.

Befehlssatzerweiterungen der CPU

Das Verhalten der x86-Prozessoren und deren Aufteilung der internen Berechtigungen in Ringe lässt sich aus Kompatibilitätsgründen nachträglich nicht mehr ändern.

Intel und AMD haben aber unabhängig voneinander Befehlssatzerweiterungen speziell für Virtualisierungsaufgaben entwickelt: AMD nennt die Technik „Pacifica“ beziehungsweise AMD Virtualization (AMD-V).

Sie ist in AMD-Prozessoren seit dem Athlon 64 von 2006 enthalten. Bei Intel heißt die vergleichbare Erweiterung „Virtualization Technology“ oder „Intel VT“ und ist seit dem Pentium 4 Modell 662 verfügbar. Allerdings kann es vorkommen, dass bei Notebook-CPUs die Virtualisierungserweiterungen deaktiviert sind. Genauen Aufschluss darüber, was die CPU kann, zeigt unter Linux der Befehl

grep -E 'smx|vmx' /proc/cpuinfo

in der Shell. Wird in der Ausgabe „smx“ oder „vmx“ als CPU-Flag angezeigt, so kennt der Prozessor Virtualisierungsfunktionen.

0 Kommentare zu diesem Artikel
2054764