Virtualizzazione: qual è la differenza tra KVM e QEMU?


Migliore risposta

KVM è un fork di QEMU. Il codice KVM viene modificato per supportare laccelerazione hardware quando disponibile (stessa architettura per host VM e guest VM)

La maggior parte delle volte, QEMU viene utilizzato per emulare unaltra architettura (ad esempio Emulate ARM / Power arch. Utilizzando il processore x86) . Lho usato per eseguire unimmagine RaspberryPI che gira su ARM nel mio laptop che ha un processore Intel.

Una differenza tra loro è che QEMU gira su un processore senza bisogno di unestensione di virtualizzazione hardware (Intel VT / VT-d, AMD-V) mentre KVM lo utilizza. Le estensioni di virtualizzazione dellhardware ti consentono di accedere direttamente allhardware sulla macchina fisica. Lo svantaggio è che la base di codice KVM non può “emulare unaltra architettura.

Ma quando KVM viene eseguito su una macchina senza HW virt ext., torna a QEMU per eseguire la VM.

Per verificare se il tuo processore supporta hardware virt., per Windows, puoi usare http://www.cpuid.com/cpuz.php o http://www.grc.com/securable.htm e controlla lestensione “vmx” o “svm”. (Questultimo è molto più semplice)

Su Linux, usa

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

È in corso la fusione di entrambi i codebase e li vedremo come un unico progetto in futuro. Ciò renderà KVM obsoleto e unito alla codebase QEMU.

A proposito, quasi tutti i nuovi processori rilasciati da Intel e AMD supportano la virtualizzazione, ma ho visto un laptop Acer con un processore Intel che non supporta la virtualizzazione dellhardware. Inoltre, controlla gentilmente il tuo BIOS se questa estensione è abilitata. Lestensione dellaltro BIOS è disabilitata per impostazione predefinita.

Risposta

Originariamente da Errore del server

KVM :

KVM è un paio di cose: primo è un modulo del kernel Linux (ora incluso nella linea principale) che commuta il processore in un nuovo stato “guest”. Lo stato guest ha il proprio insieme di stati dellanello, ma le istruzioni ring0 privilegiate ricadono sul codice dellhypervisor. Poiché è “una nuova modalità di esecuzione del processore, il codice non deve essere modificato in alcun modo.

A parte il cambio di stato del processore, il modulo kernel gestisce anche alcune parti di basso livello del emulazione, come i registri MMU (usati per gestire la VM) e alcune parti dellhardware emulato PCI.

secondo, KVM è un fork delleseguibile Qemu. Entrambe le squadre lavorano attivamente per mantenere la differenza al minimo e ci sono progressi nel ridurla. Alla fine, lobiettivo è che Qemu funzioni ovunque e, se è disponibile un modulo del kernel KVM, potrebbe essere utilizzato. Ma per il prossimo futuro, il team di Qemu si concentra sullemulazione e la portabilità dellhardware, mentre le persone di KVM si concentrano sul modulo del kernel (a volte spostando piccole parti dellemulazione lì, se ha dimostrato di migliorare le prestazioni) e sullinterfacciamento con il resto del codice dello spazio utente .

Leseguibile kvm-qemu funziona come il normale Qemu: alloca la RAM, carica il codice e invece di ricompilarlo o chiamare KQemu, genera un thread (questo è importante); il thread chiama il modulo del kernel KVM per passare alla modalità ospite e procede con lesecuzione del codice VM. Su unistruzione di privilegio, torna al modulo del kernel KVM, che, se necessario, segnala al thread Qemu di gestire la maggior parte dellemulazione hardware.

Una delle cose belle di questa architettura è che il guest il codice è emulato in un thread posix, che puoi gestire con i normali strumenti Linux. Se vuoi una VM con 2 o 4 core, kvm-qemu crea 2 o 4 thread, ognuno dei quali chiama il modulo del kernel KVM per avviare lesecuzione. La concorrenza (se hai abbastanza core reali) o la pianificazione (se non lo fai) è gestita dal normale scheduler Linux, mantenendo il codice piccolo e le sorprese limitate.

Qemu :

QEmu è un software completo e autonomo. Lo usi per emulare macchine, è molto flessibile e portabile. Principalmente funziona con uno speciale “ricompilatore” che trasforma il codice binario scritto per un dato processore in un altro (ad esempio, per eseguire codice MIPS su un Mac PPC, o ARM in un PC x86).

Per emulare più del semplice processore, Qemu include un lungo elenco di emulatori di periferiche: disco, rete, VGA, PCI, USB, porte seriali / parallele, ecc.

Fonte: Differenza tra KVM e QEMU

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *