Virtualisation xen presents

From UnixWiki

Jump to: navigation, search


Contents

[edit] Interet de la virtualisation

La virtualisation est une technique qui permet de simuler l'exécution de plusieurs ordinateurs sur une seule machine. Le but est de faire tourner sur un seul ordinateur plusieurs noyaux, qui peuvent provenir de systèmes différents. Les programmes qui gravitent autour fonctionnent de façon tout à fait normal, et ne se rendent compte de rien.

La virtualisation offre de nombreuses possibilités:

  • Sécurité: si un pirate arrive à s'introduire sur une machine virtuelle, il ne pourra pas atteindre les données et les processus qui fonctionnent sur les autres machines virtuelles.
  • Les tests: avec plusieurs machines virtuelles installées sur un même ordinateur, on peut par exemple travailler en même temps sur plusieurs distributions de Linux afin de les tester
  • La stabilité: lorsqu'on lance des programmes peu stables oui qui risques de planter, on ne plante que la machine virtuelle en question, pas le système principal
  • Utiliser plusieurs systèmes différents en même temps. Il est par exemple possible de faire fonctionner Linux pour le multimédia, tout en ayant une machine virtuelle NetBsd pour développer.

La virtualisation offre aussi des possibilités assez spectaculaires:

  • Il est possible de faire un instantané (un snapshot) de la machine virtuelle. Cela consiste à sauvegarder la mémoire vive allouée à la machine, pour pouvoir la restaurer par la suite. On gardera ainsi tous les processus dans l'état exact de ce moment de l'exécution. Cette fonctionnalité peut être très pratique pour pouvoir signaler des bugs dans les programmes, car il est possible de fournir aux développeurs le système tel qu'il était au moment d'un plantage. On peut aussi s'en servir pour remettre le système tel qu'il était avant un incident.
  • Il est possible de migrer des machines virtuelles entre des systèmes hôtes, sans même l'arrêter. Par exemple, si vous disposez de deux machines physiques avec xen, et que vous souhaitez faire de la maintenance sur l'une des deux, vous pourrez déplacer les systèmes invités sur l'autre machine pendant l'intervention.

[edit] Les techniques de virtualisation

Plusieurs technologies de virtualisations sont disponibles. La première, représentée notamment par VMWare, consiste à émuler complètement la machine. On peut alors voir l'écran de la machine virtuelle représenté dans une fenêtre. On peut alors voir le bios de la machine, le système d'exploitation démarrer et tout se passe comme si c'était un véritable ordinateur. L'avantage de cette technique est de pouvoir faire fonctionner des systèmes originaux sur une machine de façon transparente. En revanche, cette méthode est assez peu performante car le processus d'émulation ralentit considérablement l'exécution de la machine virtuelle.

La seconde catégorie fonctionne au contraire avec le noyau exécuté sur la machine virtuelle qui doit être adapté à la technologie de virtualisation. C'est le cas de Xen, qui a été construite autour des systèmes Open-Source tels que Linux, Netbsd et Plan9. Sa principale qualité est d'offrir des excellentes performances, quasiment identiques à celles d'un système natif. La technologie en elle même ne provoque pas de pertes sensibles des performances. En revanche, pour que cela fonctionne, il est nécessaire de modifier en profondeur le noyau de la machine virtuelle. Plusieurs systèmes ont déja été portés. Par contre, les systèmes propriétaires tels que Windows ne pourront pas fonctionner de cette façon dans l'immédiat.

Il existe encore d'autre techniques, telles que UML (User Mode Linux). Cette dernière permet de faire passer un noyau linux pour un processus classique du système. UML est surtout utilisé par les développeurs du noyau, afin de garantir la stabilité du système. En effet, lorsqu'un driver du noyau est bogué, on est généralement obligé de redémarrer la machine. Avec UML, on a juste besoin de fermer le processus du noyau bogué, et on peut immédiatement continuer à travailler grâce au noyau principal qui est resté intact.

[edit] Aperçu général de Xen

La technologie Xen a été conçue à l'université de Cambridge au Royaume Uni, et plusieurs constructeurs informatiques contribuent au développement. C'est un projet Open-Source, donc utilisable tout à fait gratuitement, même à des fins commerciales. Ce projet a l'avantage d'offrir de très bonnes performances, et une très bonne stabilité, mais il nécessite la modification des systèmes invités. Il est donc pour le moment incapable de faire fonctionner une machine virtuelle avec Windows ou un autre système propriétaire pour le moment. Cependant, Intel et Amd sont en train de travailler sur des processeurs conçus pour faciliter l'exécution de machines virtuelles, et pourraient repousser cette limite.

A la date d'écriture de cet article, la version stable est la 3.0.0, sortie le 6 décembre 2005. Bien que le dernier noyau stable soit le 2.6.14, cette version de Xen est proposée pour le noyau linux 2.6.12.6. Une intégration de Xen aux sources officiel du noyau Linux est prévue prochainement, ce qui évitera ce décalage, et facilitera la diffusion du projet.

Actuellement, Xen ne fonctionne que sur l'architecture x86 (32 bits traditionnel et amd64), et nécessite un processeur ayant été acheté il y a moins de trois ans. Pour le moment, certaines fonctionnalités du noyau ne sont pas encore disponibles avec Xen. Ces fonctionnalités seront rendues accessibles dans les prochaines versions.

Au niveau des systèmes supportés, le système hôte doit obligatoirement être un noyau Linux ou NetBsd. En revanche, vous pouvez faire fonctionner plusieurs types de systèmes invités: naturellement Linux-2.4 ou Linux-2.6, mais aussi FreeBsd, NetBsd et Plan9. Notons que NetBsd-3 sorti en Décembre 2005 intègre directement la technologie Xen-2 dans la version officielle.

Si vous souhaitez tester Xen sans l'installer, vous pouvez télécharger le CDRom bootable fourni sur le site officiel. Si vous souhaitez installer Xen sur votre ordinateur, vous avez le choix entre récupérer le noyau et les outils compilés par l'équipe, ou recompiler vous mêmes le noyau pour sélectionner les options qui correspondent à votre matériel et à votre utilisation.

Pour bien comprendre la suite de cet article, il faudra bien distinguer les deux éléments suivants:

  • Le système hôte, appellé dom0, est le système qui est lancé au démarrage de l'ordinateur physique. Il fonctionne presque normalement, il peut accéder à toutes les ressources matérielles, et possède tous les droits. Ce système fonctionne sur un noyau avec un nom du type vmlinuz-2.6.12.6-xen0. Précisons qu'un seul système hôte est lancé sur l'ordinateur.
  • Les systèmes invités, appellés domU (U comme utilisateur), font appel aux ressources de dom0 pour fonctionner. Ce noyau est plus réduit, car la plupart des drivers sont écrits pour faire appel aux ressources de dom0. Le dom0 peut limiter les ressources qui sont accessibles à domU. Le noyau possède un nom du type vmlinuz-2.6.12.6-xenU. Plusieurs systèmes invités domU différents peuvent s'exécuter sur une même machine pyhsique, et chacun peut avoir accès à une partie différente des ressources de la machine physique. Ainsi, la mémoire vive est répartie entre les différents systèmes.

[edit] Fonctionnement général de Xen

La technologie Xen ne nécessite pas l'émulation des instructions exécutées sur les machines virtuelles. Xen réorganise les ressources de la machine afin qu'un accès matériel sur le système invité renvoie la demande au système hôte pour qu'il gère les ressources. Le portage d'un système d'exploitation pour xen consiste donc en partie à transformer les appels matériels des noyaux invités en demandes qui aboutissent au noyau de l'hôte. C'est pourquoi il ne faut pas parler d'émulateur avec xen mais d'hyperviseur ou de paravirtualiseur. On remarquera ainsi que le noyau domU ne possède qu'un seul driver de carte réseau. Ce driver fera appel aux ressources réseau du système hôte.

Les ressources de la machines sont partagées entre le système hôte et les systèmes invités. Vous devrez ainsi définir une quantité de mémoire vive qui sera réservée pour le système hôte, de même que pour les invités. Il est cependant possible de faire varier dynamiquement cette répartition de la mémoire, sans interrompre l'exécution des systèmes.

De même, les système invités auront des interfaces réseaux eth0, eth1, ... virtuelles qui seront reliées à une autre interface virtuelle au niveau du système hôte. Ce dernier aura en revanche en plus accès aux interfaces réelles, et sera chargé de fournir l'accès réseau aux invités. Cela pourra être fait de façon basique, avec un pont ou de façon plus sécurisée (avec du routage) afin de sécuriser les accès réseau des invités.

Pour démarrer un noyau basé sur Xen, il est nécessaire d'utiliser le gestionnaire d'amorçage Grub à la place de Lilo. Il faut lui indiquer un fichier de l'hyperviseur (xen-3.0.0.gz) qui chargera le dom0 basé sur le noyau vmlinuz-xen0. Ensuite, il sera possible de démarrer des systèmes invités depuis le système hôte, avec une commande spécifique depuis un shell. Il est donc impératif de disposer de deux noyaux différents, les deux étant compilés à partir des mêmes sources fournies sur le site de xen. Contrairement à Uml, un noyau qui n'est pas compilé pour la virtualisation ne pourra pas faire fonctionner xen, en ce qui concerne le système hôte. (Pour lancer Uml, il faut juste compiler un noyau pour un système invité, le noyau hôte pouvant rester inchangé).

Suite

Personal tools
Reference cards