Virtualisation - 2
Virtualisation - 2
Virtualisation - 2
Computing
2. Types de Virtualisation
Email: [email protected]
IRIC (S2)
2022 / 2023
Sans virtualisation (architecture x86 traditionnelle), un seul système peut être opérationnel sur une
machine physique.
Avec la virtualisation (architecture x86 virtualisée), chaque machine virtuelle possède ses propres
applications et système d’exploitation.
Un serveur virtuel (Virtual Server) est un conteneur de logiciel complètement isolé, capable de gérer ses
propres systèmes d'exploitation et applications comme s'il s'agissait d'un ordinateur physique, en utilisant des
techniques de virtualisation.
Il se comporte exactement comme un ordinateur physique et contient son propre virtuel CPU, RAM,
disque dur et carte réseau.
Un système d’exploitation ne peut pas faire la différence entre un serveur virtuel et un serveur physique.
Mutualisation des ressources et regroupement de systèmes divers sur une machine physique unique (tout
en les maintenant logiquement séparés).
Utilisation efficace et optimale des ressources (consolidation/flexibilité).
Exécution simultanée de plusieurs OS sur une même machine (mieux que le multiboot !).
Environnements de tests et validation de systèmes avant leurs mise en exploitation.
Evolutivité, simplification de la configuration : Exemple d’ajout d’un serveur d’application.
Cloisonnement : chaque OS fonctionne d’une façon indépendante et sans aucune interférence mutuelle.
Facilité d’administration : Installation, déploiement et migration aisées des machines virtuelles entre
serveurs physiques; Automatisation des flux de travail.
Sécurité : Diminuer les risques liés au dimensionnement des serveurs; Isolation; Disponibilité et traçabilité
Réduction des coûts, des besoin en énergie, climatisation et surface de sol
L’émulation est une technique qui permet de simuler le fonctionnement de n’importe quel ordinateur
(processeur et matériel) sur un autre ordinateur même si celui-ci est technologiquement différent
(architecture matérielle complètement différente de la machine physique hôte).
Autrement dit, reproduire de manière logicielle l´ensemble des ressources matérielle d'une
machine, ce qui demande énormément de ressources pour faire tourner de manière fluide un
système basé sur une architecture différente, sans pénaliser le système d'exploitation lui-même.
L’émulation est l’imitation du comportement physique d'un matériel par un logiciel, et ne pas la
confondre avec la simulation, laquelle vise à imiter un modèle abstrait.
L’émulation permet non pas de modéliser, mais bel et bien de reproduire à l’identique le comportement
d’un logiciel et son architecture matérielle
L’émulation fait référence au processus de création d'un environnement qui émule les propriétés d'un
système, matériel ou logiciel, à l'intérieur d'un système complètement différent. Cela se fait via un
émulateur, un programme informatique conçu pour imiter les propriétés d'un système "invité" à l'intérieur
d'un système "hôte".
Pour réaliser correctement l'émulation, les émulateurs s'appuient sur un interpréteur. Un interpréteur est
un programme informatique qui lit les instructions de code du système invité émulé, puis exécute des
opérations sémantiquement équivalentes sur le système hôte.
L'émulation est très populaire pour exécuter des programmes et des jeux vidéo qui sont devenus
obsolètes dans le système hôte ou qui ont été initialement conçus pour un autre environnement.
o QEMU : émulateur de plateformes x86 (32bits), Sparc,. Il s’agit d’un logiciel libre de machine virtuelle
qui a la possibilité d'émuler plusieurs type de processeurs.
o KVM (Kernel-based Virtual Machine ): version modifiée de QEMU tirant parti des instructions Intel VT
et AMD-V. Il s’agit d’un hyperviseur libre de type I pour Linux.
o BOCHS : émulateur libre très complet de l'architecture PC traditionnelle x86 (processeur Intel),
émulant un processeur entier dans le logiciel même quand il est en cours d'exécution sur un
processeur physique compatible.
o Microsoft VirtualPC et Microsoft VirtualServer : propriétaire, émulateur de plateforme x86
Les anneaux de protection (protection rings) offrent plusieurs niveaux de privilèges, du plus faible au
plus élevé;
Quand un programme s’exécute, le système d’exploitation lui attribue une zone de mémoire vive qui
est affectée à un anneau de protection;
L’intérêt est de faire une séparation entre les programmes sensibles, comme le noyau du système, et
les programmes du ou des utilisateurs;
Un programme contenu dans une zone mémoire qui est affectée à l’anneau 3 ne pourra pas accéder à
une zone mémoire affectée à l’anneau 0;
L’organisation des anneaux de protection varie si nous avons d’une part une installation physique ou
virtualisée. Et d’autre part, si l’architecture est 32 bits ou 64 bits;
Afin de comprendre le fonctionnement de ces technologies, il est important de savoir que l’architecture
des processeurs de la famille x86 implémentent quatre anneaux de protections (niveaux d’exécutions, ou
Rings) qui :
o Ring 0 : Anneau de protection (niveau le plus bas) ayant le plus de privilèges (plus sécurisé), et sous
lequel fonctionne le cœur du système d’exploitation (Kernel mode);
o Ring 3 : est le niveau le plus élevé ayant moins de privilèges (moins sécurisé), il représente l’espace
utilisateur sous lequel tourne les applications . Ces applications ne peuvent pas modifier ce qui
s’exécute sur des Rings inférieurs.
Hyperviseur = mini système installé sur le système hôte qui gère le matériel
Lorsque la couche de la virtualisation est installée, elle utilise un hyperviseur avec une architecture en
type 1 ou en type 2.
Hyperviseur de type-1
s’exécute directement sur une plateforme matérielle (serveur
Bar-Metal ) sans nécessité d’un système exploitation (sans OS
intermédiaire).
Hyperviseur de type-1
L’installation d’un hyperviseur type 1 (ESXi) efface complètement le système d’exploitation et les
données avant de les remplacer.
Hyperviseur Type 1 est utilisé pour les grosses architectures réseaux d’entreprise qui nécessitent des
optimisations de coûts et de maintenance.
Hyperviseur de type-1
=> Avantages
• Allocation de la quasi-totalité des ressources disponibles aux machines virtuelles, car l’hyperviseur
est directement relié à la couche matérielle.
• Utilisé pour grosses architectures réseaux d’entreprise, qui nécessitent des optimisations de coûts
et de maintenance, tout en améliorant la robustesse face aux pannes.
• Utile dans la virtualisation de gros serveurs (type Exchange) qui demandent de ressources pour
fonctionner correctement.
=> Inconvénient
Lors de l'exécution de plusieurs instances sur un serveur, le total de RAM alloué aux VMs peut être
supérieur à la capacité de mémoire physique totale du matériel sous-jacent, ce qui permet une allocation
excessive et dynamique de la capacité du RAM.
Hyperviseur de type-1
Quand on veut virtualiser plusieurs machines, il est
nécessaire de :
Hyperviseur de type-1
=> Acteurs du marché
Hyperviseur de type-1
=> Acteurs du marché
Hyper-V (Microsoft)
couche qui s’ajoute au dessus du système exploitation Windows (Type 1 )
=> La solution de Microsoft Hyper-V Server prend en charge :
o Les systèmes avec 320 CPU logiques au maximum
o Jusqu'à 4 To de mémoire vive
o Jusqu'à 1024 machines virtuelles
o Chaque VM avec au maximum 64 processeurs virtuels et 1 To de mémoire virtuelle.
=> Le minimum requis pour faire fonctionner Hyper-V server 2012 R2 est :
o Un processeur x64 prenant en charge Intel-VT ou AMD-v cadencé à 1.4 Ghz
o 512 Mo de RAM
Hyperviseur de type-1
=> Acteurs du marché
Hyperviseur de type-2
Un hyperviseur de type 2 (Host metal) ou hyperviseur hébergé est un
logiciel qui s’exécute à l’intérieur d’un autre système d’exploitation
classique (OS Hôte):
Il s’installe comme n’importe quelle application et s’exécute
sur un système d’exploitation déjà en place.
Un OS invité (installé dans la machine virtuelle) s’exécutera
donc en troisième niveau au-dessus du matériel.
Hyperviseur de type-2
Les systèmes d’exploitation invités (OS invité) n’ont pas conscience
d’être virtualisés, et n’ont pas besoin d’être adaptés. (OS invité « croit
» s'exécuter sur une véritable machine physique).
Hyperviseur de type-2
= => Usage
La mise en place de ce type d’hyperviseurs est assez facile et très efficace pour des utilisations multiples
telles que :
Hyperviseur de type-2
o VMware Workstation Pro (payant) / Vmware Workstation Player (free) / Vmware Fusion (pour Mac)
o VirtualPC / VirtualServer >>>> Hyper-V «Microsoft »
o VirtualBox : Oracle Corporation, dont une version en licence GNU GPL « General Public License »,libre)
o QEMU module
o KQEMU exclu (licence GNU GPL)
o KVM: Intégré au noyau GNU/Linux à partir de la version 2.6.20.
La virtualisation complète (full virtualization) est une technologie utilisée par les hyperviseurs (type 1)
qui permet de faire fonctionner n’importe quel système d’exploitation en tant qu’invité dans une
machine virtuelle.
Autrement dit, émuler un environnement matériel complet (intégralité d'une machine physique) sur
chaque machine virtuelle (VM).
o La machine virtuelle doit donc implémenter en logiciel une gestion complète du matériel (mémoire) de
l'invité, en utilisant les couches d'abstraction de l'hôte (système hôte) pour accéder au matériel.
o Dans ce type de virtualisation, ce composant est appelé VMM (Virtual Machine Manager) ou
gestionnaire de Machines virtuelles est responsable du bon fonctionnement de l’environnement émulé.
o L’OS invité dépend de l’environnement émulé via VMM , ce qui rend la VM émulée indépendante des
spécificités du matériel.
o Cette solution est responsable de la translation de tous les appels du VMM vers les ressources
matérielles spécifiques de la machine physique.
Pas de modification au niveau du noyau du guest OS (OS invité) car la translation binaire est exécutée
au niveau du code binaire par le processeur.
Simplicité de mise en place, ils sont fournis sous forme de packages ou d’exécutables avec une
interface graphique soignée permettant de créer très rapidement des machines virtuelles.
Bon niveau d’isolation et de sécurité des VMs (séparation nette entre VM et le système hôte).
o Ce type de virtualisation ne permet de virtualiser que des OS prévus pour la même architecture
matérielle que le processeur physique de l'ordinateur hôte.
o Génération de latence car toutes les requêtes provenant du « GuestsOS » seront traduites par
l’hyperviseur et nécessitent un travail supplémentaire de la part du CPU lors de la translation binaire.
o Filtrage au niveau de l’hyperviseur = perte de performance car certaines instructions ne peuvent pas
être virtualisées.
1 -- Full Virtualization
VirtualBox
Logiciels de virtualisation de VMWare : VMWare Player, VMWare Workstation
Parallels Desktop 4 for Windows & Linux
KVM
Pour une meilleur collaboration, via une interface de programmation (API), entre le système hôte et
l'invité, le système invité (Ring 2) est modifié pour être exécuté par la machine virtuelle (ailleurs que
sur le Ring 0.) au lieu d’accéder directement au matériel via des couches d'abstraction standards en
Full virtualisation (fichiers sur le disque, sockets TCP-IP, etc.) .
=> Attention : un OS modifié n’est pas owner du matériel.
Il s’agit d’une modification des couches basses de l’OS. Cela évite que l’hyperviseur ne ralentisse les
échanges entre les OS et le matériel.
Tout le monde parle la même langue, la langue de l’hyperviseur. Ce qui rend les OS coopératifs
par cette méthode.
La paravirtualisation impose d’utiliser un “Guest OS” (OS invité) spécialement adapté à l’hyperviseur,
qui consiste à changer les BSP (Board Support Package) (logiciel de support des cartes mères) de
chaque système d’exploitation par un BSP conçu pour cet hyperviseur.
=> Avantages
Limiter les surcharges liées à la translation binaire en virtualisation complète , ce qui augmente la
performance de VMs.
Bonne gestion des performances matérielles et excellente performances d’exécution des VMs se
font par diminution du temps d’accès et du consommation de ressources processeur.
=> Inconvénients
La portabilité et la compatibilité des VMs peuvent être mises en doute, car elle doit aussi prendre en
charge l’OS non modifié.
Le coût de la gestion des OS para-virtualisés est élevé, car ils pourraient nécessiter de conserver les
modifications de noyau d’OS
- VMware Tools pour certains Guest OS : drivers spécifiques développés par VMware ont conscience
de la couche de virtualisation et qui communiquent plus facilement avec l’hyperviseur
Objectif => Faire fonctionner des systèmes invités dont les OS peuvent être différents mais non modifiés.
Cette technologie consiste à séparer les ressources matérielles au niveau de la carte mère de la
machine.
Des instructions sont ajoutées au processeur pour qu’il serve d’hyperviseur à l’aide du « HAL »
(Hardware Abstraction Layer).
Le support de la virtualisation peut être intégré ou assistée par le processeur qui se charge de :
• VT-d vous permet de passer directement des périphériques, tels que les
périphériques PCI (Peripheral Component Interconnect), non essentiels
dans les environnements PC mais agréables à avoir lors de l'exécution du
serveur (serveur vSphere où vous avez besoin de cartes RAID passées
directement au client, etc.).
Cas d’Intel
La technologie Intel® Virtualization Technology (Intel® VT, anciennement Vanderpool) offre une assistance
matérielle pour la virtualisation logicielle, en réduisant la taille, les coûts et la complexité de cette solution.
L'un de ses principaux atouts est également sa capacité à diminuer les charges liées à la virtualisation dans
le cache , les E/S et la mémoire.
En mode root, l’hyperviseur stocke dans une structure de données les informations relatives au matériel
associé à un système invité (processeur(s), blocks mémoire(s), entrées/sorties). Sous la technologie VT-x,
celle-ci se nomme Virtual Machine Control Structure (VMCS).
Plusieurs générations de cette technologie se sont succédées pour inclure des supports de virtualisation de
processeur, de mémoire, d’E/S, de Cœurs graphiques intel, et de fonctions de sécurité et de réseau.
Cas d’AMD
Lors du boot, un processeur AMD-64 démarre en mode x86(32) afin de maintenir la compatibilité avec
les systèmes d’exploitation 32 bits. Le boot-loader du OS 64 bits exécute une instruction qui bascule alors
le processeur en mode x86(64).
De manière similaire, un processeur fonctionnant avec la nouvelle technologie démarre en mode invité
(toutes les fonctions de virtualisation sont alors inactives) jusqu’à ce qu’un hyperviseur compatible soit
démarré.
La structure Virtual Machine Control Block (VMCB) a la même fonction que celle de VT-x.
=> Avantages
=> Inconvénient
Ainsi, si une machine ne comporte pas ce type de processeur, alors il est nécessaire de s’équiper
d’une machine récente qui comportera un processeur compatible.
=> Acteurs
KVM (Kernel-based Virtual Machine) est un module de noyau chargeable pour Linux qui tire parti de
technologies de virtualisation matérielle comme Intel VT et AMD-V. Chaque machine virtuelle dispose d’une
UC, d’une RAM et d’une interface réseau qui lui est propres.
VSphere ESXi 6 et 7 est un hyperviseur de Type 1 et permet de gérer et virtualiser des serveurs. Il dispose de
nombreuses fonctionnalités qui permettent de gérer au mieux les différentes VMs :
o vMotion : une fonctionnalité permettant la migration à chaud (sans avoir à éteindre la VM) entre 2 hôtes
ESXi.
o vSphere HA : High Avaibaility est une fonctionnalité permettant un redémarrage automatique des VM
après une panne sur l'hôte.
o vShield Endpoint : c'est un système d'antivirus/antimalware permettant de sécuriser les VM sur l'hôte.