VIRTUALISATION

La virtualisation est 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 d’utiliser une seule machine physique en remplacement de plusieurs et d’utiliser les possibilités offertes par la virtualisation pour démultiplier le nombre de machines virtuelles.

Quelques techniques de virtualisation:

  • la virtualisation totale
  • la paravirtualisation et hyperviseur
  • la virtualisation assistée par le matériel
  • le cloisonnement ou la virtualisation niveau noyau

        La  virtualisation totale

La virtualisation complète consiste à émuler l’intégralité d’une machine physique pour le système invité. Le système invité croit s’exécuter sur une véritable machine physique. Le logiciel chargé d’émuler cette machine a pour rôle de transformer les instructions du système invité en instructions pour le système hôte.

Il s’agit de la virtualisation la plus connue car elle est la plus facile à réaliser, même pour un novice en informatique. Ce type de virtualisation fournit une abstraction totale du système physique présent. Le logiciel émule tous les composants : processeur, bios, disque dur, carte vidéo … Il intercepte la plupart des instructions du système invité et les remplace par l’équivalent sur le système hôte. Les machines n’ont pas conscience de l’émulation car elles sont virtualisées sans aucun changement dans le système d’exploitation.

Ce genre de virtualisation, dont les outils sont principalement graphiques, servent dans le cadre de tests pour les développeurs, ou pour tester un système temporairement. Il n’est pas concevable d’héberger un serveur en production avec ce genre de virtualisation.

Exemple : bochs,VMware, Qemu, virtualbox, PearPC, Microsoft VirtualPC

virtcomplete

         L’hyperviseur et la paravirtualisation

La paravirtualisation est très proche du concept de la virtualisation complète, dans le sens où c’est toujours un système d’exploitation complet qui s’exécute sur le matériel émulé par une machine virtuelle, cette dernière s’exécutant au dessus d’un système hôte. Toutefois, dans une solution de paravirtualisation, le système invité est modifié pour être exécuté par la machine virtuelle. Les modifications effectuées visent à rendre le système émulé « au courant » du fait qu’il s’exécute dans une machine virtuelle.

Tout comme la virtualisation complète, la paravirtualisation garde une séparation nette entre le système invité et le système hôte. De ce fait, seul le système hôte à un accès direct et exclusif au matériel. Le système invité doit donc toujours passer par la machine virtuelle pour accéder au matériel, qui passe à son tour par la couche d’abstraction. On peut donc améliorer davantage le processus en laissant au système invité, un accès direct au matériel mais contrôlé. C’est le but des systèmes à hyperviseur.

L’hyperviseur est l’évolution de la paravirtualisation, si l’on recherche encore une amélioration des performances. Dans les technologies précédentes, le système hôte était le seul à avoir un accès direct au matériel. Avec un hyperviseur, le système hôte partage cet accès avec les systèmes invités. Au démarrage de l’ordinateur, c’est normalement le système d’exploitation qui prend la main et contrôle le matériel. Dans le cas de l’utilisation d’un hyperviseur, c’est un système minimaliste (l’hyperviseur) qui prend le contrôle du matériel. Ensuite, il fait appel à un système d’exploitation complet, qui sera donc exécuté par dessus l’hyperviseur. Ainsi, le système d’exploitation doit passer par l’hyperviseur pour tout accès au matériel.

On peut donc très facilement instancier un deuxième système d’exploitation, qui passera lui aussi par l’hyperviseur pour l’accès au matériel. Comme les systèmes d’exploitation doivent obligatoirement passer par ce dernier pour tout accès au matériel, l’hyperviseur peut s’assurer qu’ils accèdent aux ressources autorisées sans perturber le fonctionnement des autres systèmes.

Exemple : Xen, VMware ESX, Microsoft

paravirt

        La virtualisation assistée par le matériel

Ce type de virtualisation a pour but de faire fonctionner des systèmes invités dont les OS peuvent être différents mais non modifiés. La virtualisation assistée par matérielle est donc une évolution de la virtualisation totale puisqu’elle émule toujours le matériel nécessaire au bon fonctionnement des systèmes invités, mais avec une perte de performances moindre.

 

        Le cloisonnement  ou la virtualisation au niveau du système d’exploitation

Une autre pratique répandue dans le domaine de la virtualisation est le cloisonnement. Derrière ce nom se cachent plusieurs technologies visant à séparer fortement les processus s’exécutant sur un même système d’exploitation. Le cloisonnement vise à isoler chaque processus dans un conteneur. Un processus isolé de la sorte ne saura pas quels autres processus s’exécutent sur le même système, et n’aura qu’une vision limitée de son environnement. Le but principal de cette technologie est d’améliorer la sécurité du système d’exploitation et des applications.

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. Ces environnements sont donc bien adaptés au déploiement de nombreux serveurs virtuels de test ou développements basés sur un même système.

Exemple : FreeBSD Jail, Solaris Zones/Containers, Linux-VServer, OpenVZ, Virtuozzo

virtos

CLOUD COMPUTING

Le Cloud Computing est un modèle permettant un accès aisé et à la demande, via le réseau, à un ensemble partagé (pool) de ressources informatiques configurables (réseaux, serveurs, stockage, applications et services), qui peuvent être rapidement approvisionnées et mises à disposition avec un minimum d’effort de gestion ou d’interaction avec un fournisseur.

cloud1

cloud2

cloud3

cloud4

cloud5

cloud6

cloud7

cloud8

cloud9

cloud10

cloud11

cloud12

cloud13 cloud14 cloud15 cloud16 cloud17 cloud18 cloud19 cloud20 cloud21 cloud22