Un hyperviseur est le logiciel qui permet de faire fonctionner plusieurs ordinateurs « virtuels » sur une seule machine physique. Chacun de ces ordinateurs simulés, appelé machine virtuelle, possède son propre système d'exploitation, ses applications et ses fichiers, et se comporte comme s'il disposait de son propre processeur, de sa propre mémoire et de son propre disque, alors qu'il partage en réalité le matériel avec ses voisins. C'est l'hyperviseur qui orchestre ce partage : il découpe les ressources de la machine réelle, les attribue à chaque environnement, veille à ce qu'aucun ne déborde sur les autres et les maintient soigneusement isolés. Cette technologie, née dans le monde des grands ordinateurs des années 1960, est devenue un pilier de l'informatique moderne : elle fait tourner l'essentiel des serveurs des centres de données, sert de socle aux offres d'hébergement et de cloud, et permet aussi aux particuliers d'essayer Linux sur un PC Windows sans rien installer en dur. Cette définition explique ce qu'est un hyperviseur, comment il fonctionne, ce qui distingue les hyperviseurs de type 1 et de type 2, à quoi ils servent concrètement et quelles sont leurs limites face aux conteneurs.

Qu'est-ce qu'un hyperviseur ? Définition

Un hyperviseur, également appelé gestionnaire de machines virtuelles (en anglais Virtual Machine Monitor, ou VMM), est une couche logicielle placée entre le matériel d'un ordinateur et les systèmes d'exploitation qui l'utilisent. Il constitue la pièce maîtresse de la virtualisation, cette technique qui consiste à créer des versions logicielles de ressources physiques. Pour chaque machine virtuelle, il présente un matériel fictif mais crédible : un ou plusieurs processeurs virtuels, une quantité de mémoire vive, un disque qui n'est en réalité qu'un gros fichier stocké sur le serveur, une carte réseau virtuelle. Le système d'exploitation installé dans la machine virtuelle, dit système invité, croit piloter un ordinateur ordinaire et fonctionne sans modification ou presque. L'hyperviseur, lui, intercepte les opérations sensibles, comme l'accès direct au matériel, et les traduit vers les composants réels, tout en empêchant un invité de lire la mémoire d'un autre. On obtient ainsi sur un seul serveur plusieurs environnements indépendants : l'un peut planter, redémarrer ou être infecté sans que les autres en soient affectés, ce qui fait de l'isolation l'une des promesses centrales de l'hyperviseur.

D'où vient le mot « hyperviseur » ?

Le terme hyperviseur est né chez IBM dans les années 1960, à l'époque des grands ordinateurs centraux, les mainframes, qui coûtaient une fortune et devaient être partagés entre de nombreux utilisateurs. Dans un ordinateur, le système d'exploitation était alors souvent appelé « superviseur », puisqu'il surveille et contrôle les programmes. Un logiciel capable de superviser plusieurs superviseurs à la fois méritait donc un préfixe encore plus élevé : « hyper », qui signifie « au-dessus » ou « au-delà » en grec, s'est imposé naturellement. Les systèmes expérimentaux d'IBM de cette époque permettaient déjà à chaque utilisateur de disposer de sa propre machine virtuelle sur un grand ordinateur partagé, une idée extraordinairement moderne. Au milieu des années 1970, les chercheurs Gerald Popek et Robert Goldberg ont formalisé les conditions qu'un processeur doit remplir pour être virtualisé efficacement. Les processeurs des PC ordinaires, de leur côté, ne s'y prêtaient pas facilement, et il a fallu attendre la fin des années 1990 pour que des éditeurs contournent ces obstacles par des astuces logicielles, puis le milieu des années 2000 pour qu'Intel et AMD ajoutent à leurs puces des instructions dédiées à la virtualisation matérielle, qui ont rendu les hyperviseurs nettement plus rapides et plus simples à concevoir.

Comment fonctionne un hyperviseur ?

Le travail d'un hyperviseur ressemble à celui d'un chef d'orchestre qui distribuerait les instruments à plusieurs groupes de musiciens. Pour le processeur, il fait tourner les processeurs virtuels à tour de rôle sur les cœurs réels, par tranches de temps très courtes, si bien que chaque machine virtuelle a l'impression de disposer en permanence de sa propre puce. La plupart des instructions de l'invité s'exécutent directement sur le processeur, à pleine vitesse ; seules les opérations privilégiées, celles qui touchent au matériel ou à la configuration de la machine, provoquent une interruption que l'hyperviseur traite à sa place. Pour la mémoire vive, il réserve à chaque invité une zone de mémoire physique et tient des tables de correspondance qui l'empêchent d'accéder à celle des autres. Pour le stockage et le réseau, il fournit des périphériques virtuels dont les échanges sont redirigés vers les disques et les cartes réseau réels, ou, pour gagner en performances, il peut confier directement un périphérique à une machine virtuelle. Il gère enfin le cycle de vie des invités : création, démarrage, mise en pause, sauvegarde instantanée de leur état, appelée snapshot, et même déplacement d'une machine virtuelle en fonctionnement d'un serveur physique à un autre.

Schéma animé de l'architecture d'un hyperviseur : le matériel physique, l'hyperviseur qui répartit processeur et mémoire, et trois machines virtuelles isolées Machine virtuelle 1ApplicationsWindows Machine virtuelle 2Site webLinux Machine virtuelle 3Base de donnéesLinux Hyperviseur : partage, isole, surveille ProcesseurMémoireDisqueRéseau
L'hyperviseur s'intercale entre le matériel réel et plusieurs machines virtuelles, à qui il distribue processeur, mémoire, disque et réseau.

Hyperviseur de type 1 et de type 2 : quelles différences ?

On classe traditionnellement les hyperviseurs en deux familles. L'hyperviseur de type 1, dit natif ou bare metal (« sur le métal nu »), s'installe directement sur le matériel, à la place d'un système d'exploitation classique : au démarrage du serveur, c'est lui qui prend la main, puis il lance les machines virtuelles. N'ayant aucun intermédiaire, il offre les meilleures performances et une surface d'attaque réduite, ce qui en fait la norme dans les centres de données et chez les hébergeurs. L'hyperviseur de type 2, dit hébergé, est au contraire une application que l'on installe sur un système existant, Windows, macOS ou Linux, comme n'importe quel logiciel : il s'appuie sur ce système hôte pour accéder au matériel, ce qui ajoute une couche et peut coûter un peu de performance, mais il est très simple à utiliser. C'est la solution idéale pour un développeur qui veut tester son programme sur plusieurs systèmes, un étudiant qui découvre Linux ou un utilisateur qui doit faire tourner un vieux logiciel. La frontière est parfois floue : certains hyperviseurs intégrés à un système d'exploitation, comme KVM dans le noyau Linux, sont généralement rangés dans le type 1 tout en cohabitant avec un système complet.

Comparaison animée des deux types d'hyperviseurs : le type 1 repose directement sur le matériel, le type 2 fonctionne comme une application sur un système hôte Type 1 : natif (bare metal) Type 2 : hébergé Machinevirtuelle Machinevirtuelle Hyperviseur type 1ESXi, Hyper-V, Xen, KVM Matériel du serveur Machinevirtuelle Machinevirtuelle Hyperviseur type 2VirtualBox, VMware Workstation Système hôte (Windows, macOS) Matériel du PC Performances maximalesInstallation très simple
L'hyperviseur de type 1 s'installe directement sur le matériel ; celui de type 2 s'exécute comme une application au-dessus d'un système d'exploitation hôte.

Quelques exemples d'hyperviseurs connus

Le marché des hyperviseurs compte une poignée de noms que l'on croise souvent dans les offres d'hébergement et les annonces d'emploi. Côté type 1, VMware ESXi, longtemps dominant dans les entreprises, est piloté par une console centrale qui gère des dizaines de serveurs à la fois ; Microsoft Hyper-V est intégré aux éditions professionnelles et serveur de Windows ; Xen, logiciel libre né à l'université de Cambridge, a longtemps propulsé une partie importante du cloud public ; enfin KVM, intégré au noyau Linux, transforme n'importe quel serveur Linux en hôte de virtualisation et sert de base à des solutions comme Proxmox VE, très appréciée des petites structures et des passionnés. Côté type 2, on trouve VirtualBox, gratuit et disponible sur tous les grands systèmes, VMware Workstation Pro sur PC et Parallels Desktop sur Mac. Les grands fournisseurs de cloud ont aussi développé leurs propres hyperviseurs, souvent dérivés de KVM ou de Xen et épaulés par des puces spécialisées. Les conditions commerciales et les gammes de ces produits évoluent régulièrement, au gré des rachats et des changements de licences : mieux vaut vérifier l'offre du moment avant de faire un choix. Le tableau suivant résume les différences essentielles entre les deux familles.

CritèreHyperviseur de type 1Hyperviseur de type 2
InstallationDirectement sur le matérielComme une application sur un système existant
PerformancesTrès proches du matériel réelLégèrement réduites par la couche du système hôte
SécuritéSurface d'attaque réduiteDépend aussi de la sécurité du système hôte
PublicCentres de données, hébergeurs, entreprisesDéveloppeurs, formateurs, particuliers
ExemplesVMware ESXi, Hyper-V, Xen, KVM, Proxmox VEVirtualBox, VMware Workstation, Parallels Desktop
Illustration d'un hyperviseur qui fait fonctionner plusieurs machines virtuelles sur un même serveur

À quoi sert un hyperviseur ? Usages et avantages

Le premier atout d'un hyperviseur est la consolidation des serveurs. Avant la virtualisation, une entreprise dédiait souvent un serveur physique à chaque application, par prudence, et la plupart de ces machines tournaient la majeure partie du temps à une petite fraction de leur capacité. En regroupant ces services sous forme de machines virtuelles sur quelques serveurs puissants, on réduit le nombre d'appareils à acheter, à alimenter, à refroidir et à entretenir, ce qui diminue aussi la consommation d'énergie et l'encombrement des salles informatiques. Deuxième avantage, la souplesse : une nouvelle machine virtuelle se crée en quelques minutes à partir d'un modèle, sans attendre la livraison d'un matériel, et ses ressources peuvent être ajustées selon les besoins. Les snapshots permettent de figer l'état d'un système avant une mise à jour risquée et d'y revenir en un clic en cas de problème. La migration à chaud autorise la maintenance d'un serveur physique sans interrompre les services, puisque les machines virtuelles sont déplacées sur un autre hôte pendant l'intervention. Enfin, comme une machine virtuelle n'est qu'un ensemble de fichiers, elle se sauvegarde et se réplique facilement vers un autre site, ce qui simplifie grandement les plans de reprise après sinistre.

L'hyperviseur sur un ordinateur personnel

Les hyperviseurs ne sont pas réservés aux centres de données. Sur un ordinateur personnel, un hyperviseur de type 2 permet d'installer une distribution Linux dans une fenêtre de Windows pour apprendre à s'en servir, de conserver une ancienne version de Windows pour faire fonctionner un logiciel professionnel qui n'a jamais été mis à jour, ou de tester un programme douteux dans un environnement isolé, une sorte de bac à sable que l'on peut effacer ensuite sans risque pour le système principal. Les développeurs s'en servent pour reproduire l'environnement de production d'un site web sur leur portable, et les formateurs pour distribuer des machines prêtes à l'emploi à leurs stagiaires. Windows lui-même s'appuie sur son hyperviseur intégré pour certaines fonctions, comme le sous-système qui permet d'exécuter des outils Linux ou certaines protections de sécurité qui isolent des parties sensibles du système. Il faut toutefois disposer d'un ordinateur suffisamment doté : chaque machine virtuelle consomme sa part de mémoire vive et d'espace disque, et la fonction de virtualisation du processeur doit souvent être activée dans les réglages du micrologiciel de la carte mère, un réglage parfois désactivé par défaut sur les modèles grand public.

Hyperviseur et conteneurs : limites et évolutions de la virtualisation

L'hyperviseur n'est pas exempt de défauts. Puisqu'il concentre plusieurs systèmes sur une même machine, il devient un point critique : une panne du serveur physique arrête toutes les machines virtuelles qu'il héberge, d'où la nécessité de grappes de serveurs redondants. Sur le plan de la sécurité, une faille permettant à un programme de « s'évader » d'une machine virtuelle pour atteindre l'hyperviseur serait particulièrement grave, car elle donnerait potentiellement accès à tous les autres invités ; ces failles sont rares mais régulièrement recherchées, ce qui impose des mises à jour suivies. La gestion des ressources demande aussi de la rigueur : il est tentant d'attribuer aux machines virtuelles plus de mémoire ou de processeurs que le serveur n'en possède réellement, en pariant qu'elles ne les utiliseront pas toutes en même temps, une pratique appelée surallocation qui peut provoquer de fortes baisses de performances lors des pics de charge. Chaque machine virtuelle embarque en outre un système d'exploitation complet, avec ses mises à jour et sa consommation propre. Enfin, le coût des licences de certaines solutions commerciales pèse lourd dans les budgets, et ses évolutions récentes ont poussé plusieurs organisations à étudier des alternatives libres.

Machines virtuelles et conteneurs, deux approches complémentaires

Les conteneurs, popularisés par des outils comme Docker, sont souvent présentés comme les successeurs des machines virtuelles, mais ils reposent sur un principe différent et ne nécessitent pas d'hyperviseur. Au lieu de simuler un ordinateur complet avec son propre système, un conteneur isole simplement une application et ses dépendances au sein d'un même système d'exploitation, dont il partage le noyau avec les autres conteneurs. Il démarre ainsi en quelques secondes et consomme beaucoup moins de ressources qu'une machine virtuelle, ce qui permet d'en faire tourner un grand nombre sur un seul serveur. En contrepartie, son isolation est moins stricte, et tous les conteneurs d'un hôte doivent utiliser le même type de noyau. Dans la pratique, les deux technologies se complètent plus qu'elles ne s'opposent : il est très courant de faire tourner des conteneurs à l'intérieur de machines virtuelles, afin de cumuler la légèreté des uns et le cloisonnement des autres, et certaines solutions récentes créent même des micro-machines virtuelles ultralégères pour chaque conteneur. Cette combinaison d'hyperviseurs, de machines virtuelles et de conteneurs constitue aujourd'hui la base technique du cloud computing, qui loue à la demande des ressources informatiques mutualisées.