Outils système – La virtualisation système – vulgarisation informatique

1 – Prémisses

La virtualisation système est un ensemble de techniques matérielles et/ou logicielles qui permettent de faire fonctionner sur une seule et même machine plusieurs systèmes d’exploitation simultanément et séparément les uns des autres, comme si ils fonctionnaient sur des machines physiques distinctes.

La virtualisation système consiste à virtualiser complètement l’environnement matériel c’est-à-dire le processeur, la mémoire vive, le disque dur, le réseau et les divers autres périphériques d’entrées/sorties au sein d’une machine virtuelle pour qu’elle puisse accueillir un système d’exploitation au complet.

Une machine virtuelle se comporte donc exactement comme un ordinateur physique et contient ses propres ressources matérielles qui sont alors virtuelles (c’est-à-dire basées sur du logiciel).

Les plateformes de virtualisation permettant à plusieurs systèmes d’exploitation de travailler en même temps sur une même machine physique sont appelés « Hyperviseur » ou encore « Virtual Machine Monitor » (VMM) en anglais.

2 – Les hyperviseurs

Le rôle de l’hyperviseur est de mettre en place une ou plusieurs machines virtuelles dans lequelles sont exécutés des systèmes d’exploitations. Ces systèmes sont appelés « systèmes invités » ou « guest system » pour les anglophones.

Les hyperviseurs sont classés en deux catégories :

1 – Les hyperviseurs de type 1 (natif ou encore bare-metal):

Un hyperviseur de « type 1 » est un hyperviseur s’exécutant directement sur une plateforme matérielle. Il implémente la plupart des services que fournissent les noyaux de systèmes d’exploitation courants, entre autres : la gestion mémoire complète des machines virtuelles ainsi que leur ordonnancement. Il peut être assimilé à un noyau allégé et optimisé, il n’est donc pas dépendant d’un système d’exploitation classique pour fonctionner.

Les systèmes d’exploitation invités doivent généralement être adaptés à la couche de virtualisation, ils ont donc « conscience » d’être virtualisés.
Il semblerait que sur les machines disposant de processeurs ayant les instructions de virtualisation matérielle (AMD-V et Intel-VT), l’OS invité n’ai plus besoin d’être modifié pour pouvoir être exécuté dans un hyperviseur de type 1.

A savoir que les machines virtuelles de noyau, qui transforment un noyau Linux complet en hyperviseur, sont considérées comme hyperviseurs de type 1.

2 – Les hyperviseurs de type 2 (hébergé, host-based):

Un hyperviseur de « type 2 » est un hyperviseur s’exécutant par dessus un système d’exploitation classique (hote) comme n’importe quel autre programme. Il utilise les services fournis par le système d’exploitation hote pour gérer de la mémoire et l’ordonnancement des machines virtuelles.

Les systèmes d’exploitation invités n’ont pas conscience d’être virtualisés.

3 – Les 3 grandes classes de virtualisation

3.1 – La virtualisation complète

La virtualisation complète fournit un environnement matériel virtuel (interface et ressources) représentant une architecture réelle sans aucune simplification de l’interface et des ressources associées à cette architecture.

La virtualisation complète consiste donc à émuler l’intégralité d’une machine physique. Pour rappel, l’émulation est le principe qui consiste à remplacer un composant matériel par une application logicielle dont le comportement est similaire voire identique.

L’objectif de la virtualisation complète est donc de faire croire au système d’exploitation invité qu’il est présent sur du matériel physique et non au-dessus d’une couche applicative.

Voici quelques solutions de virtualisation complète :
- KVM
- VirtualBox

3.2 La paravirtualisation

La paravirtualisation vise à instaurer une collaboration directe entre l’hyperviseur et ses systèmes « invités » dans le but d’en faciliter la gestion. La paravirtualisation implique donc une modification des systèmes d’exploitation « invités » pour communiquer directement avec un hyperviseur au lieu de communiquer avec une machine physique.

L’hyperviseur au sens de la paravirtualisation est en contact direct avec le matériel physique. Il est l’intermédiaire exclusif entre le matériel et les systèmes d’exploitation invités.
Lorsqu’on se trouve en présence d’un système de paravirtualisation, il n’y a plus de notion de système d’exploitation invité et de système d’exploitation hôte. Tous les systèmes d’exploitation sont virtualisés dans le sens où ils disposent d’un noyau adaptés à la couche de virtualisation.

Les systèmes d’exploitation communiquent avec l’hyperviseur via des API de communication. Ces API de communication remplacent les traditionnels appels systèmes. Chaque couche de virtualisation dispose donc de sa propre API. Pour adapter un système d’exploitation à un hyperviseur, il faut donc intégrer son API au noyau.

Voici quelques solutions de paravirtualisation :
- Xen

3.3 La virtualisation par containers (isolateur)

La virtualisation par containers n’exécute pas un système d’exploitation au complet mais effectue un cloisonnement de processus.

La virtualisation par containers autorise l’instanciation de multiples « espaces utilisateurs » au sein d’un même noyau et d’isoler l’exécution des applications dans ce que l’on appelle des contextes ou bien zones d’exécution.

Cette solution est uniquement liée aux systèmes Linux.

Voici quelques solutions de virtualisation par containers :
- Linux-VServer
- OpenVZ

Sources :
Antoine Benkemoun (dont certaines explications sont directement extraites de son blog)
Presence-pc
Wikipedia

Partager cet article :
Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

3 Commentaires to “Outils système – La virtualisation système – vulgarisation informatique”

  • Bonjour,

    C’est avec surprise que je vois cet article sur votre site. Bien que cela me fasse habituellement plaisir de lire des sujets traitant de la virtualisation, votre article me chagrine quelque peu.
    Vous copiez des paragraphes entiers de mon blog sur votre blog personnel. Certes, vous me mentionnez en tant que source mais cela ne change rien. Vous avez également copié intégralement mes schémas.
    Je vous demande donc de retirer ce contenu de votre site. Je vous invite à me contacter via l’adresse email que j’ai saisi dans ce formulaire afin que nous puissions en discuter plus longuement.

    Amicalement,

    Antoine Benkemoun

  • Phil V.L dit :

    Bonjour,

    Suite à votre commentaire, j’ai supprimé l’article concernant la virtualisation de mon site.

    Comme je l’ai écrit dans mon tout mon premier post, j’essaie de recenser les différents trucs et astuces qu’il m’ont plu sur le net afin de pouvoir les retrouver facilement sans me casser la tête avec des milliers de marques pages.

    J’ai visité de nombreux sites internet à la la recherche d’informations précises et didactique sur le sujet et je suis arrivé sur votre blog où les explications sont très bien rédigé. J’ai donc copié quelques parties de vos explications qui à mon sens n’avaient pas besoin d’être reformulées…

    Voilà pour ma démarche…
    Philippe

  • Bonsoir,

    J’avoue m’être arrêté sur cet article. Je n’avais pas parcouru le reste de votre blog. Je l’ai fait depuis et je vais le garder sous le coude car votre contenu m’intéresse également.
    Merci d’avoir répondu à mon commentaire, je comprends beaucoup mieux.
    Je n’ai pas de soucis à ce que des personnes recopient du contenu de mon blog à partir du moment où il est clairement mentionné qu’il s’agit du contenu provenant de mon blog et que l’on m’en informe. C’est même plutôt flatteur devrais-je dire.
    Je n’ai donc aucun problème pour que vous re-publiez l’article en question à partir du moment où vous faites cette mention.

    Bonne soirée,
    Antoine Benkemoun

  • Laissez une réponse :

    Nom (obligatoire) :
    E-mail (ne sera pas rendu public) (obligatoire) :
    Site web :
    Commentaire (obligatoire) :
    XHTML: Vous pouvez utiliser les balises suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>