Virtualisation

La virtualisation est une technique d'isolation pour une application ou un système. Il existe cinq familles de virtualisation et isolation possible pour isoler un programme. Chaque virtualisation a ses avantages et inconvénients.

Les hyperviseurs de type 1 sont directement installé sur le matériel physique. Ils remplacent l'OS. Parmi les hyperviseurs de type 1 nous avons :

Les hyperviseurs de type 1 utilisent le processeur de l'hôte directement. Les machines virtuelles doivent être de la même architecture processeur que l'hôte (ou du moins d'une architecture compatible avec le processeur de l'hôte).

Ce système a l'avantage d'avoir des bonnes performances tout en ayant une grande souplesse sur le système virtualisé. En effet on peut utiliser tout type d'OS basé sur l'architecture de l'hôte et l'hyperviseur ayant un accès direct à la mémoire, il peut optimiser les performances.

Les hyperviseurs de type 2 s'installent sur un OS déjà existant. Comme les hyperviseurs de type 1, ils peuvent faire fonctionner tout type d'OS basé sur une architecture processeur compatible avec l'architecture de l'hôte. Voici une liste d'hyperviseur de type 2 :

Les hyperviseurs de type 2 sont particulièrement efficace pour tester des systèmes. En effet ils peuvent être utilisé pour faire des tests sur une station de travail. Ils sont moins performant que les hyperviseurs de type 1, la mémoire n'étant pas directement accessible par l'hyperviseur.

Les émulateurs sont les systèmes de virtualisation les plus permissifs, mais aussi les moins performants. Un émulateur a l'avantage de pouvoir faire fonctionner tout type de système, quelque soit l'architecture processeur. En émulateur nous avons :

Les émulateurs sont principalement utilisés pour tester des systèmes embarqués (mobiles / consoles / rapsberry).

Les conteneurs, aussi parfois appelé isolateurs, sont principalement utilisés sur les systèmes UNIX. Ils permettent de faire fonctionner plusieurs système sur le même noyeau. Dans le cas des conteneurs, les différents systèmes doivent avoir un noyau compatible. Voici une liste de système de conteneurs :

  • LXC
  • OpenVZ
  • BSD Jails
  • rkt
Docker est très loin d'être le précurseur dans la matière ;)