Einordnung der Virtualisierungssysteme: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
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.
kvm-hyper-1
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.
kvm-hyper-2
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.
kvm-hyper-3
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