Virtualisering: Hvad er forskellen mellem KVM og QEMU?


Bedste svar

KVM er en fork af QEMU. KVM codebased er modificeret til at understøtte hardwareacceleration, når den er tilgængelig (samme arkitektur for værts- og gæstevm-VM)

Mest hvis det er tilfældet, bruges QEMU til at efterligne en anden arkitektur (f.eks. Efterlig ARM / Power arch. Ved hjælp af x86-processor) . Jeg har brugt dette til at køre et RaspberryPI-billede, der kører på ARM i min bærbare computer, der har en Intel-processor.

En forskel mellem dem er, at QEMU kører på en processor uden behov for hardware virtualiseringsudvidelse (Intel VT / VT-d, AMD-V) mens KVM bruger det. Hardware-virtualiseringsudvidelser giver dig adgang til hardwaren på den fysiske maskine direkte. Ulempen er, at KVM-codebase ikke kan efterligne en anden arkitektur.

Men når KVM køres på en maskine uden HW virt ext., skifter den tilbage til QEMU for at køre VM.

For at kontrollere om din processor understøtter hardwaretilpasning til Windows, kan du bruge http://www.cpuid.com/cpuz.php eller http://www.grc.com/securable.htm og søg efter udvidelsen “vmx” eller “svm”. (Sidstnævnte er meget lettere)

På Linux skal du bruge

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

Fletning af begge codebase er i processen, og vi vil se dem som et projekt i fremtiden. Dette vil gøre KVM forældet og fusioneret til QEMU codebase.

Forresten, næsten alle nye processorer frigivet af Intel og AMD understøtter virtualisering, men jeg har set en Acer-bærbar computer med en Intel-processor, der ikke understøtter hardwarevirtualisering. Kontroller også din BIOS, hvis denne udvidelse er aktiveret. Andet BIOS har udvidelsen som standard deaktiveret.

Svar

Oprindeligt fra Serverfejl

KVM :

KVM er et par ting: først det er et Linux-kernemodul (nu inkluderet i hovedlinjen), der skifter processoren til en ny “gæst” -tilstand. Gæstetilstanden har sit eget sæt ringetilstande, men privilegerede ring0-instruktioner falder tilbage til hypervisor-koden. Da det er en ny processorudførelsestilstand, behøver koden ikke at blive ændret på nogen måde.

Bortset fra processortilstandsskiftet håndterer kernemodulet også nogle få dele på lavt niveau af emulering, ligesom MMU-registre (bruges til at håndtere VM) og nogle dele af PCI-emuleret hardware.

For det andet er KVM en fork af Qemu-eksekverbar. Begge hold arbejder aktivt for at holde forskellen på et minimum, og der er fremskridt med at reducere den. Til sidst er målet, at Qemu skal arbejde hvor som helst, og hvis et KVM-kernemodul er tilgængeligt, kan det bruges. Men i en overskuelig fremtid fokuserer Qemu-teamet på hardwareemulering og bærbarhed, mens KVM-folk fokuserer på kernemodulet (nogle gange flytter små dele af emuleringen der, hvis det viser sig at forbedre ydeevnen) og grænseflade med resten af ​​brugerrumskoden .

Den eksekverbare kvm-qemu fungerer som normal Qemu: tildeler RAM, indlæser koden, og i stedet for at kompilere den igen eller kalde KQemu gyder den en tråd (dette er vigtigt); tråden kalder KVM-kernemodulet for at skifte til gæstetilstand og fortsætter med at udføre VM-koden. På en privilegieinstruktion skifter det tilbage til KVM-kernemodulet, som om nødvendigt signalerer Qemu-tråden til at håndtere det meste af hardwareemuleringen.

En af de gode ting ved denne arkitektur er, at gæsten kode emuleres i en posix-tråd, som du kan administrere med normale Linux-værktøjer. Hvis du vil have en VM med 2 eller 4 kerner, opretter kvm-qemu 2 eller 4 tråde, hver af dem kalder KVM-kernemodulet for at starte udførelsen. Samtidigheden (hvis du har nok rigtige kerner) eller planlægning (hvis du ikke har det) administreres af den normale Linux-planlægger, hvilket holder koden lille og overraskelser begrænset.

Qemu :

QEmu er en komplet og uafhængig software alene. Du bruger det til at emulere maskiner, det er meget fleksibelt og bærbart. Det fungerer primært af en speciel “recompiler”, der omdanner binær kode skrevet til en given processor til en anden (for eksempel at køre MIPS-kode på en PPC mac eller ARM i en x86-pc).

For at emulere mere end bare processoren inkluderer Qemu en lang liste med perifere emulatorer: disk, netværk, VGA, PCI, USB, serielle / parallelle porte osv.

Kilde: Forskel mellem KVM og QEMU

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *