Nejlepší odpověď
KVM je vidlice QEMU. Kódovaný na základě KVM je upraven tak, aby podporoval hardwarovou akceleraci, pokud je k dispozici (stejná architektura pro hostitelský i hostující VM).
Většina, pokud je čas, používá QEMU k emulaci jiné architektury (např. Emulace ARM / Power arch. Pomocí procesoru x86) . Používal jsem to ke spuštění obrazu RaspberryPI, který běží na ARM v mém notebooku, který má procesor Intel.
Jeden rozdíl mezi nimi spočívá v tom, že QEMU běží na procesoru bez nutnosti rozšíření o virtualizaci hardwaru (Intel VT / VT-d, AMD-V), zatímco jej KVM používá. Rozšíření virtualizace hardwaru vám umožňují přímý přístup k hardwaru na fyzickém stroji. Nevýhodou je, že kódová základna KVM nemůže emulovat jinou architekturu.
Ale když je KVM spuštěno na stroji bez HW virt. ext., přepne se zpět na QEMU pro spuštění VM.
Chcete-li zkontrolovat, zda váš procesor podporuje hardwarovou virt., pro Windows můžete použít http://www.cpuid.com/cpuz.php nebo http://www.grc.com/securable.htm a zkontrolujte příponu „vmx“ nebo „svm“. (Ten je mnohem jednodušší)
V systému Linux použijte
- egrep „(vmx | svm)“ / proc / cpuinfo
Sloučení obou codebase je v procesu a my je v budoucnu uvidíme jako jeden projekt. Tím se KVM stane zastaralým a spojí se s QEMU codebase.
Mimochodem, téměř všechny nové procesory vydané společností Intel a AMD podporuje virtualizaci, ale viděl jsem notebook Acer s procesorem Intel, který nepodporuje virtualizaci hardwaru. Laskavě také zkontrolujte svůj BIOS, pokud je toto rozšíření povoleno. V jiném systému BIOS je rozšíření ve výchozím nastavení deaktivováno.
Odpovědět
Původně z Chyba serveru
KVM :
KVM je pár věcí: první je to modul jádra Linuxu (nyní součástí hlavní řady), který přepíná procesor do nového stavu „host“. Stav hosta má vlastní sadu stavů vyzvánění, ale privilegované instrukce ring0 spadají zpět do kódu hypervisoru. Jelikož se jedná o nový režim provádění procesoru, kód nemusí být žádným způsobem upravován.
Kromě přepínání stavu procesoru zpracovává modul jádra také několik nízkoúrovňových částí emulace, jako jsou registry MMU (používané ke zpracování VM) a některé části hardwaru emulovaného PCI.
zadruhé, KVM je vidlice spustitelného souboru Qemu. Oba týmy aktivně pracují na udržení rozdílu na minimu a v jeho snižování je pokrok. Cílem je, aby Qemu fungovalo kdekoli, a pokud je k dispozici modul jádra KVM, mohl by být použit. Ale v dohledné budoucnosti se tým Qemu zaměřuje na emulaci hardwaru a přenositelnost, zatímco lidé KVM se zaměřují na modul jádra (někdy tam přesouvá malé části emulace, pokud se prokáže, že zlepšuje výkon) a na rozhraní se zbytkem kódu v uživatelském prostoru .
Spustitelný soubor kvm-qemu funguje jako normální Qemu: přiděluje RAM, načte kód a místo jeho opětovné kompilace nebo volání KQemu vytvoří podproces (to je důležité); vlákno volá modul jádra KVM, aby se přepnul do režimu hosta, a pokračuje v provádění kódu VM. Na základě instrukce o oprávnění se přepne zpět na modul jádra KVM, který v případě potřeby signalizuje vláknu Qemu, aby zvládlo většinu hardwarové emulace.
Jednou z pěkných věcí této architektury je, že host kód je emulován ve vláknu posix, které můžete spravovat pomocí běžných nástrojů Linuxu. Pokud chcete VM se 2 nebo 4 jádry, kvm-qemu vytvoří 2 nebo 4 vlákna, každý z nich zavolá modul jádra KVM, aby zahájil provádění. Souběžnost (pokud máte dostatek skutečných jader) nebo plánování (pokud nemáte) je spravováno běžným plánovačem Linuxu, což udržuje malý kód a překvapení jsou omezená.
Qemu :
QEmu je vlastní a samostatný software. Používáte jej k emulaci strojů, je velmi flexibilní a přenosný. Funguje to hlavně pomocí speciálního „rekompilátoru“, který transformuje binární kód napsaný pro daný procesor na jiný (řekněme spuštění kódu MIPS na počítači PPC nebo ARM) v počítači x86).
Pro emulaci více než jen procesoru obsahuje Qemu dlouhý seznam periferních emulátorů: disk, síť, VGA, PCI, USB, sériové / paralelní porty atd.
Zdroj: Rozdíl mezi KVM a QEMU