Virtualisation sous GNU/Linux

Ce document présente les concepts fondamentaux de la virtualisation sous GNU/Linux, ses intérêts, les différentes techniques employées ainsi que les principaux produits disponibles. Il s’adresse aux étudiants et professionnels souhaitant comprendre les bases et applications de la virtualisation dans un environnement Linux.

D'après le document Virtualisation sous GNU/Linux

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Virtualisation sous GNU/Linux

Operating Systems and Virtualization · PDF · 8 pages · 2003

Afficher l'aperçu du document

Consulter le document original →

Ce document présente les concepts fondamentaux de la virtualisation sous GNU/Linux, ses intérêts, les différentes techniques employées ainsi que les principaux produits disponibles. Il s’adresse aux étudiants et professionnels souhaitant comprendre les bases et applications de la virtualisation dans un environnement Linux.

Notion de virtualisation

La virtualisation désigne l’ensemble des techniques matérielles et/ou logicielles permettant de faire fonctionner plusieurs systèmes d’exploitation ou applications sur une seule machine physique, comme s’ils tournaient sur des machines distinctes.

Concrètement, un système d’exploitation appelé « hôte » est installé sur la machine physique et émule une ou plusieurs machines virtuelles, chacune disposant de ressources matérielles virtuelles (processeur, mémoire, disque dur, carte réseau, BIOS, etc.). Chaque machine virtuelle peut accueillir un système d’exploitation « invité » ou « virtualisé ».

Le système hôte joue le rôle de superviseur, assurant le cloisonnement entre les systèmes invités et le partage des ressources physiques. Il permet de manipuler les machines virtuelles : démarrage, arrêt, gel, sauvegarde de contexte, etc. Le disque dur d’un système virtualisé est souvent émulé par un fichier, facilitant la duplication ou la migration d’une machine virtuelle d’un hôte à un autre.

La virtualisation optimise l’utilisation des ressources d’une machine physique, permet d’ajouter ou supprimer des machines virtuelles selon la charge, et améliore la sécurité en isolant les services sur différentes machines virtuelles.

Intérêt de la virtualisation

La virtualisation répond à plusieurs besoins selon les utilisateurs :

  • Pour les particuliers : accéder à des applications anciennes (legacy applications) ne fonctionnant plus sur les systèmes modernes, ou utiliser des programmes non portés sur leur plateforme (exemple : applications Windows sur GNU/Linux). Elle peut aussi permettre de jouer à des jeux Windows via une machine virtuelle sous Linux, avec des performances proches de l’original grâce à l’accélération 3D.
  • Pour les professionnels et chercheurs en sécurité : analyser le comportement de logiciels malveillants dans un environnement contrôlé et reproductible, sans risquer d’infecter une machine physique.
  • Pour les entreprises : séparer logiquement des applications incompatibles ou isoler différentes versions d’un même logiciel. Par exemple, faire cohabiter une version de développement et une version finale d’un site web sur une même machine physique, ou tester un site web sur plusieurs navigateurs et systèmes d’exploitation sans changer de matériel.

Traditionnellement, chaque service réseau était hébergé sur une machine physique distincte pour des raisons pratiques et de sécurité. Cependant, cette dispersion engendre des coûts importants en espace, énergie et maintenance, alors que la plupart des services n’utilisent qu’une faible partie des ressources d’une machine récente.

Aujourd’hui, la tendance est à la consolidation de serveurs, regroupant plusieurs services sur une seule machine physique grâce à la virtualisation, tout en maintenant une séparation stricte entre eux.

Enfin, la virtualisation permet de continuer à utiliser des applications anciennes critiques pour l’entreprise sur du matériel récent, évitant ainsi des migrations complexes. Par exemple, une application de comptabilité non portée sur un nouveau système d’exploitation ou un logiciel de pilotage industriel peuvent ainsi fonctionner dans leur environnement d’origine virtualisé.

Au-delà des aspects techniques, la virtualisation est un atout stratégique pour les entreprises, offrant un avantage concurrentiel dans le secteur des services informatiques.

Les différentes techniques de virtualisation

Sur plateforme PC, le démarrage d’un système se fait en trois phases : BIOS, chargeur de démarrage (bootloader), puis système d’exploitation. Les systèmes de virtualisation s’appuient sur des couches logicielles intermédiaires, et on distingue deux grandes approches : isolation par empilement ou par juxtaposition. Ces approches donnent naissance à quatre types principaux de technologies :

Machine virtuelle

Une machine virtuelle est un logiciel tournant sur l’OS hôte, qui permet de lancer un ou plusieurs OS invités. Elle virtualise le matériel par émulation partielle, donnant l’illusion aux OS invités qu’ils dialoguent directement avec le matériel.

Cette solution isole bien les systèmes invités, mais au prix d’une perte de performance, surtout sur les entrées-sorties. Elle consomme aussi beaucoup de mémoire car chaque OS invité charge son propre noyau.

Exemples :

  • Qemu : émulateur de plateformes x86, PPC, Sparc
  • VMWare : propriétaire, émulateur de plateforme x86
  • Microsoft VirtualPC et VirtualServer : propriétaires, émulateurs x86
  • VirtualBox : émulateur de plateforme x86

Pour réduire l’impact sur les performances, certains projets proposent des accélérations optionnelles (KVM, KQemu, VirtualBox) hors contexte d’émulation complète.

Virtualisation d’OS, isolateur

Un isolateur est un logiciel qui isole l’exécution des applications dans des zones d’exécution distinctes, permettant de faire tourner plusieurs instances d’une même application prévue pour une seule instance par machine.

Cette technique étend la notion de « contexte » Unix en isolant les processus, les périphériques, les systèmes de fichiers et leurs accès. Elle est très performante car elle ajoute peu de surcharge, mais les environnements virtualisés partagent le même noyau, ce qui limite l’isolation complète.

Elle est adaptée au déploiement de nombreux serveurs virtuels de test ou développement basés sur un même système.

Exemples :

  • Linux-VServer : isolation des processus en user-space
  • BSD Jail : isolation en user-space
  • OpenVZ : partitionnement au niveau noyau sous Linux et Windows 2003, version open-source de Virtuozzo

OpenVZ peut être vu comme un Linux avec plusieurs tables de processus, chacune dans le contexte d’une distribution propre.

Hyperviseur complet

Cette approche repose sur un noyau léger (micro-noyau par exemple) accompagné d’outils de supervision, adapté pour faire tourner des systèmes d’exploitation natifs. Le matériel est soit émulé (avec perte de performances), soit la virtualisation utilise des instructions dédiées présentes sur certains processeurs (x86/x86-64).

Exemples :

  • KVM : intégré au noyau GNU/Linux depuis la version 2.6.20
  • Xen : sur machines supportant les instructions AMD-V (version 3.03+) ou Intel VT-x (version 3.0+)

Paravirtualiseur

Le paravirtualiseur est un noyau hôte allégé et optimisé pour faire tourner uniquement des noyaux invités adaptés et conscients d’être virtualisés. Les applications des systèmes invités tournent sur une pile de deux noyaux optimisés.

Cette approche fonctionne sans instructions spécifiques de virtualisation, mais nécessite que les systèmes invités soient modifiés, ce qui la rend impraticable pour des systèmes non libres.

Exemple :

  • Xen : noyau léger supportant Linux, Plan9, NetBSD, etc.

Les produits de virtualisation

Introduction

La virtualisation est une évolution logique des systèmes informatiques, permettant de faire tourner plusieurs systèmes d’exploitation complets simultanément sur une même machine. Initialement utilisée sur les gros systèmes (IBM), elle se démocratise grâce à la puissance des microprocesseurs modernes, souvent sous-exploitée.

Les premiers projets amateurs comme Boochs (émulateur x86) ont ouvert la voie, parallèlement à des solutions commerciales comme VMWare. Qemu, projet open source initié par Fabrice Bellard, a apporté un compilateur just-in-time et des accélérations via des raccourcis contrôlés.

Le laboratoire de Cambridge a développé Xen, un moniteur évolué pour la cohabitation de plusieurs OS. Les fabricants de processeurs Intel et AMD ont intégré des instructions spécifiques (VT et AMD-V) pour faciliter la virtualisation.

Le projet Libvirt, initié par RedHat, vise à fournir une API commune à plusieurs solutions de virtualisation, facilitant le développement d’outils graphiques et d’administration. Libvirt supporte aujourd’hui Xen, Qemu et OpenVZ.

Les gains de la virtualisation sont matériels (consolidation de serveurs, plateformes de test), en sûreté de fonctionnement (clusters, redondance) ou les deux. Elle permet par exemple de configurer une ferme de serveurs de secours sur une seule machine, sans contraintes d’homogénéité logicielle.

Quelques produits du marché

La référence commerciale est VMWare, proposant une gamme complète de solutions de virtualisation avec outils de gestion. VMWare est gratuit pour les machines jusqu’à 2 processeurs, payant au-delà, et distribué sous licence propriétaire avec brevet aux États-Unis.

Le logiciel libre phare est Qemu, base de nombreux autres produits (dont VirtualBox). Utilisé seul, Qemu offre une interface en ligne de commande puissante mais austère, avec de nombreuses fonctionnalités originales.

Ces deux références sont des machines virtuelles, VMWare proposant aussi un produit proche de l’hyperviseur complet. Les systèmes libres couvrent presque toutes les techniques de virtualisation :

  • Qemu et VirtualBox : machines virtuelles
  • Xen : paravirtualisation
  • OpenVZ : virtualisation au niveau OS
  • Xen 3.0 et KVM : hyperviseurs complets sur machines compatibles

Outils libres de virtualisation

La communauté libre propose de nombreux projets, parfois soutenus par des sociétés offrant des services payants :

  • Bochs : émulateur complet de PC Intel
  • KVM : solution performante et facile à administrer, soutenue par Qumranet
  • Linux-VServer : virtualisation sur GNU/Linux
  • OpenVZ : virtualisation performante, soutenue par Virtuozzo
  • Qemu : machine virtuelle multi-architecture, créée par Fabrice Bellard
  • Xen : virtualisation performante pour serveurs, soutenue par XenSource

Autres projets open source :

  • Bochs
  • Cooperative Linux
  • FreeVPS
  • Jail
  • KVM (nécessite extensions AMD ou Intel)
  • Linux-VServer
  • OpenVZ
  • PearPC (émule PowerPC)
  • Qemu
  • View-OS
  • User Mode Linux
  • VirtualBox
  • Xen
  • Zones (licence libre Solaris)

Glossaire des termes clés

  • Hôte : système d’exploitation installé sur la machine physique qui supervise les machines virtuelles.
  • Invité : système d’exploitation fonctionnant dans une machine virtuelle.
  • Superviseur : logiciel assurant le cloisonnement et le partage des ressources entre machines virtuelles.
  • Machine virtuelle : logiciel qui émule un matériel complet pour faire tourner un OS invité.
  • Isolateur : logiciel isolant des applications dans des zones d’exécution distinctes, partageant le même noyau.
  • Hyperviseur complet : noyau léger supervisant plusieurs OS natifs, utilisant parfois des instructions matérielles dédiées.
  • Paravirtualiseur : noyau hôte optimisé pour faire tourner des noyaux invités adaptés à la virtualisation.
  • Legacy applications : applications anciennes ne fonctionnant plus sur les systèmes modernes.
  • Libvirt : projet fournissant une API commune pour gérer différentes solutions de virtualisation.

Points clés à retenir

  • La virtualisation permet de faire fonctionner plusieurs systèmes d’exploitation sur une même machine physique, optimisant l’utilisation des ressources.
  • Elle offre des avantages en termes de sécurité, flexibilité, consolidation de serveurs et maintien d’applications anciennes.
  • Quatre grandes techniques de virtualisation existent : machines virtuelles, isolateurs, hyperviseurs complets et paravirtualisation.
  • Les performances et le niveau d’isolation varient selon la technique employée.
  • De nombreux produits libres et propriétaires couvrent ces différentes techniques, offrant un large choix selon les besoins.
  • Les extensions matérielles Intel VT et AMD-V améliorent les performances de la virtualisation sur PC.
  • Le projet Libvirt facilite la gestion multi-plateforme des environnements virtualisés.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions