====== 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''. * [[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: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]]. ==== 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**). * [[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]] ==== 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: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: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]] ==== Gestionnaire de Technologie de Virtualisation ==== === 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 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'[[wiki:virtualisation_et_emulation:émulateurs]] plus conséquente. ==== É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: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]] ==== É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: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 ==== En ce qui concerne les **émulateurs** de **console de jeux** rendez-vous [[https://wiki.ordunix.net/doku.php?id=wiki:gaming#retrogaming|ici]].