Les différents types de virtualisation : La virtualisation totale

Dans l’article précédent, j’ai proposé une classification des différents types de virtualisation de systèmes d’exploitation basée sur différents critères. Je vais continuer cette série d’articles en vous présentant la virtualisation totale qui est le type de virtualisation le plus répandu historiquement.

La virtualisation totale consiste à émuler l’intégrité d’une machine physique. Pour rappel, l’émulation est le principe qui consiste à remplacer un composant matériel par une application dont le comportement est similaire voire identique. Le cas le plus classique d’émulation est l’émulation de vieilles consoles de jeux telles que la Super Nintendo ou la Game Boy. L’objectif de la virtualisation totale 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.

Il s’agit de l’approche la plus basique en terme de virtualisation : « On ne peut pas avoir du matériel physique du coup on va le remplacer par une application ». Il s’agit de la première approche qui a été adoptée par VMWare en 1999 lors de sa création.

Virtualisation Totale

Comme présenté dans le schéma, la base installée sur le matériel est un système d’exploitation classique. Tous les systèmes d’exploitation, à ma connaissance, sont capables d’exécuter une application de virtualisation totale. Ceci est lié à la simplicité de son fonctionnement. La « Couche Logicielle » évoquée dans le schéma est une application telle que VMWare ou VirtualBox qui s’exécute comme toute autre application. Cette couche logicielle va ensuite émuler autant de matériel qu’il y a de machines virtuelles.

Certains vendeurs telles que VMWare vendent des solutions de virtualisation nommées « Bare Metal Hypervisor ». Cependant ce que VMWare appelle hyperviseur n’est absolument pas un hyperviseur au sens de Xen. Il s’agit en réalité d’un Linux Red Hat customisé.

L’inconvénient de la virtualisation totale est la performance. Il est nécessaire d’émuler de nombreux composants physiques et de capter toutes les instructions émanants des machines virtuelles ce qui consomme beaucoup de ressources. Des tests montrent de pertes de performance de l’ordre de 20% à 80%. Il est possible d’améliorer significativement les performances en ajoutant des pilotes de paravirtualisation qui permettent un meilleur interfacage avec la couche logicielle sous-jacente.