X86-Virtualisierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
−
=Was ist x86-Virtualisierung?=
+
= Was ist x86-Virtualisierung? =
−
*Techniken, um mehrere Betriebssysteme gleichzeitig auf einem x86-Prozessor auszuführen.
+
* Techniken zur parallelen Ausführung mehrerer Betriebssysteme auf x86-Prozessoren.
−
*Ein Hypervisor verteilt die physischen Ressourcen effizient und isoliert an die VMs.
+
* Ein Hypervisor ermöglicht die effiziente und isolierte Nutzung physischer Ressourcen.
−
*Ziel: Das Gastbetriebssystem merkt keinen Unterschied zwischen virtueller und physischer Hardware.
+
* Ziel: Gastbetriebssysteme bemerken keinen Unterschied zwischen virtueller und physischer Hardware.
  
−
=Das Problem: Schutzringe=
+
= VT-x Ausführungs- und Privilegienmodell =
−
*x86-Prozessoren kennen vier Schutzringe (Ring 0–3).
 
−
**Das Betriebssystem läuft in Ring 0 und darf alles.
 
−
**Anwendungen laufen in Ring 3 und dürfen wenig.
 
−
**Ring 1 und 2 werden praktisch nicht genutzt.
 
−
*Ein Gast-Kernel erwartet ebenfalls Ring 0. Den belegt aber schon der Host bzw. der Hypervisor.
 
  
−
==Früher: Software-Virtualisierung (vor ca. 2006)==
+
== Übersicht ==
−
*Keine Unterstützung durch den Prozessor.
+
Intel VT-x führt zwei grundlegende Betriebsmodi ein:
−
*Der Gast-Kernel läuft deprivilegiert, z. B. in Ring 1.
 
−
*Der Hypervisor muss kritische Befehle abfangen und per Software nachbilden (Binary Translation, z. B. frühes VMware) oder der Gast-Kernel wird angepasst (Paravirtualisierung, z. B. frühes Xen).
 
−
*Nachteil: hoher Overhead durch häufiges Abfangen.
 
−
*Nicht verwechseln mit Emulation: Gast und Host haben hier dieselbe Plattform, die CPU wird nicht nachgebaut.
 
  
−
=Heute: Hardware-Virtualisierung mit VT-x / AMD-V=
+
* '''VMX Root Mode''': Hier läuft der Hypervisor (auch Virtual Machine Monitor, VMM). Dieser Modus besitzt die höchste Kontrolle über die Hardware.
−
*Der Prozessor bekommt zwei Betriebsmodi:
+
* '''VMX Non-Root Mode''': Hier laufen die virtuellen Maschinen (VMs) mit ihren Gastbetriebssystemen.
−
**'''VMX Root Mode''' („Ring -1“): Hier läuft der Hypervisor mit voller Kontrolle über die Hardware.
 
−
**'''VMX Non-Root Mode''': Hier laufen die VMs. Das ist der „Gastmodus“.
 
−
*Innerhalb jedes Modus gibt es wieder die Ringe 0–3:
 
−
**Das Gastbetriebssystem läuft in seinem eigenen Ring 0, die Anwendungen in Ring 3.
 
−
**Der Gast muss dafür nicht angepasst werden.
 
−
*Kritische Operationen im Non-Root Mode lösen automatisch einen Wechsel zum Hypervisor aus.
 
−
<!-- BILD 2 hier einfügen: Schutzringe VMX Root / VMX Non-Root (originale Einbindung aus der alten Seite) -->
 
  
−
==Ablauf: VM-Entry und VM-Exit==
+
Ziel dieser Trennung ist es, Gastbetriebssysteme nahezu unverändert auszuführen, während der Hypervisor privilegierte Steuer- und Verwaltungsaufgaben übernimmt.
−
*'''VM-Entry:''' Der Hypervisor wechselt in die VM (Root → Non-Root). Ab jetzt rechnet der Gast direkt auf der CPU.
 
−
*'''VM-Exit:''' Bei privilegierten Befehlen oder Gerätezugriffen springt die CPU automatisch zurück zum Hypervisor (Non-Root → Root).
 
−
*Der Hypervisor erledigt die Aufgabe und startet die VM mit dem nächsten VM-Entry wieder.
 
−
*'''VMCS''' (Virtual Machine Control Structure): Pro VM speichert die CPU deren Zustand (Register, Speicherverwaltung) und den Zustand des Hypervisors. Dadurch geht der Wechsel schnell.
 
−
*'''Speicher und I/O:''' Der Hypervisor trennt den Speicher der VMs voneinander. Mit '''EPT''' (Intel) bzw. '''NPT''' (AMD) übersetzt die CPU auch die Speicheradressen der VM selbst. Gerätezugriffe werden emuliert (z. B. durch QEMU) oder an echte Geräte weitergereicht.
 
−
<!-- BILD 1 hier einfügen: Architektur VMM / VMCS / VM-Entry / VM-Exit (originale Einbindung aus der alten Seite) -->
 
  
−
;Am Beispiel KVM
+
== Architektur und Ablauf ==
−
*KVM ist der Hypervisor im VMX Root Mode, die VM läuft im Non-Root Mode.
+
{{#drawio:Ausführungsebenen}}
−
*QEMU emuliert die Geräte der VM. Gerätezugriffe landen per VM-Exit bei KVM und werden an QEMU weitergegeben.
 
  
−
=Hardwareerweiterungen=
+
Dieses Bild zeigt die '''Gesamtabfolge der Ausführungsebenen und Übergänge''':
−
*'''Intel VT-x''': CPU-Flag <code>vmx</code>
 
−
*'''AMD-V''' (auch SVM): CPU-Flag <code>svm</code>
 
−
*Beide arbeiten nach demselben Prinzip.
 
−
grep -m1 -owE 'vmx|svm' /proc/cpuinfo
 
−
*Keine Ausgabe = im BIOS/UEFI abgeschaltet oder nicht vorhanden.
 
  
−
=Praxis-Beispiele=
+
* Unten befindet sich die CPU mit aktivierter VT-x Unterstützung.
−
*KVM (Linux)
+
* Der Hypervisor (VMM) läuft im '''VMX Root Mode'''. Er hat vollständigen Zugriff auf alle Ressourcen.
−
*VMware vSphere (ESXi)
+
* Virtuelle Maschinen laufen im '''VMX Non-Root Mode'''. Jede VM enthält:
−
*Microsoft Hyper-V
+
** Ein Gastbetriebssystem (beispielsweise Windows oder Linux), das aus seiner Sicht im Ring 0 läuft.
−
*Citrix XenServer
+
** Anwendungen, die innerhalb der VM im Ring 3 laufen.
 +
* Die Kommunikation zwischen VMs und dem Hypervisor erfolgt über:
 +
** '''VM Entry''': Wechsel von Hypervisor (VMX Root) in die VM (VMX Non-Root).
 +
** '''VM Exit''': Rücksprung von der VM in den Hypervisor, z.B. bei privilegierten Befehlen.
  
−
=Weiterführende Informationen=
+
Diese Darstellung zeigt die '''technische Ablaufarchitektur und den Wechsel zwischen den Modi'''.
−
*[https://tuxthink.blogspot.com/2011/12/kvm-introduction.html Einführung in KVM (tuxthink)]
 
−
*[https://wiki.archlinux.org/title/KVM Arch Linux KVM Wiki]
 
−
*[[Einordnung der Virtualisierungssysteme]]
 
−
*Animation: https://labs.xinux.net/hypervisor-schichten.html#swhw-3
 
  
−
=Präsentation=
+
== Komponenten im VMX Root Mode (Details zur Architektur) ==
 +
 
 +
=== VMCS (Virtual Machine Control Structure) ===
 +
* Spezielle Datenstruktur für jede VM, die ihren Zustand verwaltet.
 +
* Enthält:
 +
** Gastzustand (Register, Speicherverwaltung)
 +
** Hostzustand (für VM Exit)
 +
** Steuerinformationen (VM Exit Ursachen)
 +
* Aktiv genutzt bei jedem VM Entry und Exit.
 +
 
 +
=== H/W VM Control Structure (VMCS) ===
 +
* Physischer Speicherbereich in der CPU für die VMCS.
 +
* Ermöglicht schnellen Wechsel zwischen Hypervisor und VM.
 +
* Minimiert die Umschaltzeit zwischen Root und Non-Root Modus.
 +
 
 +
=== Memory and I/O Virtualization ===
 +
* Bestandteil des Hypervisors im Root Mode.
 +
* Aufgaben:
 +
** Speicherisolation zwischen VMs.
 +
** Adressübersetzung (Second Level Address Translation, z.B. EPT).
 +
** Emulation oder Weiterleitung von I/O-Zugriffen.
 +
* Schutz vor unerlaubtem Zugriff der VMs untereinander und auf den Hypervisor.
 +
 
 +
== Schutzringe innerhalb der Modi ==
 +
{{#drawio:vt-ring}}
 +
 
 +
Dieses Bild zeigt die '''Privilegienebenen innerhalb der beiden Modi''':
 +
 
 +
=== VMX Root Mode ===
 +
* Wird vom Hypervisor genutzt.
 +
* Innerhalb des Root Modes könnte der Hypervisor theoretisch die Ringe 0–3 verwenden, nutzt aber faktisch Ring 0.
 +
 
 +
=== VMX Non-Root Mode ===
 +
* Wird von den virtuellen Maschinen genutzt.
 +
* Gastbetriebssystem läuft im '''Ring 0''' innerhalb der VM.
 +
* Anwendungen laufen im '''Ring 3''' innerhalb der VM.
 +
* Kritische Operationen führen zu einem '''VM Exit'''.
 +
 
 +
Diese Darstellung zeigt die Trennung der Privilegienstufen zwischen Hypervisor und Gastbetriebssystemen.
 +
 
 +
= Funktionsweise verständlich erklärt =
 +
Stelle dir einen Rechner vor, auf dem mehrere Betriebssysteme gleichzeitig laufen:
 +
 
 +
== Hypervisor ==
 +
* Zentrale Steuerinstanz, die alle Ressourcen kontrolliert.
 +
* Zuweisung von CPU, Speicher und Geräten an VMs.
 +
 
 +
== Virtuelle Maschinen ==
 +
* Laufen isoliert wie eigenständige physische Rechner.
 +
* Führen Gastbetriebssysteme und Anwendungen aus.
 +
* Zugriff auf kritische Ressourcen wird vom Hypervisor gesteuert.
 +
 
 +
= Softwarebasierte Virtualisierung (klassische Methode) =
 +
* Keine spezielle Prozessorunterstützung.
 +
* Hypervisor kontrolliert Hardwarezugriff direkt.
 +
* Gastbetriebssysteme laufen deprivilegiert.
 +
* Höherer Overhead durch häufiges Abfangen von Befehlen.
 +
 
 +
= Modernes Privilegienmodell (VT-x/AMD-V) =
 +
== Historisches Modell (Protected Mode) ==
 +
* Vier Schutzringe (Ring 0–3).
 +
* Betriebssystem läuft auf Ring 0.
 +
* Anwendungen laufen auf Ring 3.
 +
* Ringe 1 und 2 wurden selten genutzt.
 +
 
 +
== Aktuelles VT-x/AMD-V-Modell ==
 +
* Zwei Betriebsmodi durch Prozessorerweiterungen:
 +
** '''VMX Root Mode''' („Ring -1“): Hypervisor mit voller Kontrolle.
 +
** '''VMX Non-Root Mode''' („virtueller Ring 0“): Gastbetriebssystem eingeschränkt.
 +
* Anwendungen innerhalb der VM bleiben in Ring 3.
 +
* Deutlich geringerer Overhead und höhere Effizienz.
 +
 
 +
= Hardwareerweiterungen =
 +
== Intel VT-x ==
 +
* Codename „Vanderpool“.
 +
* Einführung des VMX Root/Non-Root Modes.
 +
* Unterstützung von „Trap-and-Emulate“ für privilegierte Befehle.
 +
 
 +
== AMD-V ==
 +
* Codename „Pacifica“.
 +
* Vergleichbare Technik zu VT-x.
 +
* Unterstützung für Ring Aliasing und effizientere Virtualisierung.
 +
 
 +
= Praxis-Beispiele =
 +
* [[KVM]] (Kernel-based Virtual Machine, Linux)
 +
* VMware vSphere (ESXi)
 +
* Microsoft Hyper-V
 +
* Citrix XenServer
 +
 
 +
= Weiterführende Informationen =
 +
* [https://tuxthink.blogspot.com/2011/12/kvm-introduction.html Einführung in KVM (tuxthink)]
 +
* [https://wiki.archlinux.org/title/KVM Arch Linux KVM Wiki]
 +
==Präsentation==
 
*https://hedgedoc.xinux.net/p/sC9T6-hrS#/
 
*https://hedgedoc.xinux.net/p/sC9T6-hrS#/
 +
[[Kategorie:Virtualisierung]]

Version vom 11. Oktober 2026, 11:55 Uhr

Was ist x86-Virtualisierung?

  • Techniken zur parallelen Ausführung mehrerer Betriebssysteme auf x86-Prozessoren.
  • Ein Hypervisor ermöglicht die effiziente und isolierte Nutzung physischer Ressourcen.
  • Ziel: Gastbetriebssysteme bemerken keinen Unterschied zwischen virtueller und physischer Hardware.

VT-x Ausführungs- und Privilegienmodell

Übersicht

Intel VT-x führt zwei grundlegende Betriebsmodi ein:

  • VMX Root Mode: Hier läuft der Hypervisor (auch Virtual Machine Monitor, VMM). Dieser Modus besitzt die höchste Kontrolle über die Hardware.
  • VMX Non-Root Mode: Hier laufen die virtuellen Maschinen (VMs) mit ihren Gastbetriebssystemen.

Ziel dieser Trennung ist es, Gastbetriebssysteme nahezu unverändert auszuführen, während der Hypervisor privilegierte Steuer- und Verwaltungsaufgaben übernimmt.

Architektur und Ablauf

Dieses Bild zeigt die Gesamtabfolge der Ausführungsebenen und Übergänge:

  • Unten befindet sich die CPU mit aktivierter VT-x Unterstützung.
  • Der Hypervisor (VMM) läuft im VMX Root Mode. Er hat vollständigen Zugriff auf alle Ressourcen.
  • Virtuelle Maschinen laufen im VMX Non-Root Mode. Jede VM enthält:
    • Ein Gastbetriebssystem (beispielsweise Windows oder Linux), das aus seiner Sicht im Ring 0 läuft.
    • Anwendungen, die innerhalb der VM im Ring 3 laufen.
  • Die Kommunikation zwischen VMs und dem Hypervisor erfolgt über:
    • VM Entry: Wechsel von Hypervisor (VMX Root) in die VM (VMX Non-Root).
    • VM Exit: Rücksprung von der VM in den Hypervisor, z.B. bei privilegierten Befehlen.

Diese Darstellung zeigt die technische Ablaufarchitektur und den Wechsel zwischen den Modi.

Komponenten im VMX Root Mode (Details zur Architektur)

VMCS (Virtual Machine Control Structure)

  • Spezielle Datenstruktur für jede VM, die ihren Zustand verwaltet.
  • Enthält:
    • Gastzustand (Register, Speicherverwaltung)
    • Hostzustand (für VM Exit)
    • Steuerinformationen (VM Exit Ursachen)
  • Aktiv genutzt bei jedem VM Entry und Exit.

H/W VM Control Structure (VMCS)

  • Physischer Speicherbereich in der CPU für die VMCS.
  • Ermöglicht schnellen Wechsel zwischen Hypervisor und VM.
  • Minimiert die Umschaltzeit zwischen Root und Non-Root Modus.

Memory and I/O Virtualization

  • Bestandteil des Hypervisors im Root Mode.
  • Aufgaben:
    • Speicherisolation zwischen VMs.
    • Adressübersetzung (Second Level Address Translation, z.B. EPT).
    • Emulation oder Weiterleitung von I/O-Zugriffen.
  • Schutz vor unerlaubtem Zugriff der VMs untereinander und auf den Hypervisor.

Schutzringe innerhalb der Modi

Dieses Bild zeigt die Privilegienebenen innerhalb der beiden Modi:

VMX Root Mode

  • Wird vom Hypervisor genutzt.
  • Innerhalb des Root Modes könnte der Hypervisor theoretisch die Ringe 0–3 verwenden, nutzt aber faktisch Ring 0.

VMX Non-Root Mode

  • Wird von den virtuellen Maschinen genutzt.
  • Gastbetriebssystem läuft im Ring 0 innerhalb der VM.
  • Anwendungen laufen im Ring 3 innerhalb der VM.
  • Kritische Operationen führen zu einem VM Exit.

Diese Darstellung zeigt die Trennung der Privilegienstufen zwischen Hypervisor und Gastbetriebssystemen.

Funktionsweise verständlich erklärt

Stelle dir einen Rechner vor, auf dem mehrere Betriebssysteme gleichzeitig laufen:

Hypervisor

  • Zentrale Steuerinstanz, die alle Ressourcen kontrolliert.
  • Zuweisung von CPU, Speicher und Geräten an VMs.

Virtuelle Maschinen

  • Laufen isoliert wie eigenständige physische Rechner.
  • Führen Gastbetriebssysteme und Anwendungen aus.
  • Zugriff auf kritische Ressourcen wird vom Hypervisor gesteuert.

Softwarebasierte Virtualisierung (klassische Methode)

  • Keine spezielle Prozessorunterstützung.
  • Hypervisor kontrolliert Hardwarezugriff direkt.
  • Gastbetriebssysteme laufen deprivilegiert.
  • Höherer Overhead durch häufiges Abfangen von Befehlen.

Modernes Privilegienmodell (VT-x/AMD-V)

Historisches Modell (Protected Mode)

  • Vier Schutzringe (Ring 0–3).
  • Betriebssystem läuft auf Ring 0.
  • Anwendungen laufen auf Ring 3.
  • Ringe 1 und 2 wurden selten genutzt.

Aktuelles VT-x/AMD-V-Modell

  • Zwei Betriebsmodi durch Prozessorerweiterungen:
    • VMX Root Mode („Ring -1“): Hypervisor mit voller Kontrolle.
    • VMX Non-Root Mode („virtueller Ring 0“): Gastbetriebssystem eingeschränkt.
  • Anwendungen innerhalb der VM bleiben in Ring 3.
  • Deutlich geringerer Overhead und höhere Effizienz.

Hardwareerweiterungen

Intel VT-x

  • Codename „Vanderpool“.
  • Einführung des VMX Root/Non-Root Modes.
  • Unterstützung von „Trap-and-Emulate“ für privilegierte Befehle.

AMD-V

  • Codename „Pacifica“.
  • Vergleichbare Technik zu VT-x.
  • Unterstützung für Ring Aliasing und effizientere Virtualisierung.

Praxis-Beispiele

  • KVM (Kernel-based Virtual Machine, Linux)
  • VMware vSphere (ESXi)
  • Microsoft Hyper-V
  • Citrix XenServer

Weiterführende Informationen

Präsentation