Ministère de l’Enseignement Supérieur, de la Recherche Scientifique et de la Technologie
Université Virtuelle de Tunis
Système d’Exploitation
GNU/Linux
Virtualisation sous linux
Yahia Slimani
Hbib Elsmii
Attention !
Ce produit pédagogique numérisé est la propriété exclusive de l'UVT. Il est strictement interdit de la reproduire à des fins commerciales. Seul le téléchargement ou impression pour un usage personnel (1 copie par utilisateur) est permis.
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux
Objectifs : Définir la notion de virtualisation sous GNU/Linux
Identifier les différentes techniques de virtualisation
1
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux
1. Notion de virtualisation
L’encyclopédie francophone en ligne Wikipédia définit la virtualisation comme «l’ensemble
des techniques matérielles et/ou logicielles 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». Il
s’agit donc de faire fonctionner sur une même machine (physique) plusieurs systèmes
d'exploitation (qui peuvent être tous différents) en même temps.
Concrètement, un système d'exploitation, dit « hôte », est installé sur la machine
« physique » et émule une ou plusieurs machines « virtuelles » (avec processeur, mémoire,
disque dur, carte réseau, BIOS, ...). Chaque machine virtuelle peut accueillir un système
d'exploitation dit « virtualisé » (ou « invité »). Le système hôte assure le cloisonnement
entre les systèmes virtualisés et le partage des ressources physiques : On l’appelle
« superviseur ».
Les systèmes virtualisés sont manipulables à souhait par le superviseur : démarrage, arrêt,
gel, sauvegarde de contexte ... De plus, comme le disque dur d'un système virtualisé est
généralement émulé par un fichier, il est facile de dupliquer un système virtualisé ou de le
faire migrer d'un hôte à un autre. La virtualisation permet donc d'utiliser de manière
optimale les ressources d'une machine : on peut ajouter des machines virtuelles si la
machine physique est sous-exploitée (économie d'argent par mutualisation des ressources)
ou en supprimer si elle est saturée (gestion de la montée en charge). Enfin la virtualisation
permet une répartition des services sur plusieurs machines virtuelles et par là même une
meilleure sécurité : si un système est compromis, les autres peuvent continuer à
fonctionner normalement. 2. Intérêt de la virtualisation :
La virtualisation peut être utilisée pour plusieurs fins et selon le contexte d’utilisation. Pour
le particulier, la virtualisation permet d’avoir accès à des applications ne fonctionnant pas
sur le système d’exploitation principal de l’utilisateur. On peut notamment citer les
applications trop vieilles pour s’exécuter sur la dernière génération du système
d’exploitation (les anglophones parlent de legacy applications). Un autre domaine couvert
par la virtualisation est l’utilisation de programmes non portés sur la plate-forme cible
(architecture PC vs architecture Mac, par exemple). On peut aussi citer, même si c’est plus
rare, l’utilisation de virtualisation pour les jeux : faire fonctionner un jeu fait pour
Microsoft Windows dans une machine virtuelle s’exécutant sur un système GNU/Linux.
2
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux La société VMware propose notamment l’accès à l’accélération 3D depuis une machine
virtuelle pour son produit grand public, permettant d’atteindre des performances proches
de l’original.
Pour les professionnels et les chercheurs en sécurité, un système d’exploitation virtualisé
permet d’observer le comportement d’un logiciel malveillant (malware) comme un virus,
un ver un spyware dans un système sain sans avoir à infecter une machine physique. De
plus, le processus d’infection est reproductible, car il suffit de sauvegarder l’état de la
machine virtuelle avant l’infection pour pouvoir répéter l’opération plusieurs fois, dans des
conditions contrôlées. Il est alors possible d’analyser l’état de la machine virtuelle après
infection, et de tirer des conclusions sur l’action du logiciel.
Pour une entreprise, les technologies de virtualisation permettent de séparer des applications
et des systèmes de manière logique, quand les prérequis des applications sont
mutuellement exclusifs. Par exemple, une application critique mais incompatible avec une
version donnée d’un logiciel ne peut pas cohabiter sur la même machine avec une autre
application dépendant d’une autre version du même logiciel. Certains cas ’incompatibilités
peuvent se résoudre en laissant installés les deux logiciels dans deux versions différentes,
mais le surcoût de maintenance est non négligeable.
En plus de la simple incompatibilité de versions, deux applications peuvent aussi avoir le
même rôle, mais dans des contextes différents. Par exemple une version de développement
et une version finale d’un site web ne peuvent pas cohabiter de manière simple, à moins
d’y consacrer un effort de maintenance là aussi conséquent. Pour le développement d’une
application web, le test du site sous plusieurs navigateurs est primordial. La virtualisation
Publicité
de plusieurs systèmes d’exploitation permettra aux développeurs de tester le rendu de
plusieurs navigateurs sur plusieurs plates-formes sans avoir à changer de machine — et
donc d’environnement de travail — en permanence.
Au delà de la possibilité de faire fonctionner des applications qui ne peuvent normalement
pas s’exécuter sur une machine donnée, la virtualisation permet aussi de les rassembler sur
une même machine physique, sans avoir à maintenir un serveur distinct par application.
Traditionnellement, l’usage était de consacrer une machine physique à un service
(messagerie, stockage, hébergement d’intranet, etc.), tant pour des raisons pratiques
(associer une machine à un rôle unique) que pour la sécurité (séparation des services).
Toutefois, cette dispersion a un coût qui n’est pas nul pour l’entreprise, que ce soit en espace
occupé (location au mètre carré dans les datacenters), en énergie (consommation
électrique) ou en maintenance (plus de machines physiques implique plus de risques de
3
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux pannes matérielles). De plus, la plupart des services fournis sur un réseau local (DHCP,
DNS, Intranet, ...) ne consomment qu’une très faible partie des ressources offertes par une
machine récente. Tous ces facteurs font qu’il n’est plus pertinent aujourd’hui d’utiliser des
machines séparées pour héberger des services ne nécessitant qu’une fraction de la
puissance d’une machine.
Aussi, à l’heure actuelle, la tendance est plutôt au rassemblement de plusieurs services,
autrefois distincts, sur une seule machine, par le biais de l’utilisation de technologies de
virtualisation pour maintenir une séparation entre les services. On parle de consolidation de
serveurs.
Enfin, l’utilisation d’applications « anciennes » (au sens informatique du terme) est au
moins aussi importante chez les entreprises que chez les particuliers. L’importance parfois
critique de ces applications pour le fonctionnement de l’entreprise fait qu’il est souvent
plus facile de continuer à maintenir un système et une machine obsolètes (et donc avec un
risque de panne matérielle plus important) que d’entamer une migration vers une nouvelle
plate-forme. La virtualisation permet dans ce cas d’exécuter l’application comme dans son
environnement d’origine, mais sur du matériel récent. On peut citer, sans ordre particulier :
une application de comptabilité (ou un progiciel quelconque) utilisée depuis des années
mais non portée sur la nouvelle version d’un système d’exploitation ou encore un logiciel
de pilotage de machine industrielle. Ce sont deux exemples classiques d’application de la
virtualisation pour autre chose que de l’hébergement de services.
En plus des possibilités techniques citées ci-dessus, la virtualisation est également une
technologie clef pour l’avenir de l’entreprise. En effet, elle ne permet pas seulement de
contourner les limitations matérielles des ordinateurs, mais elle peut aussi fournir un
avantage décisif sur la concurrence dans le milieu très disputé qu’est l’informatique de
services. 3. Les des différentes techniques de la
virtualisation
Très peu de systèmes démarrent directement, et sur plateforme PC tous les systèmes démarrent
selon un processus (boot) en trois temps : le BIOS, le chargeur de démarrage (bootloader) et le
système. Pour les systèmes embarqués et les anciens calculateurs, ces phases étaient aussi un
choix à prendre en compte. Des moniteurs, OS minimaux emportant des fonctionnalités de
4
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
débug, ont vu le jour. L'idée initiale était de se concentrer sur cette phase, puis ensuite d'en
généraliser les concepts : un système d'exploitation reposant sur l'API d'un noyau réduit.
Virtualisation sous linux
Les systèmes de virtualisation partent donc du principe de l'utilisation de couches logicielles
intermédiaires. Afin d'avoir une idée théorique des performances des applications au sommet, il
faut comparer verticalement l'empilage de couches. Il faut garder à l'esprit qu'il est possible
d'élargir les schémas en rajoutant des environnements virtualisés consommant également des
ressources de l'hôte, en mémoire puis en disque.
Fondamentalement, on trouvera deux idées principales : isolation par empilement ou par
juxtaposition, dont les variations, dans des buts d'optimisation, donneront principalement quatre
types de technologie :
•
Machine Virtuelle
Une machine virtuelle est un logiciel qui tourne sur l'OS hôte, ce logiciel permettant de lancer un ou
plusieurs OS invités, c'est l'archétype de la solution de virtualisation par empilement de systèmes.
La machine virtualise le matériel (ce qui passe généralement par une émulation partielle) pour les
systèmes d'exploitation invités : les systèmes d'exploitation invités croient dialoguer directement
avec le matériel. En pratique on a recours à une émulation logicielle des périphériques, et parfois
aussi de tout ou partie de la machine.
Cette solution isole bien les systèmes d'exploitation invités, mais elle a un coût, en premier lieu en
performance, dont les principales victimes seront les entrées‐sorties. Ce coût, assez important
déjà s'il suffit de protéger les instructions privilégiées, peut être très élevé si le processeur doit
être intégralement émulé. Cette solution n'est pas non plus économe en mémoire, puisque
aucune économie d'échelle ne peut être réalisée en ce qui concerne les OS (kernels) chargés.
Exemple :
➔ Qemu : émulateur de plateformes x86, PPC, Sparc,
➔ VMWare : propriétaire, émulateur de plateforme x86,
Publicité
➔ Microsoft VirtualPC et VirtualServer : propriétaire, émulateur de plateforme x86,
➔ VirtualBox : émulateur de plateforme x86.
5
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux Le talon d'Achille de cette solution est donc l'importante consommation en performances. Certains
projets minimisent l'impact de ce coût en ressources en permettant des courts‐circuits optionnels
(KVM, KQemu, VirtualBox), disponibles uniquement hors du contexte d'émulation bien sûr.
Les deux technologies suivantes constituent elles aussi le résultat de considérations d'optimisation
de cette solution, le principe étant de diminuer au mieux l'épaisseur des couches de virtualisation
tout en conservant le même degré d'isolation.
•
Virtualisation d'OS, Isolateur
Un isolateur est un logiciel permettant d'isoler l'exécution des applications dans des contextes ou
zones d'exécution, c'est l'archétype de la solution de virtualisation par "juxtaposition". L'isolateur
permet ainsi de faire tourner plusieurs fois la même application (à base d'un ou plusieurs logiciels)
prévue pour ne tourner qu'à une seule instance par machine.
Notons que cette technologie consiste en quelque sorte à généraliser la notion de "contexte" Unix :
ce dernier isole les processus (mémoire, accès aux ressources), on ajoute alors : une isolation des
périphériques (c'est le rôle de l'isolateur), voire leur partage, les systèmes de fichiers donc les
fichiers eux‐mêmes et leurs accès.
Cette solution est très performante, du fait du peu d'overhead (chute de performance conséquente
de l'ajout des couches de virtualisation), mais les environnements virtualisés ne sont pas
complètement isolés, ils partagent en particulier le code du noyau. Cette solution est aussi
remarquablement économique en mémoire par conséquence de la dernière remarque. Ces
environnements sont donc bien adaptés au déploiement de nombreux serveurs virtuels de test ou
développement basés sur un même système.
Quelques isolateurs :
➔ Linux‐VServer : isolation des processus en user‐space,
➔ BSD Jail : isolation en user‐space,
➔ OpenVZ : libre, partitionnement au niveau noyau sous Linux et Windows 2003. C'est la version
open‐source du logiciel Virtuozzo.
Les isolateurs tendent à isoler à un niveau de plus en plus proche du système, voire dans le système
dans le cas de OpenVZ, qui peut être vu comme un Linux avec plusieurs tables de processus,
chacune dans le contexte d'une distribution propre.
6
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux
•
Hyperviseur complet
Partant du principe, exposé précédemment, qu'une approche pour une virtualisation efficace
consiste à affiner les couches, une première approche consiste à proposer un noyau léger (de type
micro‐noyau par exemple), lequel est accompagné d'outils de supervision, et adapté pour faire
tourner des systèmes d'exploitation natifs. Pour réussir cette approche, soit on émule le matériel
(et on revient aux performances de la machine virtuelle pour les I/O), soit on dispose des
instructions dédiées à la virtualisation. Dans ce dernier cas, les logiciels libres concernés se
limiteront au monde x86 ou x86‐64, munis des instructions ad‐hoc.
Les principaux exemples de ce principe sont :
➔ KVM : Intégré au noyau GNU/Linux à partir de la version 2.6.20.
➔ Xen sur une machine offrant le support des instructions AM‐V (version 3.03 ou ultérieure) ou VTx
(version 3.0 ou ultérieure).
•
Paravirtualiseur
Un paravirtualiseur est un noyau hôte allégé et optimisé pour ne faire tourner que des noyaux de
systèmes d'exploitation invités, adaptés et optimisés. Les applications en espace utilisateur des
systèmes d'exploitation invités tournent ainsi sur une pile de deux noyaux optimisés, les systèmes
d'exploitation invités ayant conscience d'être virtualisés. Cette approche offre l'avantage d'être
utilisable en l'absence des instructions spécifiques, mais elle est impraticable pour des systèmes
non libres pour lesquels l'éditeur ne fera pas l'effort d'adaptation.
Exemple :
Xen : noyau léger supportant des noyaux Linux, Plan9, NetBSD, etc,
4. Les produits de virtualisation
a. Introduction :
La virtualisation est une approche système dans la continuité logique de l'évolution : après avoir
"virtualisé le processeur" pour faire du multitâche sur une unité de traitement unique, on
virtualise le système entier pour disposer de plusieurs systèmes d’exploitation complets tournant
simultanément sur une même machine. Cette approche, historiquement introduite sur les gros
systèmes (IBM), se démocratise en raison de la puissance très importante des microprocesseurs
aujourd'hui, laquelle est largement sous‐exploitée. (On estime l'utilisation de la puissance des
serveurs à environ 10% aujourd'hui).
7
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Publicité
Cette technologie a commencé sous la forme de projets d'amateurs (Boochs, émulateur de
processeur x86 qui a peu à peu émulé toutes les phases de cette famille de processeurs), en
Virtualisation sous linux
parallèle d'une solution commerciale, VMWare.
Par la suite, Fabrice Bellard a démarré Qemu, un projet Open Source qui a changé la donne en
s'appuyant sur une partie du code de Boochs et en améliorant et affinant ses concepts. Il a
apporté un compilateur just‐in‐time, puis une accélération en permettant des 'raccourcis'
maîtrisés contrôlés par un fichier spécial (un périphérique Unix) dédié.
Dans le même temps, les laboratoires d'informatique de Cambridge lançaient un moniteur évolué
permettant la cohabitation de plusieurs OS, Xen. Plusieurs projets Open Source de existent
aujourd'hui dans cette technologie. Signe concret de cette évolution, les deux fondeurs de
microprocesseurs de PC ont intégré dernièrement des instructions destinés à faciliter et accélérer
la virtualisation (VT pour Intel et AM‐V chez AMD).
Signe de l'adoption large des technologies de virtualisation, RedHat a lancé le projet Libvirt
(www.libvirt.org), dont le but est l'écriture d'une API commune à plusieurs solutions de
virtualisation, base au développement d'outils graphiques ou d'administration génériques. La
première mouture de libvirt visait Xen, la version à ce jour supporte aussi Qemu et OpenVZ.
Les gains de l'utilisation de la virtualisation sont matériels (une machine peut simuler plusieurs
serveurs totalement cloisonnés, utile pour proposer par exemple une plate‐forme de tests ou
pour déployer de nouveaux services sur un parc préexistant sans se soucier de migrations), ou en
sûreté de fonctionnement (un serveur sur une machine virtuelle peut prendre le relais en
configuration cluster si le maître cède pour des raisons logicielles), ou les deux. Cette approche
permet par exemple de configurer une ferme de serveurs de secours proposant plusieurs services
différents sur une machine de secours unique sans contraindre tous les services aux mêmes
versions logicielles, même environnement système, même configuration.
L'arrivée des technologies de virtualisation dans le monde des PC a donc ouvert de nouvelles voies
pour sécuriser, simplifier et rationaliser les coûts dans les systèmes d'information.
b.
Quelques produits du marché :
La référence commerciale en la matière est VMWare, qui propose une gamme de solutions de
virtualisation matures, chaque solution se trouvant accompagnée d'outils facilitant la gestion du
parc virtuel. VMWare est disponible gratuitement pour les machines disposant d'au plus 2 unités
de traitement, mais est payant au‐delà. C'est un logiciel commercial distribué sous licence, aucune
partie du code n'est libre. Il fait de surcroît l'objet d'un brevet aux Etats‐Unis.
8
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Le logiciel libre phare du domaine, Qemu, est aussi une base de référence, d'autant plus que
plusieurs produits (dont VirtualBox) en utilisent des parties. Par contre, utilisé « sec », Qemu ne
propose qu'une interface en ligne de commande qui, bien qu'efficace, ne manquera pas de
paraître un peu abrupte. Il propose cependant beaucoup de fonctionnalités originales, ce qui le
Virtualisation sous linux
rend incontournable : il est le premier logiciel présenté ci‐après.
Ces deux références sont des implantations selon la technologie des machines virtuelles,
VMWare ayant aussi à son catalogue un produit qui s'apparente plus à un hyperviseur complet. Le
gros avantage des systèmes libres d'aujourd'hui, c'est qu'ils couvrent presque toutes les
techniques de virtualisation identifiées, avec donc Qemu et VirtualBox pour les machines
virtuelles, Xen pour la paravirtualisation, OpenVZ pour la virtualisation au niveau OS, et Xen 3.0 ou
kvm, utilisés sur des machines les supportant, pour l'hyperviseur complet.
Outils libres de virtualisation :
Du côté de la communauté du logiciel libre, il y a énormément de projets de virtualisation, ayant
des buts variables. Certains d’entre eux sont soutenus par une société, qui fournit un service
payant pour les clients le souhaitant. Les plus connus sont :
Bochs (prononcer « box ») Bochs est un émulateur très complet de l’architecture PC traditionnelle
(processeur Intel) ;
KVM soutenu par la société Qumranet, KVM se veut une solution de virtualisation performante et
facile à administrer ;
Linux‐VServer projet de virtualisation destiné à fonctionner sur le système d’exploitation
GNU/Linux ;
OpenVZ soutenu par la société Virtuozzo, OpenVZ est une solution de virtualisation
visant à obtenir les meilleures performances possibles ;
QEMU créé et développé par Fabrice BELLARD, QEMU est un projet visant à offrir une machine
virtuelle complète pour plusieurs architectures matérielles, y compris l’architecture PC ;
Xen soutenu par la société XenSource, Xen vise à proposer une solution performante pour la
virtualisation de serveurs ;
9
Yahia Slimani ; Hbib Elsmii
Université Virtuelle de Tunis
Système d’Exploitation GNU/Linux
Virtualisation sous linux
Ci‐dessous une liste des produits de virtualisation opensource :
• Bochs • • • • • • • • • • • • •
Cooperative Linux FreeVPS Jail KVM (nécessite les extensions de virtualisation AMD ou Intel) Linux‐VServer OpenVZ PearPC (émule un powerPC) Qemu View‐OS User Mode Linux VirtualBox Xen Zones (licence libre Solaris)
10
Yahia Slimani ; Hbib Elsmii