zrozumienie relacji między Qemu a KVM

17

Jaka jest różnica między KVM a Qemu? Jak rozumiem, ten ostatni jest w stanie zapewnić „emulację trybu użytkownika”, co oznacza, że ​​można uruchomić jeden plik wykonywalny zbudowany dla innej architektury, takiej jak ta:

# 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
# 

... i „emulacja komputera”, co oznacza, że ​​wykonywane jest nie tylko dynamiczne tłumaczenie binarne, ale także emulowana jest cała maszyna wirtualna (karta graficzna, karta dźwiękowa, karty sieciowe, urządzenia optyczne itp.). Na przykład:

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

Jak zrozumiałem, Qemu nie wie, jak wykorzystać wirtualizację sprzętową (na przykład rozwiązania Intel VT-x lub AMD-V w architekturze x86) i w tym przypadku KVM może pomóc - można uruchomić Qemu ze wsparciem KVM. Czy KVM zapewnia jednak inne funkcje oprócz dostępu programów emulujących do wirtualizacji wspomaganej sprzętowo na określonych architekturach sprzętowych? Czy można utworzyć całą maszynę wirtualną (procesor, kartę graficzną, urządzenia we / wy itp.) Przy użyciu tylko KVM? Jeśli tak, to jakich programów należy użyć do tworzenia i kontrolowania tej maszyny wirtualnej?

Jaskółka oknówka
źródło
2
możliwy duplikat różnicy między KVM a QEMU

Odpowiedzi:

16

Częściowo masz rację. Bądź ostrożny, ponieważ mogą wystąpić pewne nieporozumienia. KVM to nazwa technologii wirtualizacji w jądrze Linuksa.

KVM jest również powszechnie używany jako nazwa rozwidlenia (dokładniejszą nazwą byłoby qemu-kvm) projektu QEMU z lepszą obsługą wirtualizacji sprzętowej . Twierdzenie to zostało potwierdzone przez projekt QEMU , ale od wersji 1.3 QEMU wszystkie funkcje qemu-kvm zostały połączone .

Strona pobierania dla projektu KVM wyjaśnia tę różnicę całkiem dobrze także.

Należy jeszcze pamiętać, że zalety qemu-kvm są łączone w nowszych wersjach qemu, więc mam nadzieję, że pewnego dnia różnica między nimi zniknie.

chutz
źródło
Więc KVM „technologia wirtualizacji w jądrze Linuksa” i qemu-kvm to dwie różne rzeczy?
dtmland
@dtmland Cóż, tak. qemu-kvm to oprogramowanie użytkownika, które używa KVM w jądrze.
chutz
6

KVM to moduł jądra, który umożliwia, poprzez rozszerzenia specyficzne dla wirtualizacji, planowanie harmonogramu żądań CPU VMs bezpośrednio w CPU hosta i pamięci RAM, przy minimalnym nakładzie pracy. QEMU zapewnia resztę emulowanego sprzętu, ponieważ maszyna, nawet wirtualna, to nie tylko procesor - to dużo dodatkowego sprzętu. QEMU może również emulować procesor, ale w porównaniu do sposobu, w jaki robi to KVM, jest boleśnie powolny, a zatem łączy się, aby uzyskać to, co najlepsze z obu światów

dyasny
źródło