Xen est un outil très puissant qui permet de simuler la présence de plusieurs ordinateurs sur le même ordinateur physique. Cependant ce qui fait la puissance de Xen, c'est qu'il repose sur un micro-noyau ce qui accélère les interactions entre les machines virtuelles et le matériel. Globalement, une perte de 1 à 3% est estimée entre la puissance de la machine d'origine et la somme de la puissance de toutes les machines virtuelles. Plus le nombre de machines est important, plus la perte est grande. Paradoxalement, il y a aussi un gain de mémoire. En effet, dans le monde professionnel, le taux d'utilisation des serveurs est très bas. La virtualisation permet de rentabiliser plus facilement la puissance de calcul. Xen est certainement à ce jour la solution de virtualisation la plus aboutie du marché. De plus, ses sources sont libres, ce qui permet à chacun de l'adapter à ses besoin, à condition d'en avoir les compétences.
Pour partager le même matériel entre plusieurs machines virtuelles, Xen utilise une soucouche appelée hyperviseur. Tous les appels au matériel, différents des appels standards, sont transmis à l'hyperviseur qui gère le matériel avec un ordonanceur. Ainsi, en fonction des priorités, toutes les machines peuvent avoir accès au matériel en temps voulu.
Il existe une machine, appelée domaine privilégié (Dom0) qui possède un accès prioritaire au matériel. Ce domaine sert aussi d'interface de configuration pour l'hyperviseur et les autres machines virtuelles. Un paragraphe lui sera consacré.
Ici, Xen a été mis en place sur une plateforme Archlinux à l'aide des sources. Pour plus de facilité de gestion des espaces de stockage, nous avons également utilisé LVM (Logical Volume Manager). Cependant, la solution avec l'utilisation des images de disques sera également présentée.
Quelques petites recommandations :
Commencez par télécharger les sources de Xen ainsi que le noyau Linux adapté (ca peut être un peu long, continuez avant d'avoir terminé, seul l'autre est important pour l'instant). Le premier lien pointe vers les sources de l'hyperviseur, la soucouche Xen à tout système qui sera installé par la suite sur la machine, et le second vers les sources du noyau Linux modifiées spécialement pour fonctionner avec Xen. Il est normal que la version du noyau ne soit pas la plus récente car les modifications pour Xen sont relativement importantes et ne sont pas réeffectuées dans les nouvelles versions.
Ensuite, vous devez extraire les sources de l'hyperviseur, puis compiler et installer ces sources :
tar xfz xen-3.3.1.tar.gz
cd xen-3.3.1
make distclean && make install-xen
Il existe quelques options au make de d'hyperviseur. Vous pouvez les consulter en tappant :
make help
Normalement, votre hyperviseur est installé et vous devrier voir dans votre /boot un fichier xen.gz qui est peut être un lien symbolique, mais qui pointe vers l'hyperviseur qui sera chargé par GRUB (LiLo ne permet pas de démarrer Xen).
On ne peut toujours pas démarrer la machine sur Xen car l'hyperviseur ne possède pas d'interface et que le système en place n'est pas configuré de manière à pouvoir communiquer avec. Il faut donc compiler un noyau-xen qui est un noyau dont les appels matériels ont étés modifiés pour pouvoir fonctionner avec Xen.
Installation du domaine privilégié
Après avoir téléchargé dans la partie précédente les sources du noyaux, décompressez-les :
tar xfz linux-2.6.18-xen-3.3.0.tar.gz && cd linux-2.6.18-xen-3.3.0
Les habitués de la compilation de noyau vont reconnaitre l'arborescence classique des sources. Voici un fichier de configuration de base (pas parfait, mais bien épuré : un bon début à mon sens) copiez le dans le répertoire à la bonne place et lancez la configuration du noyau pour le personnaliser un peu :
cp config-base .config
make menuconfig
N'oubliez pas d'y inclure les modules nécessaires au bon fonctionnement de votre matériel (notamment la carte réseau) !
Il existe d'autres interfaces de configuration du noyau. Pour en avoir la liste, tappez :
make help
Une fois le noyau configuré et la configuration sauvegardée, il est temps de compiler le nouveau noyau :
make vmlinux
Si vous avez utilisé la configuration de référence, il n'y a pas de modules donc ca sera suffisant. Sinon, exécutez également :
make modules && make modules_install
ATTENTION, ces étapes peuvent être très longues (parfois 1H sur des machines peu puissantes). Soyez patients !
Une fois la compilation terminée, copiez le noyau dans le répertoire /boot :
cp vmlinuz /boot/vmlinux-xen0
Ensuite, vous devez ajouter une entrée dans votre menu de démarrage. éditez le fichier /boot/grub/menu.lst et ajoutez-y l'entrée suivante :
title Xen3.3
root (hd0,0)
kernel /boot/xen.gz dom0_mem=256M
module /boot/vmlinux-xen0 root=/dev/hda1 ro console=tty0
De la sorte, en sélectionnant l'entrée Xen3.3 vous lancerez l'hypervieur dont le noyau se nomme xen.gz et le dom0 dont le noyau se nomme vmlinux-xen0 avec 256Mo de RAM.
Redémarrez et patientez.
On voit défiler rapidement les lignes de lancement de l'hyperviseur avant le chargement du noyau.
Si tout s'est bien passé, il devrait vous demander votre login/mot de passe comme d'habitude.
ATTENTION : Il est apparu que les périphériques USB de commande (clavier/souris) n'étaient pas reconnus, pensez au bon vieux clavier PS/2 !
Vous pouvez maintenant installer les programmes de contrôle de Xen en tappant la commande suivante dans le répertoire des sources Xen :
make install-tools
Préparation des machines virtuelles
Ici, il va falloir recompiler un autre noyau, spécifique aux domaines non privilégiés. Pour cela il faut désactiver une option dans le noyau (CONFIG_XEN_PRIVILEGED_GUEST=n). L'intérêt des machines virtuelles est notamment la sécurité, ne mettre que des domaines privilégiés serait une abération. Pour configurer ce noyau, vous pouvez également utiliser la configuration ci-dessus.
Une fois votre noyau compilé, il ne reste qu'a ajouter un disque dur pour la nouvelle machine, le remplir avec la distribution Linux de votre choix et lancer la machine à l'aide d'un fichier de configuration approprié. Commençons par créer une partition. Deux cas de figure se présentent : LVM et fichier. Pour le cas LVM, reportez-vous au tutoriel adapté, pour créer une partition sous forme de ficiher, tappez la commande suivante :
dd if=/dev/random of=/home/login/xen/disque_dur1.img bs=1024 count=1000
Ceci crée une partition de 1Go (1000 blocs de 1024k) dans le fichier disque_dur1.img.
Quelquesoit la méthode que vous avez choisi, il faut maintenant créer le système de fichier de votre nouvelle partition :
mkfs.ext3 /home/login/xen/disquedur1.img
Une fois votre disque prêt, montez-le, et copiez dedans l'image d'une distribution Linux. ATTENTION : par cette méthode, vous ne pouvez copier que l'image d'une installation déjà faite (généralement sous le nom .img). Les images ISO ne sont pas utilisables comme ça.
Vous pouvez supprimer les noyaux et les modules présents dans les images. En effet, comme expliqués plus haut, ils ne sont pas utilisables avec Xen. Le noyau est "fourni par l'hôte".
Vous devrez répéter ces étapes pour chaque machine virtuelle que vous désirez installer. Certains utilitaires comme xen-tools permettent d'effectuer ces actions automatiquement et ainsi de générer des machines virtuelles simplement. Ces outils génèrent également le fichier de configuration ci-dessous.
Pour chaque machine virtuelle, il va falloir définir la quantité de mémoire utilisée, son nom, l'emplacement de ses disques, etc. Pour celà, il faut écrire un fichier de configuration à placer dans le répertoire /etc/xen
Configuration de : /etc/xen/domU-1 (Cliquez pour faire apparaitre le fichier)
Le seul point qui peut poser problème dans ce fichier de configuration est le mode de configuration réseau sous Xen. En effet, Xen propose 3 modes de fonctionnement réseau :
Les modes de fonctionnement sont détaillés dans la documentation officielle de Xen
Il ne vous reste plus qu'à lancer votre machine virtuelle :
xm create domU-1
Normalement, la machine vous rend la main tout de suite. Pour voir le lancement de la machine virtuelle, ajoutez -C à la commande
Si vous souhaitez prendre la main sur une machine virtuelle déjà lancée, tappez la commande suivante :
xm console domU-1
Pour vous dégager de la machine, il suffit de presser la combinaison de touches Ctrl + AltGr + ].
Vous pouvez afficher la liste de machines virtuelles en fonctionnement avec la commande xentop