Table des matières

Le Monde de la Virtualisation et l'Émulation

Virtualisation avec Hyperviseurs et Conteneurs

Contrairement à l'émulation qui émule la totalité d'un ordinateur, un hyperviseur utilise les ressources de l'ordinateur hôte (ordinateur sur lequel est installer l'hyperviseur), en gros il utilise les composants internes de l'ordinateur hôte comme le processeur (CPU), la mémoire vive (RAM), la carte graphique (GPU), carte réseau, carte son,… Par contre, l'hyperviseur ne peut exécuter une VM (machine virtuelle) et système d'exploitation invité que si il se base sur la même architecture processeur que l'ordinateur hôte. C'est à dire que sur un ordinateur ayant un processeur Intel ou AMD 64 bits (x86), l'hyperviseur ne peut virtualiser qu'un système d'exploitation invité (OS invité) ou VM basé sur l'Intel ou AMD 64bits ou 32bits (x86) alors qu'un émulateur peut émuler n'importe quel architecture de processeur. Un OS invité est totalement isolé de l'ordinateur et de l'OS Hôte et même des autres VM, si il y en a. C'est le principe de la virtualisation complète ! Une VM est un ordinateur virtualisé et l'OS invité est l'OS installé sur cette VM.

La conteneurisation à quelques similitudes avec l'appel système et commande Unix du nom de chroot mais en utilisant une isolation complète entre l'OS Hôte et les autres conteneurs. Je vais prendre pour exemple les conteneurs LXC, les conteneurs ont une méthode de virtualisation au niveau du système d'exploitation, c'est à dire que les conteneurs peuvent virtualiser plusieurs systèmes Linux (n'importe quelle distribution Linux est virtualisable) sur un ordinateurs hôte qui comportent lui aussi un système Linux, pour cela les conteneurs utilisent le noyau Linux de l'OS Hôte sur l'ordinateur hôte ce qui premet d'exécuter les logiciels d'un conteneur de façon pour ainsi dire native. Un conteneur n'a accès à aucune donnée de l'OS Hôte et des autres conteneurs, l'isolation est parfaite, le seul OS qui peut accèder à toutes les données des conteneurs est l'OS Linux Hôte (OS principal de l'ordinateur). À noter qu'un conteneur ne virtualise pas le noyau étant donné qu'il utilise le noyau Linux de l'Hôte mais la totalité de l'espace utilisateur, c'est à dire tout ce qui compose un système Linux hormis le noyau. Il faut aussi préciser que contrairement à la virtualisation par hyperviseur on peut tout à fait virtualiser un conteneur Linux à processeur ARM sur un ordinateurs hôte avec un Linux avec processeur x86 (Intel ou AMD). En définitive, les conteneurs sont parfaits pour avoir plusieurs serveurs Web Linux sur le même ordinateur par exemple ou avoir un conteneur Linux qui donne la possiblité d'avoir un environment de développement, compilation sans interféré avec votre OS Linux principal, enfin vous avez une infinité de possibilités avec la virtualisation par conteneurs.

Hyperviseurs de Type 2

Un hyperviseur de type 2 est un hyperviseur qui doit être installé sur un système d'exploitation, de se fait, au vu de l'OS, c'est une simple application, ce qui permet d'installer se type d'hyperviseur très simplement. Se genre d'hyperviseur est également appele hyperviseur hébergé. Ce type d'hyperviseur est en général préféré par les particuliers.

Hyperviseurs de Type 1

Un hyperviseur de type 1 est un hyperviseur de type bare-metal, c'est à dire qu'il ne nécessite pas de système d'exploitation pour fonctionner se qui accrue globalement les performances de se genre d'hyperviseur qui n'a aucun intermédiaire entre l'hyperviseur et le matériel informatique. Mais se genre d'hyperviseur est souvent plus délicas à mettre en oeuvre et configurer. Ce type d'hyperviseur est en général privilégié par les professionnels et pour l'utilisation sur serveur informatique ayant plusieurs VM (machines virtuelles).

Conteneurisation (Containers)

Gestionnaire de Technologie de Virtualisation

Gestionnaire de Virtualisation Graphique

Gestionnaire de Virtualisation en Ligne de Commande

Gestionnaire de Virtualisation Web

Émulation

L'émulation permet de simuler la totalité, d'une console de jeux, d'un ordinateur virtuel complet comprenant : le processeur (CPU), la mémoire vive (RAM), la carte graphique (GPU), carte réseau, carte son,…, enfin en clair, contrairement à un hyperviseur qui simule le moins de composant possible, c'est l'inverse pour l'émulateur. L'émulateur a ses propres atouts et inconvénients, parmi les atouts, il y a le fait qu'un émulateur peut simuler n'importe qu'elle type d'ordinateur avec un processeur complètement différent de l'ordinateur hôte (sur lequel est installer l'émulateur), par exemple vous pouvez avec un émulateur simuler un ordinateur à processeur à architecture : i386 (x86), mips, alpha, m68k, arm, ppc (powerpc), risc-v sur un ordinateur hôte qui a n'importe qu'elle architecture de processeur, par exemple pour les plus courantes x86 ou arm en 64 bits ou 32 bits (peut importe), c'est à dire qu'on peut simuler n'importe quel architecture de processeur sur un ordinateur hôte avec une architecture différente voir la même architecture processeur (mais dans se cas il n'y a pas trop d'intérêt à utliser l'émulatation) et parmi les inconvénients, vu que l'émulateur simule la totalité d'un ordinateur il y a forcément une perte de performance vu que l'émulateur n'utilise aucune ressource de l'ordinateur hôte (CPU,RAM,GPU,…) mais en général on utilise un émulateur pour simuler de vieux ordinateurs ou consoles de jeux donc les performances requisent de ne sont pas vraiment importante au vu des performances des ordinateurs actuels.

Vous trouvez une liste d'émulateurs plus conséquente.

Émulateur multi-architecture

Émulateur à Architecture unique

Émulateur de Console de Jeux

En ce qui concerne les émulateurs de console de jeux rendez-vous ici.