kvm: Virtualisation
KVM (Kernel-based Virtual Machine) : la virtualisation dans le noyau Linux
KVM, abréviation de Kernel-based Virtual Machine, est une technologie de virtualisation entièrement intégrée au noyau Linux. Elle permet aux utilisateurs de transformer Linux en un hyperviseur de type 1 : un système qui tourne directement sur le matériel et gère des machines virtuelles (VM) sans dépendre d'un système d'exploitation séparé. KVM utilise la puissance du noyau pour faire tourner plusieurs environnements virtuels isolés, chacun avec son propre système d'exploitation, réseau, stockage et ressources CPU. C'est l'une des solutions de virtualisation les plus utilisées dans le monde des serveurs Linux, des datacenters et de l'infrastructure cloud.
KVM n'est pas un logiciel autonome, mais un composant du noyau Linux lui-même. Cela signifie qu'il ne nécessite pas de couche séparée au-dessus du système d'exploitation — contrairement aux hyperviseurs de type 2 comme VirtualBox ou VMware Workstation. À la place, KVM est activé via des modules du noyau qui ajoutent la fonctionnalité à un noyau Linux déjà en cours d'exécution. Le module principal s'appelle kvm.ko, et selon le processeur, kvm-intel.ko (pour les processeurs Intel avec VT-x) ou kvm-amd.ko (pour les processeurs AMD avec AMD-V) sont également chargés. Sans ces modules, KVM ne peut pas fonctionner, et sans prise en charge de la virtualisation matérielle par le CPU, KVM n'est pas utilisable.
L'histoire de KVM commence en 2005, avec la création de Qumranet, une startup israélienne spécialisée dans la technologie de virtualisation. L'entreprise a développé KVM comme une alternative open source aux hyperviseurs existants, souvent commerciaux. La technologie a été conçue pour être simple, efficace et étroitement liée au noyau Linux. Le 19 octobre 2006, Avi Kivity, l'un des développeurs de Qumranet, a annoncé la première version de KVM via la Linux kernel mailing list (LKML). Ce fut le point de départ de l'intégration dans le noyau Linux officiel. Le patchset de KVM a rapidement été pris au sérieux par la communauté du noyau en raison de son architecture propre et de son utilisation efficace des mécanismes existants du noyau.
En décembre 2006, le patchset de KVM a été accepté dans le noyau Linux upstream, ce qui signifie que le code est officiellement devenu partie de la branche de développement du noyau. Ce fut une étape cruciale : elle a donné à KVM un accès direct à la large communauté de développeurs, testeurs et utilisateurs du noyau. La première version officielle du noyau contenant KVM était Linux 2.6.20, publiée en février 2007. À partir de ce moment, KVM était disponible pour quiconque utilisait un noyau Linux récent, sans qu'il soit nécessaire d'installer des logiciels ou des patches supplémentaires.
KVM utilise les capacités existantes du noyau Linux, telles que la gestion de la mémoire, l'ordonnancement des processus et la pile réseau, pour prendre en charge les machines virtuelles. Chaque machine virtuelle est considérée comme un processus Linux ordinaire, planifié par le noyau et ayant accès au matériel via les modules KVM. Ce modèle assure une grande efficacité et une bonne scalabilité. KVM prend en charge les systèmes d'exploitation invités 32 bits et 64 bits, y compris les distributions Linux, les variantes BSD et même Microsoft Windows. Les performances sont souvent proches de celles du matériel natif, surtout lorsque l'accélération matérielle est utilisée.
Une condition importante pour l'utilisation de KVM est la prise en charge de la virtualisation matérielle. Le CPU hôte doit disposer de technologies telles que Intel VT-x ou AMD-V. Sans cette prise en charge, KVM ne peut pas être chargé, ou fonctionne dans un mode limité avec des performances beaucoup plus faibles. Les processeurs modernes datant environ de 2006-2007 prennent généralement en charge ces fonctions, mais dans des environnements plus anciens ou virtualisés (comme certains hébergeurs VPS), cela peut manquer. Les utilisateurs peuvent vérifier si leur système prend en charge KVM via des outils comme `kvm-ok` (qui fait partie du paquet `cpu-checker` sur Ubuntu) ou en vérifiant si les flags CPU `vmx` (Intel) ou `svm` (AMD) sont présents dans `/proc/cpuinfo`.
KVM lui-même n'offre pas d'interface utilisateur ni de fonctions de gestion. C'est un moteur de virtualisation de bas niveau. Pour gérer les machines virtuelles, on utilise donc souvent des utilitaires comme QEMU, libvirt, virt-manager ou virsh. QEMU émule le matériel et travaille avec KVM pour offrir une virtualisation rapide : KVM assure l'accélération du CPU, tandis que QEMU émule le reste du matériel (cartes réseau, disques, contrôleurs USB, etc.). Libvirt est une API et un framework de gestion de plus haut niveau qui donne accès à KVM, QEMU et d'autres hyperviseurs via une interface uniforme. Virt-manager est un outil graphique qui utilise libvirt pour gérer visuellement les machines virtuelles, de manière comparable à VMware vSphere ou VirtualBox.
L'intégration de KVM dans le noyau Linux a conduit à une large adoption dans les environnements open source et commerciaux. Red Hat, l'un des plus grands acteurs du monde de Linux en entreprise, a racheté Qumranet en 2008 pour 107 millions de dollars. Ce rachat était un signe de l'importance stratégique de KVM. Red Hat a développé KVM comme base de ses solutions de virtualisation et de cloud, telles que Red Hat Enterprise Virtualization (RHEV) et plus tard OpenShift Virtualization. D'autres grandes entreprises, dont IBM, Google et Amazon, utilisent KVM dans leur infrastructure cloud. Amazon Web Services (AWS) fait par exemple tourner une grande partie de ses instances EC2 sur KVM.
L'un des points forts de KVM est qu'il s'agit d'un logiciel libre et open source, publié sous la licence du noyau Linux (GPL). Cela signifie que tout le monde peut utiliser, modifier et améliorer le code. Le développement se fait de manière transparente via la LKML et les dépôts officiels du noyau. La documentation du noyau Linux considère KVM comme une partie intégrante de l'infrastructure de virtualisation Linux, aux côtés d'autres technologies comme virtio (pour l'I/O haute performance) et vhost (pour l'accélération réseau).
KVM est utilisé dans un large éventail d'applications. Dans les datacenters, il est connu pour sa stabilité, sa sécurité et sa scalabilité. Il convient pour faire tourner des centaines de machines virtuelles sur un seul serveur physique. Dans les environnements cloud, KVM constitue la base de plateformes Infrastructure-as-a-Service (IaaS) comme OpenStack, où chaque machine virtuelle est provisionnée via KVM via libvirt. KVM est également populaire dans les environnements de développement et de test, car il est facile à automatiser avec des outils comme Ansible, Terraform ou Vagrant.
Il existe différents outils qui améliorent l'expérience avec KVM. Il y a par exemple Boxes, une application de virtualisation simple pour le bureau qui utilise libvirt et KVM. Elle permet aux utilisateurs de mettre rapidement en place une machine virtuelle, par exemple pour essayer une autre distribution Linux ou faire tourner Windows. Snowglobe est un autre exemple : une visionneuse de virtualisation qui communique avec des instances QEMU via DBus et prend en charge le clavier, la souris et le multi-touch. Ces outils montrent que KVM n'est pas destiné uniquement aux serveurs, mais qu'il est aussi utilisable sur des ordinateurs de bureau et des portables.
Malgré sa puissance et sa flexibilité, KVM exige tout de même certaines connaissances de Linux et de la virtualisation. La configuration des réseaux, du stockage et de la sécurité demande une compréhension tant du noyau que des outils de gestion. Pour les débutants, les outils graphiques peuvent aider, mais pour les environnements de production, des connaissances approfondies sont indispensables. Heureusement, il existe une grande communauté, une documentation étendue et de nombreux tutoriels disponibles.
En résumé, KVM est l'une des solutions de virtualisation les plus importantes dans le monde informatique moderne. Il combine la puissance du noyau Linux avec l'efficacité de l'accélération matérielle pour offrir un hyperviseur robuste, scalable et ouvert. Depuis sa première annonce en 2006 jusqu'à son intégration dans le noyau 2.6.20 en 2007, et le rachat par Red Hat en 2008, KVM est devenu une pierre angulaire de la virtualisation cloud et serveur. Il reste un exemple vivant de la manière dont l'innovation open source peut mener à des standards industriels.