wiki:virtualisation_et_emulation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:virtualisation_et_emulation [2025/04/24 10:54] Thibault Seguinwiki:virtualisation_et_emulation [2025/04/24 11:19] (Version actuelle) – [Émulateur à architecture unique] Thibault Seguin
Ligne 4: Ligne 4:
 Contrairement à l'**émulation** qui émule la totalité d'un ordinateur, un **hyperviseur** utilise les ressources de l'ordinateur hôte (ordinateur sur lequel est installé 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. Contrairement à l'**émulation** qui émule la totalité d'un ordinateur, un **hyperviseur** utilise les ressources de l'ordinateur hôte (ordinateur sur lequel est installé 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 **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 permet 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 à 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 possibilité d'avoir un //environnement 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. +La **conteneurisation** à quelques similitudes avec l'appel système et commande Unix **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 permet 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 à 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 possibilité d'avoir un //environnement 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 ==== ==== 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''+Un **hyperviseur** de ''type 2'' est un hyperviseur qui doit être installé sur un système d'exploitation, de ce 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 appelé //hyperviseur hébergé//. Ce type d'hyperviseur est en général préféré par les particuliers. 
-  * [[wiki:virtualisation_et_emulation: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 [[https://fr.wikipedia.org/wiki/Oracle_VM_VirtualBox|ici]].+  * [[wiki:virtualisation_et_emulation: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 [[https://fr.wikipedia.org/wiki/Oracle_VM_VirtualBox|ici]].
   * [[wiki:virtualisation_et_emulation:VMware Player]] Rédaction en cours, rendez vous [[https://en.wikipedia.org/wiki/VMware_Workstation_Player|ici]].   * [[wiki:virtualisation_et_emulation:VMware Player]] Rédaction en cours, rendez vous [[https://en.wikipedia.org/wiki/VMware_Workstation_Player|ici]].
-  * [[wiki:virtualisation_et_emulation:Bhyve]] est l'**hyperviseur** ''natif'' de **FreeBSD**. Rédaction en cours, rendez vous [[https://en.wikipedia.org/wiki/Bhyve|ici]]. +  * [[wiki:virtualisation_et_emulation:Bhyve]] est l'hyperviseur //natif// de **FreeBSD**. Rédaction en cours, rendez vous [[https://en.wikipedia.org/wiki/Bhyve|ici]]. 
-  * [[wiki:virtualisation_et_emulation:Hyper-V]] est l'**hyperviseur** ''natif'' de **Windows** de **Microsoft**. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/Hyper-V|ici]].+  * [[wiki:virtualisation_et_emulation:Hyper-V]] est l'hyperviseur //natif// de **Windows** de **Microsoft**. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/Hyper-V|ici]].
  
 ==== Hyperviseurs de type 1 ==== ==== 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**). +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élicat à 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). 
-  * [[wiki:virtualisation_et_emulation:KVM]] est l'**hyperviseur** intégré dans le **noyau Linux**. Rédaction en cours, rendez-vous [[https://fr.wikipedia.org/wiki/Kernel-based_Virtual_Machine|ici]] +  * [[wiki:virtualisation_et_emulation:KVM]] est l'hyperviseur intégré dans le **noyau Linux**. Rédaction en cours, rendez-vous [[https://fr.wikipedia.org/wiki/Kernel-based_Virtual_Machine|ici]] 
-  * [[wiki:virtualisation_et_emulation: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 [[https://fr.wikipedia.org/wiki/Xen|ici]]+  * [[wiki:virtualisation_et_emulation: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 [[https://fr.wikipedia.org/wiki/Xen|ici]]
  
 ==== Conteneurisation (containers) ==== ==== Conteneurisation (containers) ====
-  * [[wiki:virtualisation_et_emulation:LXC]] est le **système** de base de **conteneurisation** sous **Linux**. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/LXC|ici]] +  * [[wiki:virtualisation_et_emulation:LXC]] est le système de base de conteneurisation sous Linux. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/LXC|ici]] 
-  * [[wiki:virtualisation_et_emulation: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 [[https://fr.wikipedia.org/wiki/Docker_(logiciel)|ici]]  +  * [[wiki:virtualisation_et_emulation:Docker]] sont des conteneurs (//containers// en anglais) qui virtualisent des distributions Linux par //isolation// et qui sont compatibles avec **Linux**, **macOS**, **Windows** et **FreeBSD**. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/Docker_(logiciel)|ici]]  
-  * [[wiki:virtualisation_et_emulation:BSD Jails]] sont les **containers** (**prisons**) sous **FreeBSD**, qui supportent la **virtualisation** par **isolation** de **FreeBSD** et **Linux**. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/BSD_Jail|ici]]+  * [[wiki:virtualisation_et_emulation:BSD Jails]] sont les containers (prisons) sous **FreeBSD**, qui supportent la virtualisation par isolation de FreeBSD et Linux. Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/BSD_Jail|ici]]
   * [[wiki:virtualisation_et_emulation:Zone Solaris]] Rédaction en cours, rendez vous [[https://www.unixmaniax.fr/wiki/index.php?title=Zones_-_Solaris|ici]]   * [[wiki:virtualisation_et_emulation:Zone Solaris]] Rédaction en cours, rendez vous [[https://www.unixmaniax.fr/wiki/index.php?title=Zones_-_Solaris|ici]]
  
 ==== Gestionnaire de technologie de virtualisation ==== ==== Gestionnaire de technologie de virtualisation ====
 === Gestionnaire de virtualisation graphique === === Gestionnaire de virtualisation graphique ===
-  *[[https://virt-manager.org/|Virtual Machine Manager]] un excellent **gestionnaire de machine virtuelle** qui est une **interface graphique** pour **KVM****LXC**,**Xen**,... +  *[[https://virt-manager.org/|Virtual Machine Manager]] un excellent //gestionnaire de machine virtuelle// qui est une interface graphique pour KVM, LXC, Xen,... 
-  *[[https://github.com/tobimensch/aqemu|AQEMU]] est une **interface graphique** pour **KVM** mais également pour l'**émulateur** **QEMU**.+  *[[https://github.com/tobimensch/aqemu|AQEMU]] est une interface graphique pour KVM mais également pour l'émulateur **QEMU**.
  
 === Gestionnaire de virtualisation en ligne de commande === === Gestionnaire de virtualisation en ligne de commande ===
Ligne 34: Ligne 34:
  
 ===== Émulation ===== ===== É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.+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 composants 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 avec 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 à utiliser l'émulation) 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// requises de ne sont pas vraiment importante au vu des performances des ordinateurs actuels.
  
 Vous trouvez une liste d'[[wiki:virtualisation_et_emulation:émulateurs]] plus conséquente. Vous trouvez une liste d'[[wiki:virtualisation_et_emulation:émulateurs]] plus conséquente.
 ==== Émulateur multi-architecture ==== ==== Émulateur multi-architecture ====
-  * [[wiki:virtualisation_et_emulation: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 [[https://fr.wikipedia.org/wiki/QEMU|ici]]+  * [[wiki:virtualisation_et_emulation:QEMU]] (**//Quick Emulator//**) est un des émulateurs le 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 [[https://fr.wikipedia.org/wiki/QEMU|ici]]
   * [[wiki:virtualisation_et_emulation:GXemul]] Rédaction en cours, rendez vous [[https://en.wikipedia.org/wiki/GXemul|ici]]   * [[wiki:virtualisation_et_emulation:GXemul]] Rédaction en cours, rendez vous [[https://en.wikipedia.org/wiki/GXemul|ici]]
-  * [[wiki:virtualisation_et_emulation:SimH]] est un **émulateur** ''dédié'' aux **ordinosaures** (**ordinateurs** d' ''antan''). Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/SIMH|ici]]+  * [[wiki:virtualisation_et_emulation:SimH]] est un émulateur dédié aux ordinosaures (ordinateurs d'antan). Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/SIMH|ici]]
    
 ==== Émulateur à architecture unique ==== ==== Émulateur à architecture unique ====
   * [[wiki:virtualisation_et_emulation:Bochs]] Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/Bochs|ici]]   * [[wiki:virtualisation_et_emulation:Bochs]] Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/Bochs|ici]]
   * [[wiki:virtualisation_et_emulation:PearPC]] Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/PearPC|ici]]   * [[wiki:virtualisation_et_emulation:PearPC]] Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/PearPC|ici]]
-  * [[https://doc.ubuntu-fr.org/pcem|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.+  * [[https://doc.ubuntu-fr.org/pcem|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.
  
 ==== Émulateur de console de jeux ==== ==== Émulateur de console de jeux ====
  • wiki/virtualisation_et_emulation.1745492076.txt.gz
  • Dernière modification : 2025/04/24 10:54
  • de Thibault Seguin