wiki:virtualisation_et_emulation

Le Monde de la Virtualisation et l'Émulation

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.

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.

  • VirtualBox, nom complet Oracle VM VirtualBox est un hyperviseur qui est développé par Oracle Corporation compatible avec l'architecture processeur Intel x86, Intel x86_64 (x64) et ARM64. Rédaction en cours, rendez vous ici.
  • VMware Player Rédaction en cours, rendez vous ici.
  • Bhyve est l'hyperviseur natif de FreeBSD. Rédaction en cours, rendez vous ici.
  • Hyper-V est l'hyperviseur natif de Windows de Microsoft. Rédaction en cours, rendez vous ici.

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).

  • KVM est l'hyperviseur intégré dans le noyau Linux. Rédaction en cours, rendez-vous ici
  • Xen est un hyperviseur développé par The Xen Project et compatible avec x86, x86-64, IA-64, PowerPC et ARM Cortex-A7 et Cortex-A15. Rédaction en cours, rendez vous ici
  • LXC est le système de base de conteneurisation sous Linux. Rédaction en cours, rendez vous ici
  • Docker sont des conteneurs (containers en anglais) qui virtualise des distributions Linux par isolation et qui sont compatibles avec Linux, macOS, Windows et FreeBSD. Rédaction en cours, rendez vous ici
  • BSD Jails sont les containers (prisons) sous FreeBSD, qui supportent la virtualisation par isolation de FreeBSD et Linux. Rédaction en cours, rendez vous ici
  • Zone Solaris Rédaction en cours, rendez vous ici

Gestionnaire de Virtualisation Graphique

  • Virtual Machine Manager un excellent gestionnaire de machine virtuelle qui est une interface graphique pour KVM, LXC,Xen,…
  • AQEMU est une interface graphique pour KVM mais également pour l'émulateur QEMU.

Gestionnaire de Virtualisation en Ligne de Commande

Gestionnaire de Virtualisation Web

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.

  • QEMU (Quick Emulator) est un des émulateurs les plus complet et il permet d'agir comme un logiciel de virtualisation via des hyperviseurs tel que KVM ou NVMM. Rédaction en cours, rendez vous ici
  • GXemul Rédaction en cours, rendez vous ici
  • SimH est un émulateur dédié aux ordinosaures (ordinateurs d' antan). Rédaction en cours, rendez vous ici
  • Bochs Rédaction en cours, rendez vous ici
  • PearPC Rédaction en cours, rendez vous ici
  • PCem est un émulateur dédié à aux ordinateurs et OS d'antan sur processeur x86, des processeurs 16 bits et 32 bits. C'est donc un émulateur qui fait revivre les anciens compatibles PC. Dans la même veine il y a l'émulateur du nom de 86Box, qui est encore plus complet.

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

  • wiki/virtualisation_et_emulation.txt
  • Dernière modification : 2025/01/16 19:38
  • de Thibault Seguin