Virtualisation de systèmes d'exploitation
La virtualisation consiste à faire fonctionner un ou plusieurs systèmes d'exploitation (ou applications complexes) comme un simple logiciel, sur un (ou plusieurs) système d’exploitation fonctionnant sur ordinateur (ou serveur), au lieu de ne pouvoir en installer qu'un seul par machine. Ces ordinateurs virtuels sont appelés Virtual Environment ou VE.
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, on parle alors de Virtual Machines (VM).
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 ;
- Tester des systèmes d'exploitation en cours de développement sans compromettre un environnement quotidien stable ;
- Tester des logiciels dans des environnements contrôlés, isolés et sécurisés ;
- 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 particuliers et les PME/PMI seront généralement 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. Les grandes entreprises, elles, ont de plus en plus recours à 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 réseaux d'entreprises.
Principe général et terminologie
Plusieurs types de virtualisation existent, mais tous 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és dans des machines virtuelles. Leur instance est totalement isolée du système hôte et des autres 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.
Virtualisation complète : un choix privilégié chez le particulier
La virtualisation dite complète permet de faire fonctionner n'importe quel système d'exploitation en tant qu'invité dans une machine virtuelle. Pour l'utilisateur final, ce type de virtualisation est la plus simple à mettre en place et est la plus pratique.
- Principe : 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 de virtualiser 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 système d'exploitation prévu pour fonctionner dans une architecture PowerPC.
Quelques hyperviseurs de virtualisation complète :
Virtualisation de systèmes d'exploitation 64 bits
Pour être en mesure de virtualiser un système d'exploitation 64 bits, le microprocesseur de votre ordinateur hôte doit être doté d'une technologie appelée virtualisation assistée matériellement (ou accélération matérielle). Cette technologie est identifié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/UEFI 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
Si votre microprocesseur est listé dans la liste précédente et vous souhaitez savoir si la virtualisation assistée matériellement est activée dans les propriétés de votre BIOS/UEFI, ou si votre microprocesseur n'y est pas listé et vous souhaitez savoir si cette technologie y est présente, exécutez la commande suivante dans un terminal :
egrep '(vmx|svm)' /proc/cpuinfo
Cette commande vous retourne les fonctionnalités de votre microprocesseur et met en évidence les fonctionnalités de virtualisation assistée matériellement. Lorsque les termes svm ou vmx sont mis en évidence dans le retour de la commande, votre microprocesseur dispose de la fonctionnalité de virtualisation assistée matériellement; il peut donc virtualiser des systèmes d'exploitation 64 bits (disposer de la fonction indique seulement que la virtualisation 64bits est possible, cela ne veut pas nécessairement dire que le paramètre de virtualisation du BIOS soit bien positionné..). Dans le cas contraire, vous ne pouvez virtualiser que des systèmes d'exploitation 32 bits.</note>
Aller plus loin...
La virtualisation complète n'est qu'un seul type de virtualisation. Celui-ci est généralement plutôt adapté pour une utilisation par un particulier ou par une PME/PMI, afin de faire fonctionner un environnement de travail pour y faire fonctionner certains logiciels particuliers non gérés par le système d'exploitation hôte. Mais de nombreux autres types de virtualisation existent, bien plus efficaces pour accomplir des tâches précises. Ci-dessous sont décrits très succinctement certains autres types de virtualisation, avec quelques exemples d'hyperviseurs déployant ceux-ci.
Émulation
L'hyperviseur crée un ordinateur virtuel simulé complet. La différence entre l'émulation et la virtualisation complète est la simulation d'un microprocesseur : en virtualisation complète, le processeur simulé par la machine virtuelle est nécessairement identique à celui de l'ordinateur hôte. En émulation, celui-ci peut être de type différent. Ceci permet d'émuler des architectures matérielles différentes (ordinateurs, consoles de jeux, bornes d'arcade…) au-dessus d'un système hôte. Les performances en émulation sont toutefois médiocres. (Plus d'informations)
- QEmu (sans accélérateur KQemu)
- Bochs
Paravirtualisation
Dans ce type de virtualisation, l'hyperviseur2) et le système d'exploitation invité coopèrent. En virtualisation complète, lorsque l'invité a besoin de communiquer avec du matériel, celui-ci n'a accès qu'à du faux matériel présenté par l'hyperviseur ; en paravirtualisation, l'hyperviseur capture les appels système de l'invité et les transmet au matériel. En somme, l'invité exploite directement le matériel de l'ordinateur hôte. La paravirtualisation offre des performances optimales, mais nécessite un système d'exploitation modifié, conscient qu'il fonctionne dans un environnement virtualisé. (Plus d'informations)
- vmware esxi
- xVM
Environnement Virtuel (Operating system-level virtualization)
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 Microsoft® Windows® dans un environnement virtuel au-dessus d'un hôte de type Linux). Ce type de virtualisation permet d'exécuter plusieurs fois le même environnement dans des zones mémoires séparées, mais les ressources partagées empêchent d'obtenir une isolation sûre entre les environnements invités. (Plus d'informations)
- Docker (http://www.docker.io/) tire parti de ces différentes API d'isolation et lui ajoute des scripts de déploiement.
- LXD, interface de gestion de containers LXC, du projet Linux Containers,
- libcontainer
- OpenVZ
Ressources
- virt tools (en) Portail dédié à la virtualisation avec des outils libres
Pages en rapport
Contributeurs : ?