documentations:kvmqemu

Différence entre QEMU et KVM

Quelle est la différence entre KVM et QEMU ?




QEMU est un système d'émulation complet. Cet émulateur supporte de nombreux types de processeurs et de matériels. Le CPU est émulé en réalisant une traduction binaire, ce procédé traduit les opcodes natifs d'un modèle de CPU en instructions logicielles compatibles avec le CPU installé sur le système hôte de QEMU. Ces instructions imitent le comportement des instructions originales en retournant des résultats identiques à ceux produits par le CPU original. Les périphériques matériels sont d'une manière assez similaire modélisés en logiciels afin de former un environnement virtuel. Cela permet au final d'exécuter un code original dans une machine totalement virtualisée. Il est par exemple tout à fait possible d'exécuter un code écrit pour un processeur ARM sur un ordinateur équipé d'un processeur Intel. Avec ce système, l'émulation est très lente car il est nécessaire de traduire chaque opcode original en série d'instructions compatibles

Heureusement, QEMU dispose d'un atout majeur car son architecture lui permet de définir de nouveaux type de CPU et de matériels.

KVM est un module noyau qui permet d'utiliser les technologies matérielles de virtualisation Intel ou AMD. De manière très simple, ces technologies permettent à plusieurs systèmes d'exploitation de partager un même CPU physique sans interférence, cela ne concerne pas les périphériques matériels. Les développeurs de KVM ont utiliser les avantages de l'architecture de QEMU en créant simplement un nouveau modèle de CPU dans QEMU. Ce nouveau modèle de CPU possède une logic KVM spécifique où seuls les opcodes nécessitant une translation sont traités par QEMU pendant que les autres sont pris en charge par le module noyau KVM. On fait souvent référence à l'hyperviseur KVM mais il s'agit en réalité d'une combinaison QEMU-KVM.

Ces deux technologies combinées sont incluses dans Proxmox, l'hyperviseur que nous utilisons chez iLinux, détail ici : https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines

  • documentations/kvmqemu.txt
  • Dernière modification: 14/01/2020 08:29
  • par stephane.dufour.ilinux.fr