Einordnung der Virtualisierungssysteme: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 1: Zeile 1:
 
=Grundlagen=
 
=Grundlagen=
−
*Hypervisor bildet die als abstrahierende Schicht zwischen tatsächlich vorhandener Hardware
+
*Ein Hypervisor bildet eine abstrahierende Schicht zwischen der tatsächlich vorhandenen Hardware und den Gast-Betriebssystemen.
−
*Solche Systeme erlauben es, eine virtuelle Umgebung zu definieren
+
*Er erlaubt es, eine virtuelle Umgebung zu definieren.
−
*Diese dient dann unabhängig von der tatsächlich vorhandenen Hardware als Basis für die Installation von (Gast-)Betriebssystemen.
+
*Diese dient unabhängig von der tatsächlich vorhandenen Hardware als Basis für die Installation von (Gast-)Betriebssystemen.
−
*Zwei Arten sind möglich
+
*Zwei Arten sind möglich:
 
**Typ-1-Hypervisoren
 
**Typ-1-Hypervisoren
−
**Typ-2-Hypervisoren  
+
**Typ-2-Hypervisoren
 
**Es gibt Mischformen.
 
**Es gibt Mischformen.
  
−
=Software- vs. Hardware-Virtualisierung=
+
=Emulation vs. Virtualisierung=
−
==Software-Virtualisierung==
+
==Emulation==
−
*Im Falle einer Softwarevirtualisierung muss das Hostsystem die Plattform des Gastes vollständig emulieren.
+
*Bei der Emulation baut das Hostsystem die Plattform des Gastes vollständig in Software nach.
−
*Von der Hardware, den CPU-Anweisungen über die Firmware bis hin zum Betriebssystem (falls vorhanden/).
+
*Das umfasst die Hardware, die CPU-Befehle und die Firmware.
−
*Der Vorteil ist, dass Host- und Gastplattformen unabhängig sind.  
+
*Jeder Befehl des Gastes wird gelesen und in mehrere Befehle für die echte CPU übersetzt.
−
*Der Nachteil ist, dass dieser Ansatz sehr langsam und ressourcenintensiv ist.
+
*Vorteil: Host- und Gastplattform sind unabhängig, z. B. ein ARM-Gast auf einem x86-Host.
−
==Hardware-Virtualisierung==
+
*Nachteil: Dieser Ansatz ist sehr langsam und ressourcenintensiv.
−
*Hardware-unterstützte Virtualisierung bietet einen erheblichen Leistungsgewinn gegenüber Software-Virtualisierung
+
*Beispiel: '''QEMU''' (Quick Emulator) ohne KVM emuliert alles, auch die CPU.
−
*Dies wird erreicht indem ein Teil des Gastcodes direkt auf der Host-Hardware mit eingeschränkter oder keiner Unterstützung durch das Host-System ausgeführt wird.
+
 
−
*Die Hardware muss dies jedoch unterstützen (Intel VT oder AMD-V ).
+
==Virtualisierung (hardwareunterstützt)==
−
*Der Nachteil gegenüber der Softwarevirtualisierung besteht darin, dass das Gast- und das Hostsystem dieselbe Plattform verwenden müssen.
+
*Der Gast-Code läuft direkt auf der echten CPU und wird nicht übersetzt.
 +
*Die CPU muss dies unterstützen: Intel VT-x oder AMD-V.
 +
*Dadurch ist sie fast so schnell wie ein System ohne VM.
 +
*Nachteil: Gast und Host müssen dieselbe Plattform verwenden.
 +
*Beispiel: '''QEMU-KVM''' reicht die CPU an den Gast durch, QEMU emuliert nur noch die Geräte (Festplatte, Netzwerkkarte, Grafik).
 +
 
 +
==Ablauf: VM-Entry und VM-Exit==
 +
*'''VM-Entry:''' QEMU sagt zu KVM „Starte meine VM“ (<code>ioctl(KVM_RUN)</code> auf <code>/dev/kvm</code>). KVM richtet die CPU ein und übergibt ihr den Gast-Code.
 +
*'''Der Gast rechnet allein:''' Millionen Befehle laufen direkt auf der CPU. KVM ist in dieser Zeit gar nicht aktiv.
 +
*'''VM-Exit:''' Will der Gast etwas, das er nicht selbst darf (z. B. Festplatte, Ports, Interrupts), stoppt die CPU ihn und springt automatisch zu KVM zurück.
 +
*KVM erledigt Timer und Interrupts selbst und gibt Gerätezugriffe an QEMU weiter. Danach folgt wieder ein VM-Entry.
 +
*'''Merke:''' KVM steht nicht zwischen jedem Befehl, das wäre wieder Emulation. KVM steht nur am Anfang und bei den Sonderfällen.
 +
;Vergleich Fahrschule
 +
*Der Fahrschüler (Gast) fährt selbst.
 +
*Der Fahrlehrer (KVM) greift nicht bei jeder Lenkbewegung ein, hat aber eine eigene Bremse und übernimmt, sobald es kritisch wird.
 +
*Bei Emulation würde der Fahrlehrer jede Lenkbewegung selbst ausführen.
 +
 
 +
;Prüfen, ob die CPU Virtualisierung unterstützt
 +
grep -m1 -owE 'vmx|svm' /proc/cpuinfo
 +
*<code>vmx</code> = Intel VT-x, <code>svm</code> = AMD-V, keine Ausgabe = im BIOS/UEFI abgeschaltet oder nicht vorhanden.
  
 
=Einordnung=
 
=Einordnung=
 
==Typ-1-Hypervisor==
 
==Typ-1-Hypervisor==
−
*nativer oder Bare-Metal Hypervisor
+
*Nativer oder Bare-Metal-Hypervisor.
−
*wird direkt auf der Host-Hardware ausgeführt
+
*Wird direkt auf der Host-Hardware ausgeführt.
−
*Guest-Betriebssysteme zu verwalten
+
*Verwaltet die Gast-Betriebssysteme.
−
*Er hat die Rolle des Host-Betriebssystems
+
*Übernimmt selbst die Rolle des Host-Betriebssystems.
−
*VM-Ressourcen werden direkt von der Hardware abberufen.  
+
*VM-Ressourcen werden direkt von der Hardware abgerufen.
−
*Einsatz Rechenzentren von Unternehmen oder anderen serverbasierten Umgebungen eingesetzt.
+
*Einsatz in Rechenzentren von Unternehmen und anderen serverbasierten Umgebungen.
 
{{#drawio:kvm-hyper-1}}
 
{{#drawio:kvm-hyper-1}}
 
;Beispiele
 
;Beispiele
−
*VMware ESXI
+
*VMware ESXi
−
*Hyper-V
+
*Microsoft Hyper-V
  
 
==Typ-2-Hypervisor==
 
==Typ-2-Hypervisor==
−
*gehosteter Hypervisor bezeichnet,
+
*Wird auch gehosteter Hypervisor genannt.
−
*wird als Softwareschicht oder Anwendung ausgeführt.
+
*Läuft als Anwendung auf einem normalen Host-Betriebssystem.
−
*Abstraktion des Guest-Betriebssysteme vom Host-Betriebssystem.  
+
*Trennt die Gast-Betriebssysteme vom Host-Betriebssystem.
−
*VM-Ressourcen werden beim Host-Betriebssystem angefordert und über die Hardware abgerufen.  
+
*VM-Ressourcen werden beim Host-Betriebssystem angefordert und von diesem über die Hardware abgerufen.
 
{{#drawio:kvm-hyper-2}}
 
{{#drawio:kvm-hyper-2}}
 
;Beispiele
 
;Beispiele
 
*VMware Workstation
 
*VMware Workstation
 
*Oracle VirtualBox
 
*Oracle VirtualBox
−
==KVM TYP-1==
+
 
−
*KVM Module werden zum Kernel geladen
+
==KVM (Typ 1)==
 +
*Die KVM-Module (<code>kvm</code>, <code>kvm_intel</code> bzw. <code>kvm_amd</code>) werden in den Linux-Kernel geladen.
 +
*Damit wird der Linux-Kernel selbst zum Hypervisor und sitzt direkt auf der Hardware.
 +
*Jede VM ist ein normaler QEMU-Prozess, den der Kernel wie jeden anderen Prozess einplant.
 +
*QEMU emuliert die Hardware der VM, die CPU reicht KVM durch.
 
{{#drawio:kvm-hyper-3}}
 
{{#drawio:kvm-hyper-3}}
 
;Beispiele
 
;Beispiele
−
*KVM
+
*KVM mit QEMU
 +
*Proxmox VE
  
 
=Anmerkung=
 
=Anmerkung=
−
*RedHat verortet KVM als Type 1 Hypervisor
+
*Red Hat verortet KVM als Typ-1-Hypervisor.
 +
*Weil Geräte über QEMU im Userspace laufen, wird KVM teilweise auch als Mischform gesehen.
 +
 
 +
=Animation=
 +
*https://labs.xinux.net/hypervisor-schichten.html
 +
 
 
=Präsentation=
 
=Präsentation=
 
*https://hedgedoc.xinux.net/p/Fts3cYoYx#/
 
*https://hedgedoc.xinux.net/p/Fts3cYoYx#/

Aktuelle Version vom 11. Oktober 2026, 11:51 Uhr

Grundlagen

  • Ein Hypervisor bildet eine abstrahierende Schicht zwischen der tatsächlich vorhandenen Hardware und den Gast-Betriebssystemen.
  • Er erlaubt es, eine virtuelle Umgebung zu definieren.
  • Diese dient unabhängig von der tatsächlich vorhandenen Hardware als Basis für die Installation von (Gast-)Betriebssystemen.
  • Zwei Arten sind möglich:
    • Typ-1-Hypervisoren
    • Typ-2-Hypervisoren
    • Es gibt Mischformen.

Emulation vs. Virtualisierung

Emulation

  • Bei der Emulation baut das Hostsystem die Plattform des Gastes vollständig in Software nach.
  • Das umfasst die Hardware, die CPU-Befehle und die Firmware.
  • Jeder Befehl des Gastes wird gelesen und in mehrere Befehle für die echte CPU übersetzt.
  • Vorteil: Host- und Gastplattform sind unabhängig, z. B. ein ARM-Gast auf einem x86-Host.
  • Nachteil: Dieser Ansatz ist sehr langsam und ressourcenintensiv.
  • Beispiel: QEMU (Quick Emulator) ohne KVM emuliert alles, auch die CPU.

Virtualisierung (hardwareunterstützt)

  • Der Gast-Code läuft direkt auf der echten CPU und wird nicht übersetzt.
  • Die CPU muss dies unterstützen: Intel VT-x oder AMD-V.
  • Dadurch ist sie fast so schnell wie ein System ohne VM.
  • Nachteil: Gast und Host müssen dieselbe Plattform verwenden.
  • Beispiel: QEMU-KVM reicht die CPU an den Gast durch, QEMU emuliert nur noch die Geräte (Festplatte, Netzwerkkarte, Grafik).

Ablauf: VM-Entry und VM-Exit

  • VM-Entry: QEMU sagt zu KVM „Starte meine VM“ (ioctl(KVM_RUN) auf /dev/kvm). KVM richtet die CPU ein und übergibt ihr den Gast-Code.
  • Der Gast rechnet allein: Millionen Befehle laufen direkt auf der CPU. KVM ist in dieser Zeit gar nicht aktiv.
  • VM-Exit: Will der Gast etwas, das er nicht selbst darf (z. B. Festplatte, Ports, Interrupts), stoppt die CPU ihn und springt automatisch zu KVM zurück.
  • KVM erledigt Timer und Interrupts selbst und gibt Gerätezugriffe an QEMU weiter. Danach folgt wieder ein VM-Entry.
  • Merke: KVM steht nicht zwischen jedem Befehl, das wäre wieder Emulation. KVM steht nur am Anfang und bei den Sonderfällen.
Vergleich Fahrschule
  • Der Fahrschüler (Gast) fährt selbst.
  • Der Fahrlehrer (KVM) greift nicht bei jeder Lenkbewegung ein, hat aber eine eigene Bremse und übernimmt, sobald es kritisch wird.
  • Bei Emulation würde der Fahrlehrer jede Lenkbewegung selbst ausführen.
Prüfen, ob die CPU Virtualisierung unterstützt
grep -m1 -owE 'vmx|svm' /proc/cpuinfo
  • vmx = Intel VT-x, svm = AMD-V, keine Ausgabe = im BIOS/UEFI abgeschaltet oder nicht vorhanden.

Einordnung

Typ-1-Hypervisor

  • Nativer oder Bare-Metal-Hypervisor.
  • Wird direkt auf der Host-Hardware ausgeführt.
  • Verwaltet die Gast-Betriebssysteme.
  • Übernimmt selbst die Rolle des Host-Betriebssystems.
  • VM-Ressourcen werden direkt von der Hardware abgerufen.
  • Einsatz in Rechenzentren von Unternehmen und anderen serverbasierten Umgebungen.
Beispiele
  • VMware ESXi
  • Microsoft Hyper-V

Typ-2-Hypervisor

  • Wird auch gehosteter Hypervisor genannt.
  • Läuft als Anwendung auf einem normalen Host-Betriebssystem.
  • Trennt die Gast-Betriebssysteme vom Host-Betriebssystem.
  • VM-Ressourcen werden beim Host-Betriebssystem angefordert und von diesem über die Hardware abgerufen.
Beispiele
  • VMware Workstation
  • Oracle VirtualBox

KVM (Typ 1)

  • Die KVM-Module (kvm, kvm_intel bzw. kvm_amd) werden in den Linux-Kernel geladen.
  • Damit wird der Linux-Kernel selbst zum Hypervisor und sitzt direkt auf der Hardware.
  • Jede VM ist ein normaler QEMU-Prozess, den der Kernel wie jeden anderen Prozess einplant.
  • QEMU emuliert die Hardware der VM, die CPU reicht KVM durch.
Beispiele
  • KVM mit QEMU
  • Proxmox VE

Anmerkung

  • Red Hat verortet KVM als Typ-1-Hypervisor.
  • Weil Geräte über QEMU im Userspace laufen, wird KVM teilweise auch als Mischform gesehen.

Animation

Präsentation

Quellen