Cloisonnement et Virtualisation
Voici un petit article pour décrire les différentes techniques de cloisonnement et de virtualisation disponibles sous quelques OS libres et notement Linux.
Introduction
Il y a quelques années, on ne parlait pas autant de virtualisation car ce genre de technologie n'était disponible que dans les systèmes d'exploitation présents sur les mainframes.
Sur des OS plus accessibles, ils sont arrivés plus récement, quoique la première méthode de virtualisation est asez ancienne sur les systèmes Unix.
Chroot
chroot est la 1ère technologie de cloisennement. Avec cette technologie, on peut lancer des processus dans un autre environnement d'exécution (librairie d'éxécution, configuration des logiciels différentes).
En fait, on change le répertoire racine du processus que l'on va exécuter. On peut donc installer une nouvelle version d'une distribution dans un répertoire, changer le répertoire racine (chroot) pour se positionner dans ce nouveau répertoire et lancer les différents processus.
Ces processus ne pourront pas accèder à des fichiers présents en dehors du répertoire "chroot" ce qui permet de les sécuriser par exemple.
Cela permet aussi d'éxécuter des processus qui ont besoin d'une librairie dans une version particulière et qui n'est pas la version de base de sa distribution.
Par contre si on lance un shell dans ce nouvel environnement : lors d'un ps, on va voir l'ensemble des processus qui tournent sur la machine et on ne peut pas modifier la configuration "basse" du système (comme le réseau par exemple).
Virtualisation au niveau système d'exploitation
Après le cloisonnement, on va aller plus loin avec cette technologie de virtualisation au niveau système d'exploitation.
En effet, cette fois on va pouvoir démarrer une nouvelle instance de son système d'exploitation. Qui dit nouvelle instance, dit nouvelle configuration globale de cette instance avec par exemple une nouvelle IP, des nouveaux utilisateurs (et donc pouvoir fournir une accès root avec un nouveau mot de passe pour cette instance)... : tout est nouveau
Par contre, comme on crée une instance du système d'exploitation qui tourne déjà sur la machine (système hôte) c'est le même noyau qui est utilisée dans cette instance (on peut tout à fait utiliser une autre distribution dans le cas Linux) et on ne va pas pouvoir modifier des paramètres du noyau dans notre instance.
Dans cette catégorie, on peut citer OpenVZ et VServer pour Linux, les Zones/Container pour OpenSolaris et les Jail de FreeBSD.
En fonction de l'outil utilisé, on va quand même pouvoir utiliser les outils installés dans le système hôte ce qui permet de réduire la place disque occupé (comme avec les Zones de Solaris).
Para-Virtualisation
Encore plus loin dans la virtualisation, on va cette fois pouvoir démarrer un système d'exploitation complet (noyau/kernel compris).
Pour pouvoir le faire, une partie du processus de virtualisation va être traité par le système hôte et une partie par le système invité (le système que l'on veut démarrer) car il va falloir qu'il accède au travers le système hôte aux matériels présents dans la machine.
Cette obligation de modification du système invité réduit malheureusement les candidats à la virtualisation.
Dans cette catégorie, on peut citer Xen et UML.
Machine Virtuelle
Encore plus loin, cette fois la couche de virtualisation va émuler aussi le matériel présent (ou pas) dans une machine.
Cela permet de montrer au système invité (que l'on va installer) une machine complète : on n'a plus besoin de le modifier car il a l'impression d'être sur une vraie machine.
Dans cette catégorie, on peut citer QEmu et le célèbre VmWare (qui n'est pas libre, uniquement gratuit dans sa version server et player).
Conclusion
Ces différentes technologies répondent à des besoins différents et il est bien de savoir ce que l'on veut faire avant d'en choisir une pour ne pas perdre trop en performance par rapport aux fonctionnalités obligatoires requises.
En effet, plus ces technologies offrent de possibilités (dans l'ordre : cloisonnement - virtualisation au niveau OS - Paravirtualisation - Machine virtuelle) et plus on perd en performance (over-head).
Mais cette affirmation risque de changer avec l'utilisation des API de virtualisation incluses dans les nouveaux processeurs d'Intel et AMD.
Commentaires
Afficher les commentaires en Vue non groupée | Vue groupée