Muffin 2/Introduction à la virtualisation sous Fedora

De Magazine fedora-fr
Aller à : navigation, rechercher


Introduction

Vir 1 muff 2.png



Dans cet article, il est sujet de la virtualisation sur notre distribution Fedora.


Ce sujet est particulièrement vaste et les solutions existantes, qu'elles soient libres ou non, sont nombreuses. Voilà pourquoi je vais me limiter, pour ce deuxième opus de Muffin, à vous donner la définition des termes principaux. Termes qui vous permettront de comprendre ce sujet qu'est la virtualisation, puis essayer d'expliquer succinctement le fonctionnement global d'une telle architecture.




Composition et type de virtualisation

Lorsque l'on parle de solution de virtualisation certains termes tels qu'hyperviseur, système hôte, système invité, virtualisation totale ou encore paravirtualisation sont utilisés, je vous propose un petite définition pour chacun d'eux permettant ainsi une meilleure compréhension du sujet.

La Virtualisation

La notion de virtualisation est un concept ancien à l’échelle de l’informatique puisqu'elle date des années 1970 ! À cette époque, la virtualisation se faisait de manière matérielle avec un cloisonnement électronique des divers composants applicatifs. Ce procédé peut être encore rencontré de nos jours, mais il est évident que nous allons nous concentrer dans cet article à la virtualisation avec cloisonnement logiciel.

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. Ce partage de matériel entre plusieurs systèmes d'exploitation a différents avantages que nous verrons un peu plus tard.

Cette notion de virtualisation s'est vu attribuer un certain nombre de principes définis par 2 ingénieurs en 1974 : Popek et Goldberg. Ces principes les voici :

  • Le premier est ce qu'ils appellent le critère d'«équivalence». Ceci implique qu’une application quelconque doit s’exécuter de la même manière qu'elle soit exécutée au dessus d’un hyperviseur ou d’une machine physique.
  • Le second est celui du «contrôle de ressources». Ce critère indique que l'hyperviseur doit avoir le contrôle exclusif des ressources à partager. N’importe quelle application doit donc passer par cet outil pour pouvoir accéder à une ressource partagée.
  • Le troisième et dernier principe est le critère d'«efficacité». Il indique qu’une part majoritaire d’instructions doit être exécutée par le processeur sans intervention de l'hyperviseur. Ce critère exclut les techniques de virtualisation totale. La paravirtualisation, elle, permet de répondre un peu plus à ce principe.

Hyperviseur

Un hyperviseur (aussi appelé VMM pour Virtual Machine Monitor) est une plate-forme de virtualisation qui permet à plusieurs systèmes d’exploitation de travailler sur une machine physique en même temps. Il est à noter que l'hyperviseur peut faire office de système d'exploitation hôte.


La Virtualisation Totale

Virtualisation Totale muffin 2.png




La virtualisation totale est un type de virtualisation. Un hyperviseur retranscrit chacune des informations entre le système d'exploitation virtualisé (système invité) et le matériel réel en les transmettant au système d'exploitation principal (système hôte). Ces opérations sont possibles grâce à une émulation du matériel de la part de l'hyperviseur au système invité. Les appels systèmes des systèmes invités n'ont donc pas besoin d'être modifiés contrairement à la paravirtualisation. Ainsi, n'importe quel système d'exploitation doit pouvoir être installé sur ce type de virtualisation. L'inconvénient de ce procédé est qu'il est alors plus couteux en terme d'utilisation de ressources et affecte les performances de la machine.

Il est à noter que l'on peut aussi appelé HVM (Hybrid Virtual Machine ou Hardware Virtual Machine) les machines virtualisées utilisant la virtualisation totale.





La Paravirtualisation

Paravirtualisation muffin 2.png



La paravirtualisation est une technique de virtualisation qui présente à une machine virtuelle une interface logicielle similaire à du matériel réel. Ce matériel étant optimisé pour ce type de fonctionnement, contrairement à l'émulation d'un périphérique matériel existant comme dans la virtualisation totale, cela permet d'éviter certaines lenteurs.

La paravirtualisation permet aux machines virtuelles fonctionnant sur ce type de virtualisation d'atteindre un niveau de performance proche du matériel réel. Cependant, les systèmes d'exploitations doivent être modifiés afin de fonctionner sur ces systèmes paravirtualisés. Le portage des systèmes d'exploitation libres est généralement effectué, seulement il appartient aux fournisseurs de systèmes d'exploitation propriétaires de réaliser ces modifications eux-mêmes. Dans ce contexte, les systèmes d’exploitation invités communiquent avec l'hyperviseur par l'intermédiaire d'API (Application programming interface, une interface de programmation applicative) de communication. Ces API remplacent les appels systèmes et chaque solution de virtualisation dispose de sa propre API.

Il est à noter que l'on peut aussi parler de VMA (virtualisation matérielle assistée) lorsqu'il s'agit de paravirtualisation.



L'Isolation

Isolation muffin 2.png





L'isolation est une technique permettant de séparer plusieurs contextes ou environnements, on parle d'environnement virtuel. Cette technique se base sur une version du noyau GNU/Linux modifiée. Ce même noyau fournit la virtualisation, l'isolement, la gestion de ressource, etc... Ainsi cette technique a l'avantage d'être peu couteuse en ressources et offre la possibilité de disposer de différents environnements (GNU/Linux) et donc différentes distributions sur une même machine en simultané. C'est la solution de virtualisation la plus légère.






Les intérêts de la virtualisation

Vous venez d'avoir un récapitulatif des différentes définitions permettant de mieux comprendre le fonctionnement et l'organisation d'une solution de virtualisation. Je vous propose de découvrir ce que peut apporter ce type de solution au sein d'une entreprise, mais aussi pour un simple particulier.

Je vois en ce qui me concerne 4 axes d'intérêts principaux :

L'économie d'énergie

A l'heure ou la prise de conscience de l'impact de l'Homme moderne sur notre planète, il semble évident de souligner ce point. Si pour trois serveurs fonctionnant 24/24h 7/7j, il n'y en a plus qu'un, le taux de dioxyde de carbone, la consommation d'énergie et surement d'autres points que j'oublie, sont tout autant d'élément qui ne peuvent que pousser à virtualiser au maximum !


La réduction de coûts

En effet, la virtualisation permet de réduire le nombre de serveurs physiques, en exploitant au mieux un seul serveur hébergeant une solution de virtualisation. On obtient alors une mutualisation de nos équipements physiques. La plupart des serveurs (mails, DNS, web, FTP, etc...) n'utilisent pas toujours la totalité de la puissance que propose la machine. Ainsi en regroupant ces serveurs, en les virtualisant, là ou 3 serveurs physiques étaient nécessaires auparavant, un seul suffit aujourd'hui grâce à la virtualisation. Les machines, les serveurs étant de nos jours de plus en plus puissants et performants, la virtualisation est alors une solution tout à fait satisfaisante en terme d'efficacité.

De plus, cette réduction de coût à un impact direct sur l'hébergement de ces serveurs, il y a alors besoin d'un espace moindre, avec une climatisation moindre et avec une consommation électrique moindre pour un même nombre de services. L’architecture sera donc utilisée de manière plus efficace, mais comme toute architecture, celle-ci aura un coup de mise en place et de maintenance qu'il ne faut pas négliger.

La sécurité

La sécurité dans la notion de virtualisation, est lié à la sécurité d'un contexte applicatif que l'on peut observer lorsque l'on utilise 'chroot' sous GNU/Linux par exemple, et donc plus généralement le cloisonnement, ce qu'apporte la virtualisation. Ainsi on atteint un cloisonnement proche du cloisonnement physique que l'on obtient avec des machines physiques.

Je travaille chez un éditeur de logiciel, et l'intérêt des machines virtuelles réside dans le fait tout simple, que celles-ci soient propres à un contexte. Ainsi afin de disposer d'un contexte client, quoi de plus simple et pratique que de remonter son environnement sur une machine virtuelle. D'autant plus que celle-ci n'a pas besoin d'être démarrée en permanence, un système de mise en pause permettra en rejoignant un point cité plus haut, d'économiser en énergie et financièrement. Dans ce même esprit, l'isolement d'un contexte peut être considéré pour un particulier à disposer d'un environnement n'ayant qu'un certain nombre de logiciels restreints, spécifiques, non disponibles sur son système d'exploitation natif, ou tout simplement, dans un contexte de test de la prochaine release de Fedora ;-) !

La criticité des services virtualisés

On peut même parler de "Fail Over". Les avantages des solutions de virtualisation sont certains cependant une panne matérielle induirait l’indisponibilité d’un grand nombre de services ! La virtualisation permet de palier à cette problématique en fournissant la possibilité de sauvegarder le contexte dans sa globalité, voir, via des solutions de virtualisation comme Xen ou VMWare ESX, d'offrir la possibilité de migrer de manière transparente des machines virtuelles d'un serveur virtuel vers un autre ! Ainsi le maintien du service est garanti même pour des applications ne proposant pas forcément de solution de 'Fail Over' par défaut et cela peu importe la panne.

Les performances

Certaines solutions de virtualisation comme les offres VMWare ESX (et ESXi) permettent de palier aux (très faibles) problèmes de performances liés à la virtualisation totale en attribuant à une machine virtuelle, les ressources dont elle a besoin. Par exemple si vous avez plusieurs machines virtuelles, dont une seule ayant un besoin en terme de puissance de calcul à un instant t, alors la fréquence ou le nombre de processeurs définis pour cette machine virtuelle vont momentanément être augmentés en utilisant plus de ressources qu'elle n'est sensé avoir. Les ressources allouées à chaque machine ne sont pas figées, dans une solution de virtualisation comme Xen ou VmWare, il est possible de choisir de bloquer ou non le dépassement des ressources physiques consommable, que ce soit en limite haute comme en limite basse. Indirectement, une solution de virtualisation proposant ce type d'opération permet ce que l'on appelle de la répartition de charge (Load Balancing) et cela comme pour le basculement lors d'une panne, même pour des applications de pouvant pas le gérer nativement.


Naturellement, cette liste n'est pas exhaustive et chacun peut y trouver de multiples intérêts.

Les solutions les plus populaires

Log virt muff 2.png














Voici la liste des hyperviseurs les plus implantés :

VMWare

VMWare est une société éditrice de solutions de virtualisation propriétaires, émulateur de plateforme x86 grâce au procédé de virtualisation partielle. Elle édite différents produits VMWare Player et VMWare Workstation proposant une virtualisation simple sur un poste et VMWare ESX/ESXi et VMWare Server qui sont des solutions de virtualisation orientés serveur utilisant une distribution Red Hat comme système d'exploitation de base pour la plateforme ESX/ESXi. Cette société représente à l'heure actuelle l'une des acteurs principaux dans le monde de la virtualisation.

VirtualBox

VirtualBox est un logiciel de virtualisation totale créé par la société InnoTek racheté par Sun, puis par Oracle. Ce logiciel libre de virtualisation fonctionne sur les systèmes d'exploitation : Microsoft Windows, GNU/Linux 32 et 64 bits, FreeBSD 32 et 64 bits et Mac OS X. Il supporte en tant qu'invité : Microsoft Windows, GNU/Linux, OS/2 Warp, OpenBSD et FreeBSD.

KVM/QEMU

KVM est un fork de QEMU. Le code source des deux projets est fréquemment resynchronisé. La principale modification apportée est le support du module kvm. Lorsqu'on parle de KVM, on parle généralement de l'ensemble : la version modifiée de QEMU et le module kvm.

Ces logiciels sont également libres, Comme expliqué ci-dessus KVM est la version modifiée de QEMU tirant parti des instructions de virtualisation des processeurs Intel et AMD (Intel VT ou AMD-V), tout comme la majorité des solutions de virtualisation présentées dans cet article.

OpenVZ

Ce logiciel libre utilise une technologie de virtualisation de niveau système d'exploitation basée sur le noyau Linux nommé Virtuozzo, à mi-chemin entre la paravirtualisation et l'isolement. OpenVZ est un système de virtualisation particulier puisqu'il permet de faire tourner différentes machines virtuelles partageant un noyau unique. Cette technique est donc limitée à des machines (hôte ou invité) tournant sous le système d'exploitation GNU/Linux. En contrepartie, les performances sont particulièrement élevées et il est très facile de modifier les configurations physiques des machines virtuelles sans les redémarrer. Cette technique est souvent employée chez les hébergeurs pour les offres «VPS» (virtual private server) par exemple.

Linux-VServer

Linux-VServer est un isolateur des contextes à la manière de chroot en ajoutant un certain nombre de fonctionnalités.

Cette solution de virtualisation consiste en un patch pour le noyau Linux qui permet d'exécuter plusieurs applications dans différents contextes sur une machine hôte. Nous sommes alors dans le cas d'une solution de virtualisation de type isolement.

Xen

Xen est une solution de virtualisation libre. Cette solution utilise le principe de paravirtualisation et de virtualisation totale depuis sa dernière version. Ainsi tout type de système d'exploitation peut être exécuté au sein de cet hyperviseur parfois renommé paravirtualiseur.

Hyper-V

Hyper-V est une solution de virtualisation propriétaire tournant uniquement sur des environnements Microsoft Windows Server 2008. Le principe de virtualisation se base sur l'isolement de partition enfant hébergeant les systèmes invités, tout en proposant des facilités d'accès aux ressources via un composant nommé VMBus, cependant, les systèmes invités doivent être modifier afin de supporter les fonctions Enlightened I/O (dans le même principe que la paravirtualisation).

Aller plus loin

Sites officiels :