Dark Mode

Aller au contenu

Virtualisation

Un article de Wikipedia, l'encyclopedie libre.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article ne cite pas suffisamment ses sources ().

Si vous disposez d'ouvrages ou d'articles de reference ou si vous connaissez des sites web de qualite traitant du theme aborde ici, merci de completer l'article en donnant les references utiles a sa verifiabilite et en les liant a la section << Notes et references >>.

En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?
Oracle VM VirtualBox.

En informatique, la virtualisation est l'action de creer une version virtuelle (plutot que reelle) et du meme niveau d'abstraction d'un element, en particulier du materiel programmable, du stockage et des ressources reseaux. Ces ordinateurs virtuels sont appeles serveur prive virtuel (Virtual Private Server ou VPS) ou encore environnement virtuel (Virtual Environment ou VE).

Virtualisation des donnees

[modifier | modifier le code]

La virtualisation des donnees est une approche permettant d'unifier les donnees de plusieurs sources dans une meme couche afin que les applications, les outils de generation de rapports et les utilisateurs finaux puissent acceder aux donnees sans avoir besoin de details sur la source, l'emplacement et les structures de donnees d'origine[1].

Il peut sembler a priori etrange de simuler d'autres machines sur une machine hote : un systeme d'exploitation est concu pour utiliser du materiel qui est entierement sous son controle. La juxtaposition de plusieurs systemes non concus pour communiquer entre eux peut faire craindre des inefficiences auxquelles s'ajoute le fait que le processus de virtualisation consomme des ressources. Le tableau n'est pas aussi sombre. D'une part, on evite une grande partie de ces inefficiences juste en disposant de disques differents pour chaque systeme, et d'autre part le cout de la memoire permet a chacun de ces systemes de rester resident, et parfois avec de larges sections de code partagees[2]. Par ailleurs, le microcode des mainframes comme des microprocesseurs inclut de plus en plus de fonctionnalites qui rendent la virtualisation plus efficace[3].

Enfin, il est courant pour une entreprise de disposer d'une quinzaine de serveurs fonctionnant a 15 % de leur capacite, de facon a pouvoir faire face aux pointes de charge sporadiques. Un serveur charge a 15 % consomme autant d'energie qu'un serveur charge a 90 %, et regrouper plusieurs serveurs sur une meme machine s'avere rentable si leurs pointes de charge ne coincident pas systematiquement, meme en incluant la charge de la virtualisation[4]. La virtualisation des serveurs permet aussi une bien plus grande modularite dans la repartition des charges et la reconfiguration des serveurs en cas d'evolution ou de defaillance momentanee (plan de secours, etc.).

Cette section a besoin d'etre recyclee (mai 2013).
Une reorganisation et une clarification du contenu sont necessaires. Ameliorez-la ou discutez des points a ameliorer.

Chaque outil de virtualisation met en oeuvre une ou plusieurs de ces notions :

  • couche d'abstraction materielle et/ou logicielle ;
  • systeme d'exploitation hote (installe directement sur le materiel) ;
  • systemes d'exploitation (ou applications, ou encore ensemble d'applications) << virtualise(s) >> ou << invite(s) >> ;
  • partitionnement, isolation et/ou partage des ressources physiques et/ou logicielles ;
  • images manipulables : demarrage, arret, gel, clonage, sauvegarde et restauration, sauvegarde de contexte, migration d'une machine physique a une autre ;
  • reseau virtuel : reseau avec acces par pont, reseau NAT, reseau prive entre hote et/ou invites.
Cette section a besoin d'etre recyclee (mai 2013).
Une reorganisation et une clarification du contenu sont necessaires. Ameliorez-la ou discutez des points a ameliorer.

Les interets sont :

  • utilisation optimale des ressources d'un parc de machines (repartition des machines virtuelles sur les machines physiques en fonction des charges respectives) ;
  • installation, deploiement et migration facile des machines virtuelles d'une machine physique a une autre, notamment dans le contexte d'une mise en production a partir d'un environnement de qualification ou de pre-production, livraison facilitee ;
  • economie sur le materiel par mutualisation (consommation electrique, entretien physique, surveillance, support, compatibilite materielle, etc.)
  • installation, tests, developpements, cassage et possibilite de recommencer sans casser le systeme d'exploitation hote ;
  • securisation et/ou isolation d'un reseau (cassage des systemes d'exploitation virtuels, mais pas des systemes d'exploitation hotes qui sont invisibles pour l'attaquant, tests d'architectures applicatives et reseau) ;
  • isolation des differents utilisateurs simultanes d'une meme machine (utilisation de type site central) ;
  • allocation dynamique de la puissance de calcul en fonction des besoins de chaque application a un instant donne ;
  • diminution des risques lies au dimensionnement des serveurs lors de la definition de l'architecture d'une application, l'ajout de puissance (nouveau serveur, etc.) etant alors transparent.

Inconvenients

[modifier | modifier le code]

Depend de l'implementation de la machine virtuelle. En cas d'installation brute sur un seul serveur on peut constater les problemes suivants :

  • l'acces aux ressources des serveurs hotes via la couche d'abstraction materielle nuit aux performances, et l'execution de n'importe quel logiciel virtualise consommera davantage de ressources qu'en mode natif. Cela est d'autant plus vrai avec de la virtualisation imbriquee ;
  • en cas de panne d'un serveur hote, l'ensemble des machines virtuelles hebergees sur celui-ci seront impactees. Mais la virtualisation est souvent mise en oeuvre avec des redondances, qu'elle facilite ;
  • la mise en oeuvre est complexe et demande un investissement initial ;
  • il y a des contraintes d'administration specifiques (deploiement, sauvegarde...).
Cette section ne cite pas suffisamment ses sources (juillet 2014).
Pour l'ameliorer, ajoutez des references de qualite et verifiables (comment faire ?) ou le modele {{Reference necessaire}} sur les passages necessitant une source.

Une bonne part des travaux sur la virtualisation fut developpee au centre scientifique de Cambridge d'IBM en collaboration avec le MIT, ou fut mis au point le systeme experimental CP/CMS, devenant ensuite le produit (alors nomme hyperviseur) VM/CMS. Voir IBM 360 et 370. Par la suite, les mainframes ont ete capables de virtualiser leurs systemes d'exploitation avec des technologies specifiques et proprietaires, a la fois logicielles et materielles. En 1979 fut annonce par exemple sur les IBM 4331 et 4341 un accelerateur VM optionnel et microcode.[ref. souhaitee]

Dans la deuxieme moitie des annees 1980 et au debut des annees 1990, on a cree des embryons de virtualisation sur des ordinateurs personnels. Ces solutions pouvaient etre soit purement logicielles, soit couplees a du materiel additionnel (ajout de processeur, carte reseau, etc.). Et c'est sur des ordinateurs Amiga equipes de processeurs heterogenes comme le 80386 et 80486, 68xxx, et PPC qu'il etait possible de lancer d'autres OS comme Windows, Mac OS, voire Linux, le tout en multitache sous AmigaOS. C'est sur cette machine en avance sur son temps que la technologie de virtualisation a ete pleinement exploitee et encore inegalee aujourd'hui. Pour les PC, il y avait des emulateurs comme le SideCar et PC Task. Sur Macintosh, Emplant et ShapeShifter. Les grands Unix ont suivi avec les architectures NUMA des Superdome d'HP (PA-RISC et IA-64) et des E10000/E15000 de Sun (UltraSparc).

Dans la seconde moitie des annees 1990, les emulateurs sur x86 des vieilles machines des annees 1980 ont connu un enorme succes, notamment les ordinateurs Atari, Amiga, Amstrad et les consoles NES, SNES, Neo-Geo AES. La societe VMware developpa et popularisa a la fin des annees 1990 et au debut des annees 2000 un systeme proprietaire de virtualisation logicielle des architectures de type x86 pour les architectures de type x86. Les logiciels libres Xen, KVM, QEMU, Bochs, Linux-VServer, Oracle VM VirtualBox et les logiciels proprietaires mais gratuits VirtualPC, Virtual Server et VMware Server ont acheve la popularisation de la virtualisation dans le monde x86. VMware a dernierement rendu gratuite une version allegee de son hyperviseur phare ESX3i. Les fabricants de processeurs x86 AMD et Intel ont mis en oeuvre la virtualisation materielle dans leurs gammes dans la seconde moitie de l'an 2000.

L'ETSI a mis en place en un groupe de travail [5] afin de standardiser le NFV (en), une nouvelle approche de la virtualisation, auquel participent de nombreuses societes specialisees dans les technologies d'intelligence reseau (Qosmos, Procera Networks ou encore Sandvine) et des laboratoires de recherche universitaire (University of Campinos, University Carlos III of Madrid, University of the Basque Country, University of Patras, etc.)[6].

Differentes techniques

[modifier | modifier le code]

Afin d'avoir une idee theorique des performances des applications au sommet, il faut comparer verticalement l'empilement de couches. Il est possible d'elargir les schemas en rajoutant des environnements virtualises consommant egalement des ressources de l'hote.

Article detaille : Conteneur (virtualisation).
Isolateur.

Un isolateur est un logiciel permettant d'isoler l'execution des applications dans ce qui est appele des contextes, ou bien zones d'execution. L'isolateur permet ainsi de faire tourner plusieurs fois la meme application dans un mode multi-instance (plusieurs instances d'execution) meme si elle n'etait pas concue pour ca. Cette solution est tres performante, du fait du peu d'overhead (temps passe par un systeme a ne rien faire d'autre que se gerer), mais les environnements virtualises ne sont pas completement isoles. La performance est donc au rendez-vous, cependant on ne peut pas vraiment parler de virtualisation de systemes d'exploitation. Uniquement lies aux systemes Linux, les isolateurs sont en fait composes de plusieurs elements et peuvent prendre plusieurs formes.

Par exemple, en logiciels libres : Linux-VServer (isolation des processus en espace utilisateur), chroot (isolation changement de racine), BSD Jail (isolation en espace utilisateur), OpenVZ (partitionnement au niveau noyau sous Linux), LXC (usage des Cgroups du noyau Linux), Docker.

Noyau en espace utilisateur

[modifier | modifier le code]
Noyaux en mode utilisateur.

Un noyau en espace utilisateur (user-space) tourne comme une application en espace utilisateur de l'OS hote. Le noyau user-space a donc son propre espace utilisateur dans lequel il controle ses applications. Cette solution est tres peu performante, car deux noyaux sont empiles et l'isolation des environnements n'est pas geree et l'independance par rapport au systeme hote est inexistante. Elle sert surtout au developpement du noyau.

Par exemple : User Mode Linux (noyau tournant en espace utilisateur) ; Cooperative Linux ou coLinux (noyau cooperatif avec un hote Windows) ; Adeos (micro noyau RT faisant tourner Linux en kernel-space non-RT) ; L4Linux (micro noyau RT faisant tourner Linux en kernel-space non-RT).

Hyperviseur de type 2

[modifier | modifier le code]
Hyperviseur de type 2.

Un hyperviseur de type 2[7] est un logiciel (generalement assez lourd) qui tourne sur l'OS hote. Ce logiciel permet de lancer un ou plusieurs OS invites. La machine virtualise ou/et emule le materiel pour les OS invites, ces derniers croient dialoguer directement avec ledit materiel. Cette solution est tres comparable a un emulateur, et parfois meme confondue. Cependant l'unite centrale de calcul, c'est-a-dire le microprocesseur, la memoire systeme (RAM) ainsi que la memoire de stockage (via un fichier) sont directement accessibles aux machines virtuelles, alors que sur un emulateur l'unite centrale est simulee ce qui reduit considerablement les performances par rapport a la virtualisation.

Cette solution isole bien les OS invites, mais elle a un cout en performance. Ce cout peut etre tres eleve si le processeur doit etre emule, comme cela est le cas dans l'emulation. En echange cette solution permet de faire cohabiter plusieurs OS heterogenes sur une meme machine grace a une isolation complete. Les echanges entre les machines se font via les canaux standards de communication entre systemes d'exploitation (TCP/IP et autres protocoles reseau), un tampon d'echange permet d'emuler des cartes reseaux virtuelles sur une seule carte reseau reelle.

Par exemple : logiciels Microsoft (Microsoft VirtualPC, Microsoft Virtual Server), logiciels Parallels (Parallels Desktop, Parallels Server), Oracle VM VirtualBox (libre), logiciels VMware (VMware Fusion, VMware Player, VMware Server, VMware Workstation), logiciels libres (QEMU : emulateur de plateformes x86, PPC, Sparc, et bochs : emulateur de plateforme x86).

Hyperviseur de type 1

[modifier | modifier le code]
Hyperviseur de type 1.

Un hyperviseur de type 1 est comme un noyau systeme tres leger et optimise pour gerer les acces des noyaux d'OS invites a l'architecture materielle sous-jacente. Si les OS invites fonctionnent en ayant conscience d'etre virtualises et sont optimises pour ce fait, on parle alors de para-virtualisation (methode indispensable sur Hyper-V de Microsoft et qui augmente les performances sur ESX de VMware par exemple). Actuellement[Quand ?] l'hyperviseur est la methode de virtualisation d'infrastructure la plus performante mais elle a pour inconvenient d'etre contraignante et onereuse, bien que permettant plus de flexibilite dans le cas de la virtualisation d'un centre de donnees.

Par exemple : XCP-NG (libre) ou son parent Citrix Xen Server, VMware vSphere (anciennement VMware ESXi et VMware ESX), Microsoft Hyper-V Server, Parallels Server Bare Metal, Oracle VM (gratuit), KVM (libre).

Le support de la virtualisation peut etre integre au processeur ou assiste par celui-ci, le materiel se chargeant, par exemple, de virtualiser les acces memoire ou de proteger le processeur physique des acces les plus bas niveaux. Cela permet de simplifier la virtualisation logicielle et de reduire la degradation de performances.

Des exemples de virtualisation materielle : Hyperviseur IBM Power[8] & Micro-partitionnement AIX, Mainframes : VM/CMS, Sun LDOM (hyperviseur pour la gestion de << logical domains >>), Sun E10k/E15k, HP Superdome, AMD-V (Assistance a la virtualisation de AMD, anciennement Pacifica) et Intel VT (Assistance a la virtualisation de Intel, anciennement Vanderpool).

Notes et references

[modifier | modifier le code]
  1. | (en-US) << dataWerks - data virtualization solutions with a radically new approach to delivering real time business insights >>, sur www.datawerks.com (consulte le )
  2. | C'est en particulier le cas sous VM/CMS
  3. | VT-x, AMD-V, pagination imbriquee
  4. | (en) Sun and AMD special edition, Virtualization for dummies, p. 8
  5. | (en) << Network Functions Virtualisation >>, sur ETSI (consulte le )
  6. | (en) << NFV membership >>, Liste des membres ETSI sur le NFV, sur ETSI
  7. | << Les types d'hyperviseurs >>, sur IT-Connect (consulte le )
  8. | (en) << Server virtualization with IBM PowerVM >> (consulte le )

Articles connexes

[modifier | modifier le code]

Liens externes

[modifier | modifier le code]
v * m
Hyperviseur
Isolateur
Noyau en espace utilisateur
Machine virtuelle et/ou emulateur
Autre