KVM : la virtualisation dans le noyau de Linux

Dans un contexte d’entreprise et d’utilisation de serveurs professionnels, la virtualisation est devenue un élément indispensable. Il est donc possible de juxtaposer plusieurs systèmes virtuels invités sur une seule machine physique. Voici les principaux avantages d’un tel procédé :

  • Sans ajouter de matériel supplémentaire, on peut dissocier proprement les systèmes en fonction de leurs tâches, par exemple : serveur messagerie, serveur fichiers et serveur applications.
  • Un système invité peut en quelque sorte être « gelé » en appuyant sur une touche pour être ensuite restauré aussi simplement.
  • La migration vers un nouveau matériel se fait en peu de temps.
  • Les systèmes invités sont parfaitement évolutifs, ce qui leur permet d’être plus réactifs sous une charge accrue.
  • Les différents systèmes invités sont accueillis sur une base matérielle commune. On évite ainsi tous les conflits liés à des défauts de pilotes.

Il est vrai que le système d’exploitation Linux est plutôt une « bête rare » sur les ordinateurs des particuliers. En revanche, dans le domaine des serveurs, Linux est solidement établi. Dans ce contexte, Linux joue un rôle essentiel comme base de virtualisation.

Offres spéciales Black Friday

Profitez d'offres exclusives, valables uniquement du Black Friday au Cyber Monday.

Hébergement Web
Sites Internet
WordPress

Qu’est-ce que KVM ?

KVM (Kernel-based Virtual Machine), présenté au départ par la société Qumranet en 2006, a déjà été intégré officiellement dans le noyau Linux 2.6.20 début 2007. L’année suivante, Qumranet était rachetée par RedHat, distributeur Linux. Pour assurer la suite de l’évolution de cette technologie, RedHat a fondé l’Open Virtualization Alliance (OVA) en association avec IBM. Des entreprises comme Suse, Intel et HP se sont également jointes au projet.

KVM est étroitement lié au logiciel d’émulation QEMU. Celui-ci offre la plupart des fonctions de virtualisation du matériel, alors que Linux-KVM gère plutôt l’administration des ressources du système invité. C’est la raison pour laquelle on trouve souvent la désignation KVM/QEMU. Comme KVM est un élément intégré à Linux, cette solution de virtualisation ne peut pas être utilisée sur des ordinateurs équipés de Windows. En revanche, Windows pourra être géré comme système invité, au même titre que la plupart des systèmes d’exploitation unixoïdes, tels que Linux, Solaris et BSD. Par défaut, KVM est inclus dans la plupart des distributions Linux, mais ne doit pas nécessairement être activé.

Le fonctionnement de KVM en détail

Pour comprendre le fonctionnement du Kernel-based Virtual Machine, commençons par une digression dans les bases de la virtualisation. La virtualisation consiste à exécuter sur une machine hôte (Host) un ou plusieurs système(s) d’exploitation (systèmes invités). Pour cela, le matériel mis à disposition du système invité est simulé de manière logicielle (émulation). Il peut aussi être géré au moyen d’un hyperviseur, qui permet ainsi de partager de réelles ressources matérielles. On entend par hyperviseur une couche d’administration et d’abstraction, implantée entre le matériel réel et le matériel virtuel. En fonction du type de virtualisation, il est donc nécessaire de transférer les requêtes vers le matériel réel. Il est également possible de n’attribuer que les actions requises, par exemple un calcul dans le processeur.

Il convient de distinguer plusieurs types de virtualisations :

  • Une virtualisation complète : la partie matérielle est complètement reproduite sous forme logicielle. On évite ainsi toute interaction avec le matériel réel, ce qui rend d’ailleurs le recours aux pilotes complètement superflu. Cette variante serait beaucoup plus lente. 
  • La para-virtualisation : le système invité interagit avec l’hyperviseur, et a donc besoin de pilotes particuliers.
  • La para-virtualisation assistée par le matériel : l’assistance par le matériel est déjà intégrée dans le processeur. On augmente ainsi l’efficacité, et on réduit le besoin d’adaptation du système invité. Les processeurs modernes d’Intel (Intel-VT-x) et AMD (AMD-V) ont déjà cette fonctionnalité. Dans certains cas, il faudra l’activer dans le BIOS/UEFI.

On peut d’ailleurs distinguer deux types d’hyperviseur :

  • Type 1 (Bare Metal) : l’hyperviseur est exécuté directement sur la plateforme matérielle, sans être incorporé au système d’exploitation.
  • Type 2 (Hosted) : l’hyperviseur est incorporé dans le système d’exploitation et sera donc exécuté à partir de là.

Linux-KVM est un hyperviseur de type 2 qui exploite la para-virtualisation assistée par le matériel. Ce qui le caractérise est le fait qu’il soit directement incorporé dans le noyau (kernel).

Note

Le mot « Kernel » est le mot anglais correspondant au « Noyau » : il s’agit du « noyau » d’un système d’exploitation. Il intègre les fonctions de base du système d’exploitation, par exemple l’accès au matériel, l’assignation des temps de calcul dans les processeurs, dans un système multi-tâches. L’accès au noyau (Kernel) est particulièrement protégé (Kernel Mode) et les requêtes qui lui sont attribuées sont hautement privilégiées par les processeurs dans le traitement.

En raison de son lien privilégié avec le noyau, le système est parfois évoqué comme ayant des éléments relevant d’un hyperviseur de type 1.

De quels éléments est constitué le Kernel-based Virtual Machine ?

Le pack KVM complet est composé de plusieurs éléments :

  • Extension de kernel : renferme la véritable extension kernel.ko. Il s’agit de la couche d’abstraction entre le matériel réel et le matériel virtuel. Les modules kvm-amd et kvm-intel associés aux processeurs en font également partie.
  • libvirt : l’interface de programmation (API) permet d’interagir avec les machines virtuelles. Elle en permet à la fois la gestion et l’administration. Libvirt contient aussi des utilitaires, comme par exemple une ligne de commande appelée virsh et l’interface graphique Virtual-Machine-Manager.
  • QEMU : C’est un logiciel libre, capable d’émuler des ordinateurs et d’administrer des machines virtuelles. Linux-KVM exploite sa fonctionnalité pour l’émulation du matériel et pour accélérer la vitesse à l’aide de la para-virtualisation. Dans plusieurs distributions, ces deux éléments sont proposés dans un pack d’installation commun.
  • Kvmtool : il s’agit d’une option réduite par rapport à QEMU, mais que QEMU n’a pas réussi à supplanter.
  • Les drivers VirtIO : ce sont des drivers spéciaux, destinés aux systèmes invités, parfaitement adaptés à l’hyperviseur, et qui rendent la para-virtualisation possible.

Domaines d’application de KVM

On rencontre souvent le Kernel-based Virtual Machine dans des configurations incluant des serveurs de type professionnel. Dans une étude de sécurité menée en 2017, l’Office fédéral de la sécurité des technologies de l’information a désigné cette technologie comme étant la solution de virtualisation la plus pertinente du marché dans le domaine des logiciels libres.

Linux-KVM a aussi gagné en popularité grâce à son intégration en tant qu’hyperviseur dans la solution logicielle de Cloud OpenStack.

Avantages et inconvénients de KVM

Étudions pour finir quelques-uns des avantages et inconvénients de cette solution de virtualisation :

Les avantages :

  • Un système solide et bien conçu 
  • Inclus déjà dans la plupart des distributions Linux 
  • Gratuit et open source 
  • La seule « Kernel Virtual Machine » qui associe performance et stabilité 
  • Développée par des entreprises de renom 
  • Administration automatique possible avec libvirt

Les inconvénients :

  • Disponible uniquement pour les systèmes Linux 
  • Pour la machine-hôte, il vous faut un matériel très performant 
  • La prise en main nécessite une initiation assez lourde 
  • En centralisant le matériel, vous augmentez le niveau de risque en cas de panne système (« Single Point of Failure » – ce risque peut néanmoins être atténué grâce à une stratégie de backup bien pensée)

Options autres que Linux-KVM

Dans le domaine des logiciels libres, et parmi ceux qui ont une fonction similaire, il convient de mentionner XEN, une solution de virtualisation, liée à Linux, mais qui n’est incorporée dans son noyau.

Avec ses serveurs ESXi, le prestataire commercial VMWare propose des solutions de para-virtualisation. Avec sa station de travail, elle propose même une virtualisation totale. Le VNWare-Player est gratuit pour un usage personnel.

Virtualbox est aussi une bonne option permettant une pleine virtualisation, compatible avec tous les systèmes d’exploitation.

Pour Windows, Microsoft propose un système appelé Hyper-V qui est une solution de virtualisation et de para-virtualisation, dont le fonctionnement est comparable à Linux-KVM. Elle dispose d’un serveur dédié, le Windows-Hyper-V-Server, et d’un fonctionnement incorporé dans les systèmes d’exploitation des serveurs. Les versions Windows 10 Professional et Enterprise contiennent aussi un hyperviseur.

Backup Cloud IONOS

Finies les interruptions d'activité coûteuses ! Sauvegardez facilement les données de votre entreprise et bénéficiez d'un conseiller personnel.

Simple
Sûr
Intégré

En conclusion

La flexibilité et la modularité sont certainement les deux arguments qui plaident le plus en faveur de la virtualisation. Les systèmes invités peuvent rester modestes, et servir uniquement à une application bien précise. Si vous sauvegardez régulièrement vos systèmes sur des supports distincts, le risque de panne système est négligeable.

Si vous utilisez Linux pour votre serveur, vous n’avez d’autre choix que d’avoir recours à KVM. L’intégration dans le noyau, ainsi que le développement de la solution par des prestataires réputés, sont des éléments qui inspirent confiance.