Article de reference

Machine virtuelle basée sur le noyau

La machine virtuelle basée sur le noyau ( KVM ) est un module de virtualisation libre et open source du noyau Linux qui permet à ce dernier de fonctionner comme un hyperviseur ....

de virtualisation libre et open source du noyau Linux qui permet à ce dernier de fonctionner comme un hyperviseur . Elle a été intégrée au noyau Linux principal dans la version 2.6.20, publiée le 5 février 2007. KVM requiert un processeur doté d'extensions de virtualisation matérielle , telles qu'Intel VT ou AMD-V . KVM a également été portée sur d'autres systèmes d'exploitation comme FreeBSD et illumos sous forme de modules noyau chargeables.

KVM a été initialement conçu pour les processeurs x86, mais a depuis été porté sur z/Architecture , PowerPC , IA-64 , et ARM . Le portage IA-64 a été supprimé en 2014.

KVM prend en charge la virtualisation matérielle pour une grande variété de systèmes d'exploitation invités, notamment BSD , Solaris , Windows , Haiku , ReactOS , Plan 9 , AROS , macOS et même d'autres systèmes Linux. De plus, Android 2.2, GNU/Hurd ( Debian K16), Minix 3.1.2a, Solaris 10 U3 et Darwin 8.0.1, ainsi que d'autres systèmes d'exploitation et certaines versions plus récentes de ceux mentionnés, sont compatibles, avec certaines limitations.

De plus, KVM fournit une prise en charge de la paravirtualisation pour les invités Linux, OpenBSD , FreeBSD, NetBSD , Plan 9 et Windows utilisant l' API VirtIO . Cela inclut une carte Ethernet paravirtuelle , un contrôleur d'E/S disque, un pilote de ballon et une interface graphique VGA utilisant des pilotes SPICE ou VMware .

Avi Kivity a commencé le développement de KVM au milieu de l'année 2006 chez Qumranet , une start-up technologique qui a été acquise par Red Hat en 2008.

KVM a fait surface en octobre 2006 et a été intégré à la branche principale du noyau Linux dans la version 2.6.20, publiée le 5 février 2007.

KVM est maintenu par Paolo Bonzini.

Internes

Présentation générale de l'environnement de virtualisation KVM/QEMU

KVM fournit une abstraction des périphériques, mais pas d'émulation de processeur. Il expose l' interface /dev/kvm , qu'un hôte en mode utilisateur peut ensuite utiliser pour :

  • Configurez l'espace d'adressage de la machine virtuelle invitée. L'hôte doit également fournir une image de firmware (généralement un BIOS personnalisé lors de l'émulation de PC) que l'invité pourra utiliser pour démarrer son système d'exploitation principal.
  • Fournir au client des E/S simulées.
  • Associer l'affichage vidéo de l'invité à l'hôte du système.

À l'origine, une version dérivée de QEMU permettait de lancer des machines virtuelles et de gérer l'émulation matérielle non prise en charge par le noyau. Cette fonctionnalité a finalement été intégrée au projet principal. De nombreux moniteurs de machines virtuelles (VMM) exploitent désormais l'interface KVM, notamment kvmtool, crosvm et Firecracker , ainsi que de nombreux VMM spécialisés développés avec des frameworks tels que rust-vmm.

En interne, KVM utilise SeaBIOS comme implémentation open source d'un BIOS x86 16 bits .

Caractéristiques

KVM prend en charge les vCPU remplaçables à chaud , la gestion dynamique de la mémoire et la migration à chaud depuis février 2007 Il réduit également l'impact des charges de travail intensives en écriture mémoire sur le processus de migration

Matériel émulé

KVM lui-même émule très peu de matériel, préférant s'appuyer sur une application cliente de niveau supérieur telle que QEMU , crosvm ou Firecracker pour l'émulation des périphériques.

KVM fournit les périphériques émulés suivants :

Outils de gestion graphique

libvirt prend en charge KVM
  • Kimchi outil de gestion de virtualisation web pour KVMGestionnaire de machines virtuelles prend en charge la création, la modification, le démarrage et l'arrêt de machines virtuelles basées sur KVM, ainsi que la migration à chaud ou à froid par glisser-déposer de machines virtuelles entre hôtes.Proxmox Virtual Environment est une solution de gestion de virtualisation open source incluant KVM et LXC . Elle propose un installateur bare-metal, une interface graphique de gestion à distance via le web, une pile de clusters haute disponibilité, un stockage unifié, un réseau flexible et un support commercial optionnel.
  • OpenQRM plateforme de gestion pour les infrastructures de centres de données hétérogènesGNOME Boxes Interface GNOME pour la gestion des machines virtuelles libvirt sous LinuxoVirt outil de gestion de virtualisation open source pour KVM basé sur libvirt

Licence

Le composant en mode noyau de KVM fait partie du noyau Linux , lui-même sous licence GNU General Public License, version 2.