I. LA VIRTUALISATION
GENERALITE
Depuis quelques années, le terme virtualisation est un sujet de discussion dans le domaine
de l’informatique et des entreprises. Beaucoup de projets des entreprises informatique se
tendent vers la virtualisation.
HISTORIQUE DE LA VIRTUALISATION
Historiquement une grande partie des travaux de recherche ont été fait par IBM dans les
années 1960 au centre de recherche de Grenoble aujourd’hui fermé. Ils développèrent un
système expérimental faisant partie du projet System/360 appelé VM/CMS (Virtual
Machine / Console Monitor System). CMS est le système d’utilisation qui s’appuie sur
VM. Une caractéristique de ce premier système de virtualisation était le fait que chaque
CMS était attribué à un seul utilisateur, sachant que plusieurs CMS fonctionnaient sur la
VM. Nous pouvons faire une analogie par rapport à la terminologie actuelle entre VM et
hyperviseur ainsi qu’entre CMS et environnement logiciel invité.
Suite à l’Amiga, on trouve des systèmes Unix basés sur l’architecture NUMA, qui est une
architecture mémoire de systèmes multiprocesseurs. Cette architecture consiste à
cloisonner et partitionner la mémoire, les accès se faisant via de multiples bus, un par
processeur.
Dans les années 2000, afin d’améliorer les capacités des solutions de virtualisation. Enfin
dans l’année 2000, les fabricants de processeurs Intel et AMD ont implémenté des
fonctions de virtualisation dans leurs processeurs permettant la prise en charge de systèmes
d’exploitation non modifiés plus efficacement.
I.1 Caractéristiques
La définition "formelle" de la virtualisation fait référence à l’abstraction physique des
ressources informatiques. En d’autres termes, les ressources physiques allouées à une
machine virtuelle sont abstraites à partir de leurs équivalents physiques. Les disques
virtuels, interfaces réseau virtuelles, réseaux locaux virtuels, commutateurs virtuels,
processeurs virtuels et la mémoire virtuelle correspondent tous à des ressources physiques
sur des systèmes informatiques physiques. L’ordinateur hôte "voit" ses machines virtuelles
comme des applications auxquelles il dédie ou distribue ses ressources. (Source :
Introduction à la virtualisation et choix technologiques)
La virtualisation est le processus qui joue le rôle de faire fonctionner plusieurs systèmes,
serveurs et applications, sur un même serveur physique.
Une autre définition de la virtualisation est définie dans la bibliothèque informatique disant
que c’est l’ensemble des techniques matérielles et ou logiciels qui permettent de faire
fonctionner sur une seule machine plusieurs systèmes d’exploitation et ou plusieurs
applications, séparément les uns des autres, comme s’ils fonctionnaient sur des machines
physiques distinctes.
I.2
I.3
La virtualisation de serveur :
La virtualisation de serveur sert à masquer les ressources du serveur. Cela consiste à
diviser un serveur physique en plusieurs environnements virtuels isolés et indépendants.
On peut appeler les environnements virtuels de plusieurs façons selon les technologies
utilisées mais les plus connus sont serveurs privés virtuels, hôtes, containeurs, émulations
ou encore instances.
La virtualisation d’application :
C’est une technologie logicielle qui permettra l’amélioration de la portabilité et la
compatibilité des applications en les isolants du système d’exploitation sur lequel elles sont
exécutées. La virtualisation d’application nécessite l’ajout d’une couche logicielle
supplémentaire entre un programme donné et le système d’exploitation. Le but de la
couche logicielle est d’intercepter les opérations d’accès ou de modification de fichier.
Un poste de travail virtualisé peut être concentré soit directement sur l’ordinateur de
l’utilisateur soit sur un serveur dans le centre de données. La virtualisation des postes de
travail permet la mobilité des employés avec la disponibilité des ressources.
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
Figure I-1 : Interaction avec un poste de travail virtuel (Source : VMware View)
La virtualisation de stockage :
La virtualisation des stockages facilite la meilleure exploitation des ressources, et des
disques durs. C’est un procédé qui séparera la représentation logique et la réalité physique
de l’espace de stockage. Le but de la virtualisation de stockage est de faire abstraction des
périphériques de stockage utilisés et des interfaces qui leur sont associées (SATA, SCSI…)
pour limiter l’impact des modifications structurelles de l’architecture de stockage.
Elle fait appel à une application d’administration de volume logique (LVM, Logico Volume
Manager). La LVM est une couche logicielle qui sert à regrouper plusieurs espaces de
stockage (volumes physiques) pour créer une partition virtuelle (volumes logiques).
Figure I-2 : Symétrique ou In-Band (Source : Bonnes pratiques, planification et dimensionnement des
infrastructures de stockage et de serveur en environnement virtuel de Cédric Georgeot)
La virtualisation de réseau
Le principe de la virtualisation des réseaux est de partager une même infrastructure
physique au profit de plusieurs réseaux virtuels isolés. VLAN (Virtual Local Area
Network) est un réseau local regroupant un ensemble de machines de façon logique et non
physique. La création et la configuration sont réalisées de manière logicielle mais non
matérielle. Elle consiste améliore la gestion du réseau en apportant plus de souplesse dans son
administration
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
En tenant compte du fait que chaque serveur doit être dédié à une application ou service
distincte. La mise en place d’un autre service ne nécessite pas l’arrêt du serveur physique.
Prenons un serveur rack doté d’un processeur double-cœur, comportant 2go de RAM et un
disque dur d’une taille de 80 go. Le serveur est doté d’une technologie RAID (Redundant
Arrays of Inexpensive Disks), le RAID est un technique permettant de repartir des données
sur plusieurs disques durs afin d’améliorer soit la tolérance aux pannes, soit la sécurité, soit
les performances de l’ensemble, ou une répartition de tout cela. Ce serveur vaut environ 4
000 000 d’Ariary.
Les tableau ci-dessous nous montrent le comparatif des deux serveurs en incluant le prix,
la consommation électrique et le nombre de système d’exploitation selon le besoin.
De plus la consommation électrique lors des ajouts de nouveau serveur physique n’est
moindre par rapport à l’utilisation des machines virtuelles qui n’ont pas besoins
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
L’un des avantages de la virtualisation est la gestion centralisée des machines virtuelles.
Les produits de virtualisation ont un visualiseur centralisé pour gérer et afficher les VM à
partir d’une interface unique. L’interface est indépendante du système d’exploitation.
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
Des outils de monitoring sont présents sur l’outils de gestion pour les suivis en temps réels
de la consommation ou des performances des machines virtuelles même pour voir les
différents capacités d’espace de stockage disponible et beaucoup d’autres fonctionnalités.
L’utilisation d’un modèle de machines virtuelles pour être cloner est plus simple pour
mettre en service plusieurs serveurs avec des paramétrages différents. Prenons par exemple
la mise en place d’un serveur de base de donnée ORACLE qui diffère de ce que
l’entreprise a utilisé auparavant. Pour mettre en place ce service, plusieurs étapes doivent
être effectuer au sein de l’entreprise, du chef de projet passant aux administrateurs
systèmes et réseaux pour définir les spécifications nécessaires du serveur qui va héberger la
base de donnée. La définition des caractéristiques du serveur va prendre quelques jours.
Après la définition du serveur, il faut passer au passer aux gestionnaires des logistiques
pour l’emplacement du nouveau serveur puis enfin il faut valider le budget par le directeur
financier. Ce processus prendra plusieurs semaines avant la mise en place finale. Mais
grâce à la virtualisation, il nous suffit de copier un serveur fonctionnel standard et de
d’installer la base de donnée et paramétrer les services pour faire les tests avant la mise en
place. On peut faire cela pour toute nouvelle service a implémenter sans perdre de temps,
d’acquérir du matériel supplémentaire.
Dans le cadre d’une architecture classique, si une machine nécessite plus de mémoire vive
par exemple, il est nécessaire de prévoir un temps d’indisponibilité et le déplacement d’un
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
Les services seront toujours disponibles en tout temps même lors des maintenances grâce
aux migrations des VM.
Le remplacement d’un serveur par un autre plus récent est totalement transparentes aux
niveaux utilisateurs. Les machines virtuelles peuvent migrer vers le nouveau matériel
même en cours de production.
Etant donné que la virtualisation exécute plusieurs systèmes d’exploitation sur une même
machine, il est primordial qu’elle assure un cloisonnement parfait. Une faille dans ce
dernier constituerait une faille de sécurité considérable. La virtualisation s’efforce d’arriver
à un cloisonnement proche du cloisonnement physique. Le cloisonnement dans le cadre de
la virtualisation reste cependant largement meilleur que dans le cas de plusieurs services
sur un même système d’exploitation.
La virtualisation logicielle
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
Virtualisation totale
La virtualisation totale consiste à faire fonctionner un système d’exploitation comme un
simple logiciel. Ce procédé permet à plusieurs systèmes d’exploitation d’utiliser une même
machine physique par le biais d’un hyperviseur. Un Moniteur de machine virtuelle (VMM)
ou hyperviseur peut s’exécuter directement sur le matériel ou de manière logicielle au-
dessus du système d’exploitation d’une machine physique. Dans ce contexte, la machine
virtuelle invitée n’a pas conscience d’être virtuelle. Le VMM est le seul autorisé à accéder
à la couche matérielle. Ensuite, l’environnement matériel est émulé par ce même VMM. Le
seul qui a le pouvoir de démarrer une machine virtuel est le VMM.
Figure I-3 Virtualisation totale (Source : Les différents types de virtualisation : La virtualisation totale par
Antoine Benkemoun - http://www.antoinebenkemoun.fr/2009/07/les-differents-types-de-virtualisation-
la-virtualisation-totale)
Para virtualisation
Dans le concept de para virtualisation, il n’y a plus de notion de système d’exploitation
invité et de système d’exploitation hôte. Tous les systèmes d’exploitation sont virtualisés
dans le sens où ils disposent d’un noyau adapté à la couche de virtualisation. Après la
couche matérielle, c’est directement l’hyperviseur qui est au-dessus, et enfin les systèmes
seront installés dessus.
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
La para virtualisation permet à une machine virtuelle d’utiliser des ressources physiques.
L’architecture virtuelle exposée est légèrement différente de l’architecture physique sous-
jacente. Cette différence empêche la compatibilité entre les pilotes des systèmes
d’exploitation et la virtualisation de l’architecture physique. Il est donc nécessaire de
modifier le code du système d’exploitation pour rétablir cette compatibilité, ce désavantage
est le principal handicap de la para virtualisation. Pour autant, la para virtualisation permet
une plus grande liberté dans l’implémentation des interactions entre le système
d’exploitation et l’architecture virtuelle. La para virtualisation est utilisée depuis longtemps
dans des hyperviseurs tels que VM/370 et Disco. Pour cela, ils utilisaient une combinaison
d’instructions, de registres et de périphériques vers des architectures virtuelles afin d’en
améliorer les performances. Ces systèmes avaient pour objectif d’exécuter des systèmes
d’exploitation inadaptés aux nouvelles architectures. (CAPRA 2015)
Figure I-4 : Paravirtualisation basée sur l’existence d’un hyperviseur (Source : La paravirtualisation par
Antoine Benkemoun - http://www.antoinebenkemoun.fr/2009/08/la-paravirtualisation)
Cette technique consiste en la mise en œuvre d’un noyau (généralement Linux) compilé de
telle sorte qu’il puisse être utilisé dans le niveau de privilège correspondant à l’utilisateur
(s’agissant dès lors d’un noyau invité). Cette technique permet donc de bénéficier de
plusieurs machines virtuelles invitées, appelées généralement système de fichiers racine
sur un hôte unique.
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
Les extensions matérielles pour machine virtuelle sont fournies sur les processeurs Intel
(Intel Virtualization Technology (Intel VT)) et AMD (AMD-V). Ces extensions permettent
de supporter deux types de logiciels : l’hyperviseur qui se comporte comme un hôte réel et
qui a le contrôle complet du processeur et des autres parties matérielles, et le système
invité qui est exécuté dans une machine virtuelle (VM). Chacune des machines virtuelles
s’exécute indépendamment des autres et utilise la même interface pour le processeur, la
mémoire et autres périphériques fournis par la plateforme physique. Ces extensions
améliorent les performances des applications lancées au sein d’une machine virtuelle.
Hyperviseur :
Un hyperviseur est une plate-forme de virtualisation qui permet à plusieurs systèmes
d'exploitation de travailler sur une même machine physique en même temps également
appelé VMM. Il est souvent utilisé par abus pour qualifier une technique de virtualisation
en soi, s’agissant en particulier de la para virtualisation
- Xen : est une solution libre de virtualisation. Il est de type hyperviseur, c'est à
dire qu'il vient s'insérer entre le matériel et le noyau. Xen est considéré comme une
solution à base de para virtualisation.
Xen est un hyperviseur open source « bare metal », aussi appelé hyperviseur de «
type 1 ». Le code de Xen est exécuté juste au-dessus du matériel, avec un niveau de
privilèges d’accès aux ressources système (CPU, IO, RAM) maximal. Xen
implémente certaines fonctions qu’on retrouve dans tous les OS : un ordonnanceur,
un gestionnaire d’interruptions, quelques drivers, etc. Les facilités d’administration
de l’hyperviseur sont accessibles à travers une machine virtuelle spécialement
privilégiée et instanciée tout de suite après le démarrage de l’hyperviseur. Cette
machine virtuelle appelée « domain 0 » est un système d’exploitation complet (au
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
choix Linux, BSD, Solaris, etc.) dont le noyau est modifié pour communiquer avec
l’hyperviseur sous-jacent. Le dom0 contrôle (démarre, arrête, surveille) les autres
machines virtuelles non privilégiées (appelées « User domain » ou domU). Les
domU peuvent être para virtualisés ou matériellement virtualisés. La
paravirtualisation implique une modification du système d’exploitation invité afin
de coopérer avec l’hyperviseur pour l’accès aux ressources physiques. Les
opérations d’entrée/sortie sont principalement réalisées par le dom0 qui effectue les
opérations d’E/S à la place de la machine virtuelle. La virtualisation matérielle ne
nécessite pas de modifications de l’OS invité, car le CPU, au travers d’un jeu
d’instructions spéciales (Intel VT-d ou AMD-V), fait croire au système invité qu’il
a un accès direct au matériel. Cependant, cela entraîne un surcoût de
fonctionnement, car certaines demandes d’accès aux ressources physiques effectués
par la VM doivent être interceptées pour vérifier qu’elles n’affectent pas les autres
VM.
- VMware : est une société qui offre des produits propriétaires liés à la
virtualisation d'architectures x86. Il existe plusieurs produits, VMware vSphere est
de type virtualisation complète pour serveur sous GNU/Linux et Microsoft
Windows.
Emulateur :
- Quick EMUlator (QEMU)
QEMU émule les ressources nécessaires à une machine virtuelle. Parmi ces
émulations, on trouve celle des processeurs, les Virtual Central Processing Unit
(VCPU), mais aussi un ensemble de périphériques tel que des cartes graphiques ou
des cartes réseau. Pour le système hôte, QEMU est vu comme un processus UNIX
standard et les VCPU sont des threads. C’est ce processus UNIX qui contient le
système invité. Lorsque QEMU est utilisé seul, les VCPU sont complètement
émulés. La machine virtuelle est alors totalement isolée du système hôte.
L’utilisation de QEMU avec émulation complète d’un processeur est coûteuse et
peut dégrader fortement les performances (d’un facteur 5 à 10). Pour avoir des
performances proches d’un système natif, il faut utiliser un module d’accélération.
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
Emulateur :
- KVM : est un projet de virtualisation complète qui est actuellement en
développement pour un module de para virtualisation. Il est intégré depuis le noyau
Linux 2.6.20 et permettant une virtualisation matérielle des processeurs.
KVM est un module noyau intégré au noyau LINUX depuis 2007 qui permet à ce
dernier de remplir le rôle d’un hyperviseur. KVM supporte un grand nombre
d’architectures telles que les architectures x86 disposant des instructions Intel VT
ou AMD-V, mais aussi Power PC, IA-64 ou encore ARM. Il permet l’utilisation
d’extensions matérielles (HVM) telles que des jeux d’instructions dédiés à la
virtualisation. Parmi celles-ci figure l’exécution d’un cœur en mode invité. Ce
mode est orthogonal aux deux modes classiques que sont le mode utilisateur et le
mode noyau. En mode invité, un processeur a accès à tous les niveaux de privilèges
du x86 de 0 à 3. Les instructions de la machine virtuelle invitée sont alors
directement exécutées sur le processeur. Une partie des instructions privilégiées
déclenchent des interruptions ce qui permet à l’hyperviseur d’intervenir quand il le
faut. Grâce à KVM un thread VCPU utilise le mode invité. Le cœur sur lequel
s’exécute un VCPU peut alors par le principe du trap-and-emulate diminuer ainsi le
OPTIMISATION DE LA DISPONIBILITE DES MACHINES VIRTUELLES SUR XENSERVER
coût de la virtualisation. Pour autant les VCPU sont des threads normaux du point
de vue de l’ordonnanceur LINUX.