Ceci est une ancienne révision du document !
Virtualisation de systèmes d'exploitation
La virtualisation de systèmes d'exploitation est une technique consistant à faire fonctionner en même temps, sur un seul ordinateur, plusieurs systèmes d'exploitation comme s'ils fonctionnaient sur des ordinateurs distincts.
Plusieurs types de virtualisation existent, mais toutes fonctionnent selon un même principe :
- Un système d'exploitation principal (appelé système d'exploitation hôte) est installé dans l'ordinateur et sert de système d'accueil à d'autres systèmes d'exploitation ;
- Dans le système d'exploitation hôte, un logiciel de virtualisation (appelé hyperviseur) est installé. Celui-ci crée des environnements clos, isolés, avec des ressources bien précises : ces environnements clos sont appelées des machines virtuelles ;
- D'autres systèmes d'exploitation (appelés systèmes d'exploitation invités) peuvent alors être installées dans des machines virtuelles. Leur instance est totalement isolée des autres système hôte et systèmes invités.
En bref, la virtualisation est une méthode faisant fonctionner un ou des systèmes d'exploitation invités dans des machines virtuelles, au-dessus d'un système d'exploitation hôte.
Pourquoi la virtualisation ?
La virtualisation de systèmes d'exploitation a plusieurs intérêts :
- Utiliser un autre système d'exploitation sans redémarrer son ordinateur, afin d'utiliser des programmes ne fonctionnant pas nativement dans Ubuntu ;
- Exploiter des périphériques ne fonctionnant pas dans Ubuntu mais fonctionnant dans d'autres systèmes d'exploitation, car la gestion des périphériques de l'ordinateur est correctement implantée ;
- Tester des systèmes d'exploitation sans devoir repartitionner ses disques durs et sans compromettre un environnement quotidien stable ;
- Tester des logiciels dans des environnements contrôlés, isolés du système hôte ;
- Transporter ses systèmes d'exploitation d'un ordinateur à l'autre, une machine virtuelle fonctionnant sur n'importe quel ordinateur disposant d'un hyperviseur compatible.
Les entreprises ont compris les nombreux avantages que leur apporte la virtualisation. Afin de gagner de la place dans les salles de serveurs, faciliter les installations et les redémarrages après incidents, et développer et sécuriser les systèmes d'exploitation, les entreprises y ont de plus en plus recours.
Les particuliers seront toutefois plus intéressés par la perspective de faire fonctionner deux systèmes d'exploitation différents en même temps, afin d'exécuter des logiciels qui sont compatibles avec l'un mais pas avec l'autre.
Virtualisation complète : un choix privilégié chez le particulier
C'est ce type de virtualisation qui est particulièrement recherché par les particuliers. Ce type de virtualisation permet de faire fonctionner n'importe quel système d'exploitation sans adaptation aucune, puisque l'hyperviseur simule un ordinateur entier.
Fonctionnement : L'hyperviseur1) crée un environnement virtuel complet simulant littéralement un nouvel ordinateur complet, avec du "faux matériel". À quelques rares exceptions, le système d'exploitation invité (installé dans la machine virtuelle) ne communique qu'avec ce faux matériel simulé, rendant étanche l'environnement virtualisé.
Limitations : Ce type de virtualisation ne permet d'émuler que des systèmes d'exploitation prévus pour la même architecture matérielle que le processeur physique de l'ordinateur hôte. Par exemple, un ordinateur équipé d'un processeur Intel x86 sera incapable de virtualiser un OS prévu pour fonctionner dans une architecture PowerPC.
Virtualisation matérielle : La virtualisation matérielle est un préalable à la virtualisation de systèmes d'exploitation 64 bit. Elle est un ensemble d'instructions prévus dans le processeur d'un ordinateur pouvant être exploités par un hyperviseur dans le but d'améliorer les performances des machines virtuelles et des systèmes d'exploitation invités. Cette technologie est appelée AMD-V chez AMD et Intel VT-x chez Intel. Généralement incluse dans les processeurs récents, la virtualisation matérielle doit toutefois bien souvent être activée dans le BIOS de l'ordinateur et paramétrée convenablement dans les paramètres de la machine virtuelle.
Tous les processeurs ne sont pas capables de virtualisation matérielle. Liste des processeurs gérant la virtualisation matérielle
Hyperviseurs de type 2 : Voici une liste de logiciels permettant de mettre en place une solution de virtualisation complète :
- VirtualBox : Recommandé pour l'utilisation de système virtualisé de système de type Desktop.
- QEmu avec accélérateur KQemu : L'ancêtre de KVM
- KVM : l'environnement de virtualisation Linux du futur (comprendre le mieux supporté)
- Proxmox : une solution de virtualisation open source pleinement intégrée basée sur OpenVZ et KVM.
Autres types de virtualisation
Emulation
Fonctionnement : le logiciel de virtualisation crée un ordinateur virtuel simulé complet (Bios, processeur, mémoire, disque dur, cartes réseau, vidéo, …), intercepte une grande majorité des instructions du système invité pour les remplacer par leur équivalent sur le système hôte.
Caractéristiques particulières :
- permet d'exécuter des applications prévues pour d'autres architectures (ordinateurs, consoles, bornes d'arcade …),
- performances médiocres,
- le système invité n'a pas conscience de la virtualisation.
Émulateurs :
- QEmu sans accélérateur KQemu
- Bochs
ParaVirtualization
Fonctionnement : le système invité doit être écrit de manière particulière afin de fonctionner au sein de l'hyperviseur (pilotes et API spécifiques), et y fonctionne directement sans interception des instructions.
Caractéristiques particulières :
- nécessite un système invité compatible avec l'hyperviseur,
- excellentes performances (proche de l'exécution native),
- le système invité a conscience de la virtualisation.
Hyperviseurs de type 1 :
Environnement Virtuel ou Operating system-level virtualization
Fonctionnement : chaque environnement exécuté possède son propre espace mémoire, afin d'être isolé des autres, les autres ressources systèmes sont partagées (pilotes, noyau …). Les instructions ne sont pas interceptées, et l'environnement exécuté doit impérativement être compatible avec celui du système hôte (on ne peut pas par exemple, exécuter Windows sur un Environnement Virtuel de type Linux).
Caractéristiques particulières :
- permet d'exécuter plusieurs fois le même environnement dans des zones mémoires séparées,
- les ressources partagées empêchent d'obtenir une isolation sûre entre les environnements invités.
Exemple : Linux-VServer, OpenVZ
Autres hyperviseurs
Environnement Virtuel ou Operating system-level virtualization :
- LXC : Linux containers userspace tools
Autres :
- chroot : la premiere forme de virtualisation sous Linux, aucune gestion matérielle,
- User mode linux: : Le noyau Linux utilisé comme un exécutable
Gestion graphique pour environnement de virtualisation
- Convirt (paquet),
- Gestionnaire de machine virtuelle (Virtual Machine Manager),
- enomalism (Xen)
Divers
Liens
- petit topo sur OpenVZ et Vserver sur le site des Linuxiens : http://www.linuxfr.org/~Aefron/27379.html ; OpenVZ et Vserver sont des "container" au même titre que chroot.
- des linuxiens partagent leur expérience en matière de virtualisation. Xen remporte un franc succès. On y évoque aussi OpenVZ et VMware.
Pages en rapport
Contributeurs : ?