# Théorie Virtu # Théorie Linux ## Introduction Un des principaux atouts de Linux est sa polyvalence. Un aspect de cette polyvalence est la possibilité d’utiliser Linux pour héberger d’autres systèmes d’exploitation ou des applications individuelles dans un environnement complètement isolé et sécurisé. Cette leçon se concentre sur les concepts de virtualisation et de technologies de conteneurs ainsi que sur certains détails techniques à prendre en compte lors du déploiement d’une machine virtuelle sur une plate-forme de *cloud computing*. ### Aperçu de la virtualisation La virtualisation est une technologie qui permet à une plate-forme logicielle appelée *hyperviseur* d’exécuter des processus qui renferment un système informatique intégralement émulé. L’hyperviseur est chargé de gérer les ressources physiques du matériel qui pourront être utilisées par les différentes machines virtuelles. Ces machines virtuelles sont appelées des systèmes *virtualisés* (ou *invités*) de l’hyperviseur. Dans une machine virtuelle, bon nombre des caractéristiques d’un ordinateur physique sont émulées sous forme logicielle, comme le BIOS du système et les contrôleurs de disques durs. Une machine virtuelle utilise souvent des images disque qui sont stockées sous forme de fichiers individuels, elle aura accès à la RAM et au processeur de la machine hôte par le biais du logiciel hyperviseur. L’hyperviseur répartit l’accès aux ressources matérielles du système hôte entre les invités, ce qui permet à plusieurs systèmes d’exploitation de fonctionner sur un seul système hôte. Voici les hyperviseurs les plus courants sous Linux :
Xen
Xen est un hyperviseur *open source* de type 1, ce qui signifie qu’il ne dépend pas d’un système d’exploitation sous-jacent pour fonctionner. Un hyperviseur de ce type est connu sous le nom d’hyperviseur *bare metal* (natif), étant donné que l’ordinateur peut démarrer directement l’hyperviseur.
KVM
KVM (*Kernel-based Virtual Machine*) est un module du noyau Linux pour la virtualisation. KVM est à la fois un hyperviseur de type 1 et 2 ; même s’il a besoin d’un système d’exploitation Linux de base pour fonctionner, il est capable d’assumer parfaitement son rôle d’hyperviseur en s’intégrant à une installation Linux en cours d’exécution. Les machines virtuelles déployées avec KVM utilisent le démon `libvirt` et les logiciels associés pour être créées et gérées.
VirtualBox
Une application de bureau populaire qui permet de créer et de gérer facilement des machines virtuelles. Oracle VM VirtualBox est multiplateforme et fonctionne sous Linux, macOS et Microsoft Windows. Comme VirtualBox a besoin d’un système d’exploitation sous-jacent pour fonctionner, il s’agit d’un hyperviseur de type 2.
Certains hyperviseurs permettent la réaffectation dynamique d’une machine virtuelle. Le fait de transférer une machine virtuelle d’un hyperviseur vers un autre est appelé une *migration*, les techniques utilisées diffèrent selon les différents types d’hyperviseur. Certaines migrations peuvent être effectuées uniquement lorsque le système invité est complètement à l’arrêt, tandis que d’autres peuvent se faire pendant que l’invité est en cours d’exécution (ce que l’on appelle une *migration à chaud*). Ces techniques peuvent s’avérer utiles pendant les fenêtres de maintenance des hyperviseurs ou pour la résilience du système, lorsqu’un hyperviseur tombe en panne et que le système virtualisé peut être déplacé vers un hyperviseur en état de marche. ### Types de machines virtuelles On distingue trois types de machines virtuelles, les systèmes invités *pleinement virtualisés*, les systèmes *paravirtualisés* et les systèmes *hybrides*.
VM pleinement virtualisée
Toutes les instructions qu’un système d’exploitation invité est censé exécuter doivent pouvoir tourner dans une installation entièrement virtualisée du système d’exploitation. La raison en est qu’aucun pilote logiciel supplémentaire n’est installé dans l’invité pour traduire les instructions en matériel simulé ou réel. Un invité entièrement virtualisé est un système dans lequel l’invité (ou la *HardwareVM*) ne sait pas qu’il s’agit d’une instance de machine virtuelle en cours d’exécution. Pour que ce type de virtualisation puisse fonctionner sur du matériel x86, les extensions CPU Intel VT-x ou AMD-V doivent être activées sur le système sur lequel l’hyperviseur est installé. Cette opération peut être effectuée à partir du menu de configuration du BIOS ou de l’UEFI.
VM paravirtualisée
Une machine virtuelle paravirtualisée (ou PVM) est un système invité dont l’OS est conscient qu’il s’agit d’une instance de machine virtuelle en cours d’exécution. Ces types de systèmes invités utilisent un noyau modifié et des pilotes spécifiques (appelés *pilotes invités*) qui aident le système d’exploitation invité à utiliser les ressources logicielles et matérielles de l’hyperviseur. Les performances d’un invité paravirtualisé sont souvent meilleures que celles de l’invité entièrement virtualisé grâce aux avantages que lui procurent ces pilotes logiciels.
VM hybride
La paravirtualisation et la virtualisation complète peuvent être combinées pour permettre aux systèmes d’exploitation non modifiés de bénéficier de performances d’E/S quasi natives en utilisant des pilotes paravirtualisés sur des systèmes d’exploitation entièrement virtualisés. Les pilotes paravirtualisés contiennent des pilotes de périphériques de stockage et de réseau avec des performances améliorées en matière d’E/S de disque et de réseau.
Les plateformes de virtualisation fournissent souvent des pilotes invités sous forme de paquets pour les systèmes d’exploitation virtualisés. KVM utilise les pilotes du projet *Virtio* tandis qu’Oracle VM VirtualBox utilise les *Guest Extensions* (Additions Invité) disponibles à partir d’un fichier image ISO CD-ROM téléchargeable.