Verständnis der Beziehung zwischen Qemu und KVM

17

Was ist der Unterschied zwischen KVM und Qemu? Soweit ich weiß, kann letzterer eine "Benutzermodus-Emulation" bereitstellen, was bedeutet, dass eine einzelne ausführbare Datei ausgeführt werden kann, die für eine andere Architektur wie diese erstellt wurde:

# file busybox-sparc 
busybox-sparc: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), statically linked, stripped
# qemu-sparc busybox-sparc ls
Packages_arm     Packages_i386    arm              busybox-armv6l   busybox-i686     busybox-powerpc  busybox-sparc    busybox-x86_64   i386
# 

..und "Computer-Emulation", dh es wird nicht nur eine dynamische Binärübersetzung durchgeführt, sondern die gesamte virtuelle Maschine (Grafikkarte, Soundkarte, Netzwerkkarten, optische Geräte usw.) emuliert. Beispielsweise:

# qemu-system-sparc64 -hda hda.img -cdrom debian-6.0.5-sparc-CD-1.iso -boot d

Ich habe verstanden, dass Qemu nicht weiß, wie man die Vorteile der Hardwarevirtualisierung nutzt (zum Beispiel Intel VT-x- oder AMD-V-Lösungen auf x86-Architekturen). In diesem Fall kann KVM helfen, Qemu mit KVM-Unterstützung zu starten. Stellt KVM jedoch neben dem Zugriff für Emulationsprogramme auf hardwaregestützte Virtualisierung auf bestimmten Hardwarearchitekturen weitere Funktionen bereit? Ist es möglich, eine ganze virtuelle Maschine (CPU, Grafikkarte, E / A-Geräte usw.) nur mit KVM zu erstellen? Wenn ja, mit welchen Programmen sollte diese virtuelle Maschine erstellt und gesteuert werden?

Martin
quelle
2
Mögliches Duplikat des Unterschieds zwischen KVM und QEMU

Antworten:

16

Sie haben teilweise recht. Sei einfach vorsichtig, da es Verwirrung geben kann. KVM ist der Name der Virtualisierungstechnologie im Linux-Kernel.

KVM wird auch häufig als Name eines Forks (genauer gesagt als qemu-kvm) des QEMU-Projekts verwendet, das die Hardwarevirtualisierung besser unterstützt . Diese Behauptung wurde vom QEMU-Projekt bestätigt , aber ab Version 1.3 von QEMU wurden alle Funktionen von qemu-kvm zusammengeführt .

Die Download-Seite für das KVM-Projekt erklärt diesen Unterschied ebenfalls sehr gut.

Eine weitere Sache, die Sie beachten sollten, ist, dass die Vorteile von qemu-kvm in den neueren Versionen von qemu zusammengeführt werden. Ich hoffe, dass eines Tages der Unterschied zwischen den beiden verschwinden wird.

Chutz
quelle
KVM "die Virtualisierungstechnologie im Linux-Kernel" und qemu-kvm sind also zwei verschiedene Dinge?
dtmland
@dtmland Na ja. qemu-kvm ist eine Userland-Software, die KVM im Kernel verwendet.
Chutz
6

KVM ist ein Kernelmodul, mit dem durch virtualisierungsspezifische CPU-Erweiterungen eine VM-CPU-Anforderung direkt in der Host-CPU und im RAM mit minimalem Overhead geplant werden kann. QEMU stellt den Rest der emulierten Hardware bereit, da eine Maschine, selbst eine virtuelle, nicht nur eine CPU ist - es handelt sich um eine Menge zusätzlicher Hardware. QEMU kann auch die CPU emulieren, aber im Vergleich zu KVM ist es schmerzhaft langsam, das Beste aus beiden Welten herauszuholen

dyasny
quelle