Comprendre les hyperviseurs
Introduction
Dans ce chapitre, nous allons examiner de plus près le rôle et le fonctionnement des hyperviseurs qui, avec les machines virtuelles, sont les deux principaux composants d’un environnement de virtualisation.
Après avoir passé en revue les technologies qui ont mené au développement de l’hyperviseur moderne, nous verrons qu’il se décline en deux types dont nous décrirons les éléments distinctifs. Nous présenterons ensuite les principaux hyperviseurs disponibles sur le marché et donnerons un aperçu de leur fonctionnement.
Le principe derrière l’hyperviseur
Comme nous l’avons vu précédemment, un hyperviseur est une mince couche logicielle installée sur un serveur hôte (ou un système d’exploitation hôte) qui permet de créer une représentation logicielle des ressources matérielles de l’hôte afin d’en faire l’allocation aux machines invitées.
Le principe derrière l’hyperviseur consiste donc à créer l’illusion à plusieurs machines invitées qu’elles contrôlent individuellement les ressources matérielles d’un serveur, alors qu’elles partagent ces mêmes ressources entre elles. Un hyperviseur moderne doit faire en sorte qu’une machine virtuelle fonctionne comme une machine...
L’évolution de l’hyperviseur
1. Le programme de contrôle
Le programme de contrôle (Control Program) introduit par IBM pour le système CP/CMS en 1968 peut être considéré comme le premier hyperviseur ou VMM pour reprendre la terminologie de l’époque.
Le terme « hyperviseur » fait son apparition durant les années 1960-1970. Il s’agit d’une variante de « superviseur » qui désignait alors le noyau d’un système d’exploitation. Le préfixe « super- » exprime la supériorité, tandis que « hyper- » indique une position ou une intensité qui serait « au-delà » de la normale. L’hyperviseur est donc le superviseur des superviseurs : un hyperviseur pour les virtualiser toutes…
Ce système a fait l’objet de plusieurs implémentations et il était utilisé principalement dans des centres de recherche et des laboratoires. Il faudra patienter jusqu’en 1972 pour que son successeur, le VM/370 OS, soit commercialisé avec les mainframes de la gamme System/370.
Les systèmes VM se définissaient davantage comme des « systèmes d’exploitation pour machines virtuelles » (Virtual Machine...
Les techniques de virtualisation
Selon le principe d’équivalence énoncé par Popek et Goldberg, la conception d’un hyperviseur doit permettre l’exécution de plusieurs systèmes d’exploitation concurremment sur une même plateforme matérielle sans qu’il n’y ait de contention.
La « contention » en informatique désigne une situation où plusieurs programmes ou ordinateurs tentent d’accéder à une ou plusieurs ressources en même temps. Une telle situation entraîne un conflit dans l’accès à une ou des ressources partagées.
Comme les systèmes d’exploitation sont conçus pour avoir le contrôle total du matériel (mode superviseur ou privilégié), un certain nombre de techniques de virtualisation ont été développées pour éviter que les OS se « disputent » les ressources entre eux et que chacun obtienne ce qu’il demande.
Avant d’examiner de plus près ces techniques de virtualisation, un petit détour sur le fonctionnement des systèmes d’exploitation s’impose.
1. La virtualisation et les contraintes des systèmes d’exploitation
Un système d’exploitation est un ensemble de logiciels (noyau, kernel) qui permettent l’exécution de programmes et prennent en charge les demandes d’utilisation de ressources d’un ordinateur. Grâce à un composant nommé ordonnanceur (scheduler), l’un des rôles du noyau est de permettre à tous les processus de s’exécuter dans des temps acceptables tout en utilisant au mieux les ressources du processeur.
a. Les deux modes du système d’exploitation
Le noyau est le composant logiciel principal d’un système d’exploitation. Il s’agit d’un ensemble de programmes qui permettent notamment la gestion des ressources et la communication entre les composants logiciels et matériels d’un ordinateur. L’interaction entre le système d’exploitation et les périphériques s’effectue via des pilotes (drivers) qui sont également des programmes faisant partie du noyau.
Le système d’exploitation agit en tant qu’intermédiaire...
Les tâches de l’hyperviseur
1. Le partage et l’allocation des ressources
L’une des tâches principales de l’hyperviseur est de partager les ressources de l’hôte entre plusieurs machines virtuelles. Grâce à diverses techniques de gestion des ressources telles que la planification du temps de processeur et l’allocation de mémoire, l’hyperviseur garantit que chaque machine virtuelle reçoit une part équitable des ressources de l’hôte. Il a donc la responsabilité d’allouer des cycles de CPU, des pages mémoire, de l’espace de stockage et de la bande passante réseau en fonction des priorités configurées, des réservations de ressources et des limites.
Le partage et l’allocation des ressources seront explorées en détail au chapitre Comprendre les machines virtuelles. Nous nous limiterons ici à la présentation de quelques techniques d’optimisation de la mémoire.
Les techniques d’optimisation de la mémoire
L’hyperviseur garantit que chaque machine virtuelle obtient sa juste part de temps de CPU et empêche une machine virtuelle de monopoliser les ressources. Il en va de même pour la mémoire dont il gère l’allocation en utilisant diverses techniques telles que le « gonflage de la mémoire » (memory ballooning).
Cette technique est utilisée pour ajuster dynamiquement l’allocation de mémoire des machines virtuelles....
Les types d’hyperviseurs
Il existe deux classes d’hyperviseurs, type 1 ou type 2. À l’exception du fait qu’en informatique, le niveau 1 fait généralement référence au matériel, leur nom ne permet pas de comprendre ce qui les différencie.
Dans les pages qui suivent, nous proposons une définition de chaque type d’hyperviseur. Nous examinerons de plus près l’architecture des hyperviseurs qui occupent la plus grande part du marché actuel des solutions de virtualisation.
1. Les hyperviseurs de type 1
Un hyperviseur de type 1, également dit « natif » (native) ou bare-metal (littéralement « métal nu ») est installé directement sur le matériel, c’est-à-dire qu’il fonctionne sans système d’exploitation. Il remplace en quelque sorte l’OS puisqu’il est le composant logiciel qui contrôle directement le matériel.
L’hyperviseur de type 1
L’hyperviseur de type 1 fonctionne donc sans intermédiaire. Il communique directement avec les ressources matérielles de la couche physique sous-jacente, ce qui le rend plus performant que l’hyperviseur de type 2 qui, comme nous le verrons plus loin, dispose d’une couche logicielle supplémentaire.
En raison de son accès direct au matériel, l’hyperviseur de type 1 fournit de meilleures performances que celui de type 2.
a. Des solutions de virtualisation d’entreprise
Les hyperviseurs de type 1 se distinguent par leur robustesse et se composent de différents mécanismes de redondance et de tolérance aux pannes. Ce sont des logiciels d’entreprise pouvant supporter une très grande quantité de machines virtuelles sur un même hôte : plusieurs dizaines, voire plusieurs centaines, si le serveur hôte dispose du matériel en conséquence.
En général, au moins deux hôtes sont déployés pour un nombre de machines virtuelles donné. Ainsi, en cas de panne (ou lorsque des tâches de maintenance doivent être effectuées), un seul hôte puisse supporter l’entièreté de la charge.
b. Indépendance du matériel et du logiciel
Dans le modèle de type...
Conclusion
Après l’installation de ESXi, ce chapitre nous a donné l’occasion de mieux comprendre les diverses techniques mises en œuvre pour le fonctionnement d’un hyperviseur. En plus d’avoir passé en revue les différents rôles de l’hyperviseur, nous avons donné plusieurs exemples de solutions sur le marché et présenté les grandes lignes de leurs architectures.
Dans le chapitre suivant Déploiement d’une machine virtuelle, nous proposons de créer une machine virtuelle pour mieux saisir le rôle de l’hyperviseur dans ce processus. Nous ferons une installation interactive qui nous permettra de mieux comprendre l’allocation des ressources, puis nous procéderons à l’installation d’un système d’exploitation.