Virtualisatie: wat is het verschil tussen KVM en QEMU?


Beste antwoord

KVM is een afsplitsing van QEMU. Op KVM-codebasis is aangepast om hardwareversnelling te ondersteunen, indien beschikbaar (dezelfde architectuur voor host- en gast-VM)

Meestal wordt QEMU gebruikt om een ​​andere architectuur te emuleren (bijv. ARM emuleren / Power arch. Met een x86-processor) . Ik heb dit gebruikt om een ​​RaspberryPI-image uit te voeren die op ARM draait op mijn laptop met een Intel-processor.

Een verschil tussen hen is dat QEMU op een processor draait zonder dat er hardware-virtualisatie-uitbreiding nodig is (Intel VT / VT-d, AMD-V) terwijl KVM het gebruikt. Hardwarevirtualisatie-extensies geven u rechtstreeks toegang tot de hardware op de fysieke machine. Het nadeel is dat de KVM-codebase “geen andere architectuur kan emuleren.

Maar wanneer KVM wordt uitgevoerd op een machine zonder enige HW virt ext., schakelt het terug naar QEMU om de VM te draaien.

Om te controleren of uw processor hardware ondersteunt, voor Windows, kunt u http://www.cpuid.com/cpuz.php of http://www.grc.com/securable.htm en controleer op de “vmx” of “svm” extensie. (Dit laatste is veel gemakkelijker)

Gebruik op Linux

  • egrep “(vmx | svm)” / proc / cpuinfo

Het samenvoegen van beide codebases is in het proces en we zullen ze in de toekomst als één project zien. Dit zal KVM overbodig maken en worden samengevoegd met de QEMU-codebase.

Trouwens, bijna alle nieuwe processors vrijgegeven door Intel en AMD ondersteunen virtualisatie, maar ik heb een Acer-laptop gezien met een Intel-processor die geen hardwarevirtualisatie ondersteunt. Controleer ook uw BIOS als deze extensie is ingeschakeld. Bij een ander BIOS is de extensie standaard uitgeschakeld.

Antwoord

Oorspronkelijk afkomstig van Serverfout

KVM :

KVM is een paar dingen: ten eerste het is een Linux-kernelmodule (nu opgenomen in de hoofdlijn) die de processor in een nieuwe “gast” -status schakelt. De gaststatus heeft zijn eigen set ringstatussen, maar geprivilegieerde ring0-instructies vallen terug op de hypervisorcode. Omdat het een nieuwe processormodus is, hoeft de code op geen enkele manier te worden gewijzigd.

Afgezien van het wisselen van de processorstatus, behandelt de kernelmodule ook een paar low-level delen van de emulatie, zoals de MMU-registers (gebruikt om VM te verwerken) en sommige delen van de PCI-geëmuleerde hardware.

Ten tweede is KVM een vork van het Qemu-uitvoerbare bestand. Beide teams werken actief om het verschil tot een minimum te beperken, en er wordt vooruitgang geboekt bij het verkleinen ervan. Uiteindelijk is het de bedoeling dat Qemu overal werkt, en als er een KVM-kernelmodule beschikbaar is, kan deze worden gebruikt. Maar voor de nabije toekomst concentreert het Qemu-team zich op hardware-emulatie en portabiliteit, terwijl KVM-mensen zich concentreren op de kernelmodule (soms kleine delen van de emulatie daarheen verplaatsen, als bewezen is dat het de prestaties verbetert), en de interface met de rest van de gebruikersruimtecode .

Het uitvoerbare bestand kvm-qemu werkt als normaal Qemu: wijst RAM toe, laadt de code, en in plaats van het opnieuw te compileren of KQemu aan te roepen, wordt er een thread uitgezet (dit is belangrijk); de thread roept de KVM-kernelmodule op om over te schakelen naar de gastmodus en gaat verder met het uitvoeren van de VM-code. Met een privilege-instructie schakelt het terug naar de KVM-kernelmodule, die, indien nodig, de Qemu-thread signaleert om de meeste hardware-emulatie af te handelen.

Een van de leuke dingen van deze architectuur is dat de gast code wordt geëmuleerd in een posix-thread, die u kunt beheren met normale Linux-tools. Als je een VM met 2 of 4 cores wilt, maakt kvm-qemu 2 of 4 threads aan, die elk de KVM-kernelmodule aanroepen om te beginnen met uitvoeren. De gelijktijdigheid (als je genoeg echte kernen hebt) of planning (als je dat niet doet) wordt beheerd door de normale Linux-planner, waardoor de code klein blijft en verrassingen beperkt blijven.

Qemu :

QEmu is een complete en zelfstandige software op zichzelf. Je gebruikt het om machines te emuleren, het is erg flexibel en draagbaar. Het werkt voornamelijk door een speciale “recompiler” die binaire code die voor een bepaalde processor is geschreven, omzet in een andere (bijvoorbeeld om MIPS-code uit te voeren op een PPC-mac of ARM in een x86 pc).

Om meer te emuleren dan alleen de processor, bevat Qemu een lange lijst van randapparatuuremulators: schijf, netwerk, VGA, PCI, USB, seriële / parallelle poorten, enz.

Bron: Verschil tussen KVM en QEMU

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *