La virtualization permet d’utiliser les ressources hardware d’un système d’un point de vue fonctionnel en se moquant quelque part de leur implémentation physique (hardware).
L’idée consiste à diviser les ressources matérielles et de les utiliser indépendamment les unes des autres pour faire tourner différents ordinateurs « images ». On pourrait donc faire fonctionner sur la même machine un OS Unix, à côté d’une image Windows, et on pourra les utiliser, voir les rebooter indépendamment les unes des autres. Chaque image fonctionne de manière indépendante avec ses propres ressources CPU, RAM, … et est parfaitement isolée de l’autre comme si elle se trouvait sur un serveur séparé.
Il existe différents outils de virtualization tels que VMWare, XEN, VirtualBox, ... L'un des plus populaire est bien sûr VMWare.
Différence avec l’émulation
L’émulation consiste à imiter ou à rendre le comportement d’un système informatique sur un autre système informatique. Un exemple simple consiste à faire tourner un Commodore 64 sur un PC sous Windows.
Dans l’émulation on ne parle pas simplement d’une simple traduction d’un langage machine vers un autre. L’émulateur doit fournir les mêmes APIs et autres fonctions bas niveaux et les faire tourner sur un système pour lequel elles ne sont pas conçues.
L’émulation est consomme généralement beaucoup de ressources et fournit des résultats assez pauvres. Un système émulé est généralement très lent. Toutefois, les émulateurs sont souvent intéressants pour lutter contre l’obsolescence des systèmes informatiques. (Permettre de lire de vieilles données sur un système plus récent).
Bénéfices de la virtualization
- Indépendance du matériel, comme pour l'émulation, ceci permet de lutter contre l'obsolescence du hardware, puisque l'image fonctionnera sur n'importe quel type de machines.
- Ajouter de nouveau serveurs rapidement sans devoir racheter du nouveau matériel.
- Déplacer une machine virtuelle sur une autre machine physique située ailleurs sans devoir ré-installer ni reconfigurer.
- Optimalisation de l'utilisation des ressources matériel: Des études montrent qu'en général les serveurs sont utilisés entre 10 et 30% de leur capacité, grâce à la virtualization on peut installer plusieurs images sur un serveur et l'utiliser à pratiquement 100% de ses ressources.
- Comme les images sont isolées et indépendantes, cela permet de placer des services critiques sur une image particulière, rendant ce service indépendant des autres applications, sans devoir acheter du hardware spécifique.
Les gros bénéfices sont bien sûr la réduction des coûts de matériel et une facilité de maintenance.
Contraintes techniques
- Les processeurs i386 ne sont pas virtualisables (toutefois les duoCore Intel possède des jeux d’instructions redéfinis pour accepter la virtualisation).
- Si le serveur physique contenant plusieurs machines est hors services, on perd tout d’un coup.
- Ajouter trop d'images sur une machine physique réduit ses capacités (temps de réponse, mémoire) et cela peut se repercuter aussi sur les autres images.
- L’interaction entre la machine « image » et le hardware n’est pas toujours aisée. Ex : les ports USB ne sont pas toujours reconnus correctement.
- Il est bien sûr intéressant de faire fonctionner une machine à 100% de ses capacités, toutefois il faudra veiller à ménager les disques durs qui sont en général les pièces les plus fragiles. Un disque dur sollicité beaucoup plus a-t-il le même temps de vie qu’un disque moins sollicité ? L’expérience me ferait penser que non, mais seule une étude pourrait le prouver.
Conclusion
Comme toujours il n'y a pas de solution miracle, la virtualization peut s'avérer très puissantes dans certains cas d'utilisations précis. Toutefois, il vaut mieux rester prudent et éviter de virtualizer à tout prix, pour le plaisir de virtualizer. Tout dépend toujours des contraintes de coûts, de niveau de sécurité et de ce que à quoi on est prêt à perdre en cas de gros crash.
Sources
http://veillard.com/Talks/SL08LinuxVirt.pdf
http://www.computerworld.com/s/article/338993/Emulation_or_Virtualization_
Il y a des systèmes à ne pas virtualiser même si la tentation est grande.
RépondreSupprimerPar exemple les serveur DB OLTP en charge (OLTP: on line transaction processing).
La disponibilité des ressources (mémoire, processeur et I/O) sont des éléments prépondérants dans la tenue du temps de réponse.
De même, stocker les fichiers DB sur un disque virtuel (autre que SAN) et donc "partagé" ne me parait pas approprié. En effet, les ressources I/O sont partagés entre plusieurs O/S.
Finalement, un processeur ne supportera qu'un nombre limité de threat... ce qui limite la performance global du serveur (et donc des machines virtuelles).
Opter pour la virtualization? oui, mais uniquement pour rentabiliser du matériel pour y faire tourner des systèmes peu gourmand en ressources mais surtout des systèmes dont le temps de réponse n'est pas un élément critique!
Merci Dominique pour ces précisions utiles.
RépondreSupprimer"La disponibilité des ressources (mémoire, processeur et I/O) sont des éléments prépondérants dans la tenue du temps de réponse."
Les ressources (mémoire, processeur) peuvent être allouée à chacune des images. Toutefois, j'aurais aimé trouvé une comparaison benchmark entre une architecture virtualisée et une architecture physique. Et voir si l'une des deux est "statistiquement" meilleure. (En théorie, la physique devrait à mon sens être meilleure, mais seule une étude pourrait nous en assuer).
Pour ce qui est I/0, il est vrai que en théorie plus un contrôlleur supportent de machines virtuelles plus il sera sollicité. D'où un temps de réponse moins bon et sans doute une durée de vie moins bonne. Mais cela reste à être prouver scientifiquement ;-)
"De même, stocker les fichiers DB sur un disque virtuel (autre que SAN) et donc "partagé" ne me parait pas approprié"
Sur un SAN on pourrait normalement réservé un contrôleur disque par image (à configurer sans doute) toutefois il faudrait veiller à la bande passante !
"Finalement, un processeur ne supportera qu'un nombre limité de threat"
D'où l'intérêt d'avoir des processeurs multicore au jeu d'instruction virtualisable et encore je suppose que tout dépend aussi de l'OS sur lequel tourne le serveur d'image...
Excellents points soulevés, merci Dominique !
jyce.