Meilleure réponse
KVM est un fork de QEMU. Le code KVM est modifié pour prendre en charge laccélération matérielle lorsquelle est disponible (même architecture pour lhôte et la VM invitée)
La plupart du temps, QEMU est utilisé pour émuler une autre architecture (par exemple, émuler ARM / Power arch. En utilisant un processeur x86) . Jutilise ceci pour exécuter une image RaspberryPI qui fonctionne sur ARM dans mon ordinateur portable équipé dun processeur Intel.
Une différence entre eux est que QEMU fonctionne sur un processeur sans avoir besoin dextension de virtualisation matérielle (Intel VT / VT-d, AMD-V) alors que KVM lutilise. Les extensions de virtualisation matérielle vous permettent daccéder directement au matériel sur la machine physique. Linconvénient est que la base de code KVM ne peut pas émuler une autre architecture.
Mais lorsque KVM est exécuté sur une machine sans HW virt ext., il bascule vers QEMU pour exécuter la VM.
Pour vérifier si votre processeur prend en charge le matériel virt., pour Windows, vous pouvez utiliser http://www.cpuid.com/cpuz.php ou http://www.grc.com/securable.htm et recherchez lextension « vmx » ou « svm ». (Ce dernier est beaucoup plus simple)
Sous Linux, utilisez
- egrep « (vmx | svm) » / proc / cpuinfo
La fusion des deux bases de code est en cours et nous les verrons comme un seul projet dans le futur. Cela rendra KVM obsolète et fusionné avec la base de code QEMU.
En passant, presque tous les nouveaux processeurs publiés par Intel et AMD prennent en charge la virtualisation, mais jai vu un ordinateur portable Acer avec un processeur Intel qui ne prend pas en charge la virtualisation matérielle. Veuillez également vérifier votre BIOS si cette extension est activée. Dans un autre BIOS, lextension est désactivée par défaut.
Réponse
Originaire de Erreur du serveur
KVM :
KVM est deux choses: dabord cest un module du noyau Linux (maintenant inclus dans la ligne principale) qui fait basculer le processeur dans un nouvel état « invité ». Létat invité a son propre ensemble détats danneau, mais les instructions ring0 privilégiées reviennent au code de lhyperviseur. Puisquil « sagit dun nouveau mode dexécution du processeur, le code ne doit en aucun cas être modifié.
En dehors de la commutation détat du processeur, le module noyau gère également quelques parties de bas niveau du lémulation, comme les registres MMU (utilisés pour gérer la VM) et certaines parties du matériel émulé PCI.
Ensuite, KVM est un fork de lexécutable Qemu. Les deux équipes travaillent activement pour maintenir la différence au minimum et des progrès ont été réalisés pour la réduire. Finalement, lobjectif est que Qemu fonctionne nimporte où, et si un module de noyau KVM est disponible, il pourrait être utilisé. Mais dans un avenir prévisible, léquipe de Qemu se concentre sur lémulation matérielle et la portabilité, tandis que les gens de KVM se concentrent sur le module du noyau (y déplaçant parfois de petites parties de lémulation, sil est prouvé quil améliore les performances), et linterfaçage avec le reste du code de lespace utilisateur .
Lexécutable kvm-qemu fonctionne comme Qemu normal: alloue de la RAM, charge le code et au lieu de le recompiler, ou dappeler KQemu, il génère un thread (cest important); le thread appelle le module du noyau KVM pour passer en mode invité et procède à lexécution du code VM. Sur une instruction de privilège, il revient au module du noyau KVM, qui, si nécessaire, signale au thread Qemu de gérer la plupart de lémulation matérielle.
Une des bonnes choses de cette architecture est que linvité le code est émulé dans un thread posix, que vous pouvez gérer avec des outils Linux normaux. Si vous voulez une VM avec 2 ou 4 cœurs, kvm-qemu crée 2 ou 4 threads, chacun deux appelle le module du noyau KVM pour commencer à sexécuter. La concurrence (si vous avez suffisamment de cœurs réels) ou la planification (si vous ne le faites pas) est gérée par le programmateur Linux normal, ce qui permet de limiter le code et les surprises.
Qemu :
QEmu est un logiciel complet et autonome en lui-même. Vous lutilisez pour émuler des machines, cest très flexible et portable. Principalement, il fonctionne par un « recompilateur » spécial qui transforme le code binaire écrit pour un processeur donné en un autre (par exemple, pour exécuter du code MIPS sur un mac PPC, ou ARM dans un PC x86).
Pour émuler plus que juste le processeur, Qemu inclut une longue liste démulateurs de périphériques: disque, réseau, VGA, PCI, USB, ports série / parallèle, etc.
Source: Différence entre KVM et QEMU