Einordnung der Virtualisierungssysteme: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
=Grundlagen= | =Grundlagen= | ||
| − | *Hypervisor bildet | + | *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 | + | *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. | ||
| − | = | + | =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. |
| − | + | ||
| − | *Die | + | ==Virtualisierung (hardwareunterstützt)== |
| − | *Der | + | *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. |
| − | * | + | *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 | + | *VM-Ressourcen werden direkt von der Hardware abgerufen. |
| − | *Einsatz Rechenzentren von Unternehmen | + | *Einsatz in Rechenzentren von Unternehmen und anderen serverbasierten Umgebungen. |
{{#drawio:kvm-hyper-1}} | {{#drawio:kvm-hyper-1}} | ||
;Beispiele | ;Beispiele | ||
| − | *VMware | + | *VMware ESXi |
| − | *Hyper-V | + | *Microsoft Hyper-V |
==Typ-2-Hypervisor== | ==Typ-2-Hypervisor== | ||
| − | *gehosteter 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 ü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 | + | |
| − | *KVM Module werden zum Kernel | + | ==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= | ||
| − | * | + | *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_intelbzw.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
- https://www.redhat.com/de/topics/virtualization/what-is-a-hypervisor
- https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf
- https://www.datacenter-insider.de/typ-1-versus-typ-2-kvms-und-andere-hypervisoren-a-318394/
- https://www.os-s.net/publications/thesis/Bachelor_Thesis_Ising.pdf


