Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
wiki:virtualisation_et_emulation [2024/12/28 00:07] – [Virtualisation avec Hyperviseurs et Conteneurs] Thibault Seguin | wiki:virtualisation_et_emulation [2025/03/11 21:30] (Version actuelle) – [Le Monde de la virtualisation et l'émulation] Thibault Seguin |
---|
====== Le Monde de la Virtualisation et l'Émulation ====== | ====== Monde de la virtualisation et l'émulation ====== |
| |
===== Virtualisation avec Hyperviseurs et Conteneurs ===== | ===== 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**. | 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**. | 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 ==== | ==== 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 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''. |
* [[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: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é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**). |
* [[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 **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: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://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 === |
| |
=== Gestionnaire de Virtualisation Web === | === Gestionnaire de virtualisation web === |
| |
===== É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 **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'[[wiki:virtualisation_et_emulation:émulateurs]] plus conséquente. |
==== Émulateur multi-architecture ==== | ==== Émulateur multi-architecture ==== |
* [[wiki:virtualisation_et_emulation:QEMU]] (**//Quick Emulator//**) Rédaction en cours, rendez vous [[https://fr.wikipedia.org/wiki/QEMU|ici]] | * [[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: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. |
| |
==== Émulateur de Console de Jeux ==== | ==== Émulateur de console de jeux ==== |
En ce qui concerne les **émulateurs** de **console de jeux** rendez-vous [[https://wiki.ordunix.net/doku.php?id=wiki:gaming#retrogaming|ici]]. | En ce qui concerne les **émulateurs** de **console de jeux** rendez-vous [[https://wiki.ordunix.net/doku.php?id=wiki:gaming#retrogaming|ici]]. |
| |
| |