Virtualisation
La virtualisation est une technique qui insère une couche d'abstraction entre l'architecture matérielle réelle (CPU, RAM, disques, réseau) d'une machine ("système hôte") et celle présentée au système virtualisé ("système invité"). Dans la pratique, il existe différentes techniques de virtualisation se différenciant par le niveau d'abstraction et la performance.
- Emulation La totalité du matériel est simulée, y compris le jeu d'instructions du CPU. Elle permet de transférer des applications existantes sur de nouvelles architectures totalement incompatibles. L'impact sur les performances est tellement important que ce n'est possible que lorsque le nouveau matériel est largement plus performant que celui qu'il remplace. Cette technique a été utilisée par Apple lors du passage de MacOS du Motorola 680xx au PowerPC. Bochs est un émulateur Open Source pour l'architecture Intel x86.
- Virtualisation Seuls les périphériques sont simulés. Le système invité utilise le jeu d'instructions natif du CPU, seuls les accès au matériel (disque, réseau, allocation mémoire) sont interceptés par la couche de virtualisation. Les systèmes d'exploitation installés dans les systèmes invités ne voient pas de différence entre le système virtuel et une machine réelle; tout système d'exploitation supportant la configuration matérielle virtuelle peut donc être installé. L'impact sur les performances dépend de type d'applications, le calcul intensif n'est pas impacté à la différence des applications nécessitant de nombreuses entrées/sorties comme les SGBD. VMWare est basé sur cette technique. Xen et KVM font de la virtualisation sur des CPU ayant des extensions de virtualisation (Intel-VT, AMD-V).
- Paravirtualisation Cette technique repose sur les mêmes principes que la virtualisation. La principale différence est que le système d'exploitation invité doit être modifié pour coopérer avec le système hôte. Cette technique apporte de meilleurs performances en entrées/sorties mais nécessite un système d'exploitation adapté. Cette technique est à l'origine de Xen.
- Isolation Le système hôte et les systèmes invités partagent le même noyau ("kernel"). Celui-ci est modifié pour restreindre les ressources accessibles par des groupes de process ou "conteneurs". A l'intérieur d'un conteneur, un processus ne voit que les ressources allouées au conteneur (RAM, espace disque, interfaces réseau). Les systèmes installés à l'intérieur des conteneurs ne peuvent être que des variantes du système de base mais les performances sont équivalentes au système natif. Cette technique est utilisée avec des degrés d'isolation variables par: Jail sur les systèmes BSD. Vserver et OpenVZ sous Linux.
Les avantages de la virtualisation sont nombreux :
- Consolidation : un serveur physique peut accueillir plusieurs machines virtuelles. Il est ainsi possible d'installer de nouveaux services sans approvisionner du matériel supplémentaire.
- Isolation : même si plusieurs services peuvent être installés sur un même système, l'affectation d'une machine virtuelle dédiée à chaque service simplifie sa maintenance et ses évolutions. Il est en effet possible de faire évoluer une des machines virtuelles sans impacter les autres. De même, on peut faire cohabiter sur un même serveur des versions incompatibles d'un même logiciel.
- Indépendance par rapport au matériel : Le système installé dans une machine virtuelle accède aux ressources matérielles à travers des interfaces virtuelles qui ne changent pas même si le serveur physique est modifié. Il est ainsi possible de transférer une machine virtuelle sur un serveur physique plus récent sans avoir à se préoccuper de la disponibilité des pilotes pour le nouveau matériel. Les périphériques simulés (interfaces disques et réseaux) sont des matériels pour lesquels des pilotes existent depuis de nombreuses années, ce qui limite le risque d'instabilité lié à l'installation d'un nouveau pilote.
- Instantané (snapshot) : Il est possible de faire un instantané d'une machine virtuelle, c'est à dire de conserver une image cohérente de cette machine à un instant donné. Cet instantané peut alors être utilisé pour : servir de point de retour avant de faire une opération risquée au cas où celle-ci échouerait, cloner la machine virtuelle pour créer une seconde machine identique, sauvegarder une image cohérente du système en couplant la prise de l'instantané avec un logiciel de sauvegarde.
- Migration à chaud : Certains systèmes de virtualisation permettent la migration à chaud, c'est à dire le transfert d'une machine virtuelle d'un serveur physique à un autre sans arrêter la machine virtuelle. Une VM peut ainsi être transférée sur un serveur plus puissant en cas de montée en charge. De même, en cas d'intervention en maintenance sur un serveur physique, les VM peuvent être transférées momentanément sur une autre machine.
- Haute disponibilité : La virtualisation peut être associée à une solution de cluster HA pour assurer la haute disponibilité. La machine virtuelle est stockée sur un stockage partagé entre les deux serveurs physiques constituant le cluster HA. La VM est automatiquement activée par le serveur secondaire dès qu'il détecte la défaillance du serveur principal.
Le seul inconvénient éventuel porte sur les performances. En effet, selon la technique de virtualisation utilisée, l'impact sur les performances en entrées/sorties peut être important rendant difficile la virtualisation de certaines applications.
Joseph Bueno
