QEMU vs. KVM in Proxmox: Was ist der Unterschied?
QEMU und KVM werden häufig als konkurrierende Virtualisierungstechnologien diskutiert, aber dieser Vergleich ist irreführend. In Proxmox übernehmen sie unterschiedliche Teile desselben Prozesses zum Betrieb einer virtuellen Maschine.
KVM stellt hardwarebeschleunigte Prozessor- und Speichervirtualisierung über den Linux-Kernel bereit. QEMU baut den virtuellen Computer um den Gast herum, einschließlich seiner Disks, Netzwerkadapter, Firmware und anderer Geräte. Proxmox fügt die Management-Plattform hinzu, mit der Administratoren die gesamte Umgebung konfigurieren und steuern können.
Eine Proxmox-virtuelle-Maschine nutzt normalerweise QEMU und KVM gemeinsam. Das Verständnis ihrer Rollen hilft, VM-Performance, Hardware-Kompatibilität, Geräteauswahl und Troubleshooting zu erklären.
Was ist QEMU?
QEMU ist ein Open-Source-Maschinenemulator und -Virtualisierer. Seine Systememulation erzeugt ein virtuelles Modell eines Computers, einschließlich Prozessoren, Speicher und Hardwaregeräten, damit ein Gast-Betriebssystem so laufen kann, als wäre es auf physischer Hardware installiert.
QEMU kann viele Prozessorarchitekturen und Maschinentypen modellieren. Es kann x86, Arm, RISC-V und mehrere andere Architekturen emulieren. Dadurch kann QEMU Software ausführen, die für eine andere Prozessorarchitektur als der physische Host konzipiert wurde, auch wenn vollständige Emulation viel langsamer ist als hardwaregestützte Virtualisierung.
Aus Sicht des Proxmox-Hosts läuft jede QEMU-virtuelle-Maschine als Userspace-Prozess. Dieser Prozess repräsentiert die virtuelle Hardware, die dem Gast-Betriebssystem präsentiert wird.
QEMU kann virtuelle Disk-Controller, Netzwerkkarten, USB-Controller, Grafikadapter, serielle Ports und viele andere Geräte bereitstellen. Ein Windows- oder Linux-Gast sieht diese Komponenten als Hardware und lädt Treiber dafür, genau wie er es auf einem physischen Computer tun würde.
QEMU kann ohne KVM arbeiten, indem es seinen Tiny Code Generator nutzt. TCG übersetzt Gast-Prozessorinstruktionen in Instruktionen, die der Host ausführen kann. Das macht architekturübergreifende Emulation möglich, ist aber für gewöhnliche Produktions-Server-Workloads meist zu langsam.
Was ist KVM?
KVM steht für Kernel-based Virtual Machine. Es ist ein Virtualisierungssubsystem innerhalb des Linux-Kernels.
KVM nutzt Prozessor-Virtualisierungserweiterungen wie Intel VT-x oder AMD-V, damit Gast-Prozessorinstruktionen effizient auf dem physischen Prozessor ausgeführt werden können. Die Linux-Kernel-Dokumentation beschreibt KVM über eine API, die genutzt wird, um virtuelle Maschinen zu erstellen, virtuelle Prozessoren zu konfigurieren und VM-Fähigkeiten zu steuern.
KVM bietet für sich genommen kein vollständiges grafisches Management-System, keine Storage-Plattform und keine Sammlung virtueller Geräte. Es liefert das Kernel-Level-Virtualisierungsfundament.
Der Linux-Kernel übernimmt Scheduling, Speicherverwaltung und Zugriff auf den physischen Prozessor. KVM fügt die Fähigkeit hinzu, isolierte virtuelle Prozessor- und Speicherumgebungen für Gastsysteme zu erstellen.
Deshalb wird KVM manchmal so beschrieben, dass es den Linux-Kernel in einen Hypervisor verwandelt. Diese Beschreibung ist grundsätzlich nützlich, auch wenn eine funktionierende virtuelle Maschine trotzdem ein Userspace-Programm wie QEMU braucht, um den Rest des virtuellen Computers zu erstellen und zu verwalten.
Wie arbeiten QEMU und KVM zusammen?
Wenn Proxmox eine virtuelle Maschine startet, erstellt QEMU den VM-Prozess und seine virtuelle Hardware. QEMU nutzt dann KVM als Beschleuniger, damit die meisten Gast-Prozessorinstruktionen direkt über die Virtualisierungserweiterungen des Host-Prozessors laufen können.
QEMU bleibt für das VM-Modell verantwortlich. KVM beschleunigt die prozessorintensiven Teile des Gastbetriebs.
Eine vereinfachte Abfolge sieht so aus:
Proxmox liest die VM-Konfiguration.
Proxmox startet den passenden QEMU-Prozess.
QEMU reserviert den virtuellen Speicher und erstellt die konfigurierten Geräte.
QEMU verbindet sich mit der Linux-KVM-Schnittstelle.
KVM führt die virtuellen Gast-Prozessoren über Hardware-Virtualisierung aus.
QEMU übernimmt virtuelle Disks, Netzwerkgeräte und Management-Events.
Der Proxmox-Administrationsleitfaden erklärt, dass QEMU und KVM im Proxmox-Kontext oft synonym verwendet werden, weil Proxmox-QEMU-virtuelle-Maschinen normalerweise versuchen, das Linux-KVM-Modul zu nutzen.
Das heißt nicht, dass es dieselbe Software ist. Es bedeutet, dass Administratoren bei normalen Proxmox-VMs selten das eine ohne das andere verwenden.
Wo fügt sich Proxmox ein?
Proxmox VE ist die Management-Schicht über QEMU und KVM. Es integriert KVM-basierte virtuelle Maschinen und LXC-Systemcontainer in eine Plattform mit Weboberfläche, Kommandozeilen-Tools und einer Programmierschnittstelle.
Proxmox verwaltet VM-Konfiguration, Storage, Networking, Backups, Snapshots, Clustering, Migration, Berechtigungen und High Availability.
Wenn ein Administrator in der Proxmox-Oberfläche vier virtuelle Prozessoren, 16 Gigabyte Speicher und einen VirtIO-Netzwerkadapter auswählt, wandelt Proxmox diese Entscheidungen in die Konfiguration um, mit der der QEMU-Prozess gestartet und gesteuert wird.
Das Kommandozeilen-Tool qm ist Proxmox' QEMU- und KVM-VM-Manager. Die VM-Konfiguration wird von Proxmox gespeichert, während QEMU und KVM die eigentliche Virtualisierungsarbeit übernehmen.
Proxmox ersetzt QEMU oder KVM daher nicht. Es macht sie einfacher zu bedienen, sowohl auf einzelnen Servern als auch in geclusterter Infrastruktur.
Was emuliert QEMU?
QEMU kann Hardware emulieren, die bestehende Betriebssysteme bereits verstehen. Das ist nützlich bei der Installation eines älteren Betriebssystems oder beim Import einer virtuellen Maschine, die noch keine optimierten Virtualisierungstreiber enthält.
QEMU kann beispielsweise vertraute IDE-, SATA- oder emulierte Netzwerk-Controller präsentieren. Der Gast bootet möglicherweise sofort, weil Treiber für diese Geräte bereits im Betriebssystem enthalten sind.
Der Nachteil ist die Performance. Physische Hardware in Software zu emulieren erfordert zusätzliche Verarbeitung, weil jede Geräteinteraktion übersetzt werden muss.
Proxmox unterstützt daher auch paravirtualisierte VirtIO-Geräte. Mit VirtIO weiß der Gast, dass er in einer virtualisierten Umgebung läuft, und kommuniziert mit dem Host über optimierte Schnittstellen statt über vollständig emulierte Hardware. Proxmox empfiehlt VirtIO SCSI für viele migrierte virtuelle Maschinen, weil es effizienten Diskzugriff bietet und Funktionen wie Input/Output-Threads unterstützt.
Windows-Gäste benötigen meist zusätzliche VirtIO-Treiber. Linux-Distributionen enthalten sie häufig bereits.
Übernimmt KVM virtuelle Disks und Netzwerke?
KVM erstellt nicht eigenständig die vollständige virtuelle Disk oder das Netzwerkgerät, das der Gast sieht.
QEMU präsentiert den virtuellen Controller und verbindet ihn mit einer Storage-Ressource oder einem Netzwerk-Backend. Proxmox entscheidet, wo das Disk-Image gespeichert wird und welche Bridge oder welches virtuelle Netzwerk das Interface nutzt.
KVM kann bestimmte Teile der Gerätebehandlung über Kernel-Komponenten beschleunigen, aber QEMU bleibt der Virtual Machine Monitor, der das Gerätemodell koordiniert.
Diese Trennung erklärt, warum ein QEMU-bezogener Fehler eine Disk, einen virtuellen Netzwerkadapter oder ein durchgereichtes PCI-Gerät betreffen kann, während ein KVM-bezogener Fehler eher auf Prozessorvirtualisierung, Kernel-Module oder nicht unterstützte CPU-Funktionen hindeutet.
Reduziert QEMU die Proxmox-Performance?
QEMU selbst bedeutet nicht, dass jede Prozessorinstruktion langsam emuliert wird.
Wenn KVM-Beschleunigung aktiv ist, können Gast-Prozessorinstruktionen über Hardware-Virtualisierung laufen. QEMU stellt vor allem die umgebende VM- und Geräteumgebung bereit.
Performance-Unterschiede stammen eher von der gewählten virtuellen Hardware, dem Storage-Design, dem Prozessormodell und dem Workload.
Die Nutzung emulierter Disk- oder Netzwerkgeräte kann mehr Overhead erzeugen als VirtIO-Geräte. Die Wahl eines zu generischen virtuellen Prozessors kann nützliche Host-Prozessor-Funktionen verbergen. Die Wahl des Host-Prozessortyps kann mehr Funktionen freilegen, aber die Live-Migration auf Nodes mit kompatibler Hardware beschränken.
Device-Passthrough kann den Emulations-Overhead weiter reduzieren, indem ein physisches Gerät direkt dem Gast zugewiesen wird. QEMU unterstützt offiziell direkte Geräte-Zuweisung, wenn die Host-Plattform die erforderlichen Fähigkeiten bietet.
Kann Proxmox ohne KVM laufen?
QEMU kann technisch ohne KVM laufen, indem es Software-Emulation nutzt, aber das ist nicht das normale Proxmox-Produktionsmodell.
Ein Proxmox-Server sollte Hardware-Virtualisierung in seiner Firmware aktiviert haben. Wenn Intel VT-x oder AMD-V deaktiviert, nicht verfügbar oder bereits von einer anderen Virtualisierungsschicht kontrolliert wird, kann die KVM-Beschleunigung fehlschlagen.
Verschachtelte Proxmox-Installationen können KVM nutzen, wenn der äußere Hypervisor verschachtelte Virtualisierungserweiterungen bereitstellt. Die Linux-KVM-Dokumentation unterstützt verschachtelte Intel-Virtualisierung, aber die komplette Umgebung muss die erforderlichen Prozessorfähigkeiten unterstützen und bereitstellen.
Ohne KVM-Beschleunigung kann die VM-Performance drastisch niedriger ausfallen. Deshalb ist die Prüfung der Hardware-Virtualisierungsunterstützung einer der ersten Troubleshooting-Schritte beim Aufbau eines Proxmox-Hosts.
Ist QEMU oder KVM wichtiger?
Keine der beiden Komponenten reicht allein für die normale Proxmox-VM-Erfahrung aus.
KVM bietet effizienten Zugriff auf die Virtualisierungsfähigkeiten des Prozessors. QEMU erstellt die virtuelle Hardware und verwaltet den Userspace-VM-Prozess. Proxmox verwandelt diese Technologien in eine betriebsfähige Plattform mit Storage, Networking, Clustering, Backups und zentralem Management.
Einen Proxmox-Gast als KVM-virtuelle-Maschine zu bezeichnen betont die hardwarebeschleunigte Linux-Virtualisierungsschicht. Ihn als QEMU-virtuelle-Maschine zu bezeichnen betont den Prozess und das virtuelle Hardwaremodell.
Beide Bezeichnungen beziehen sich auf denselben praktischen Workload.
Der klarste Weg, den Stack zu verstehen, ist einfach: KVM beschleunigt den virtuellen Prozessor, QEMU baut und betreibt den virtuellen Computer, und Proxmox verwaltet die Infrastruktur drumherum.