#liste_articles {display:block}

Xen sous Fedora Core 4

jeudi 8 décembre 2005

 

Xen sous Fedora Core 4

Xen est un outil de virtualisation. Il permet de faire tourner plusieurs OS en parallèle sur un système en gérant la répartition des ressources. Dans notre cas, le but de de faire tourner plusieurs Fedora Core 4 sur une même machine.

Installation Xen

La machine sig.erasme.org est une Fedora Core 4. Xen est fournit en standard sur la Fedora Core 4. L’installation consiste donc à installer une Fedora Core 4 minimale. Reste à installer le kernel spécifique à Xen ainsi qu’un kernel pour les machines virtuelles, lui aussi spécifique à Xen.

Grossièrement, le principe de Xen, c’est un kernel Xen (donc pas Linux) qui boot en premier. Ce kernel va alors booter un kernel Linux qui sera la première machine virtuelle et qui a plus de droit que les autres. Elle s’appelle dom0 (ou Domain 0). C’est dom0 qui se chargera de lancer les autres VM.

Pour l’installation, nous avons utilisé les dernières versions de Xen (kernel xen, kernel xen0, kernel xenU et outils xen) de XenSource : http://bits.xensource.com/Xen/lates.... Soit :

 xen-3.0.0-2.1_fc4.i386.rpm
 xen-kernel-2.6.12-xen3_2.1_fc4.i686.rpm

ATTENTION : il y a peu de kernel qui fonctionne correctement avec Xen (plantage au boot ou problème de mémoire). En cas d’expérience, ne pas s’étonner s’il y a des problèmes.

Il est nécessaire d’installer auparavant les packages suivants :

# rpm -ivh libidn-0.5.15-1.i386.rpm curl-7.13.1-3.i386.rpm

On peut alors installer les outils Xen (kernel-xen0 : kernel hôte, kernel-xenU : kernel machine virtuelle, xen : outils d’administration) :

# rpm -ivh xen-3.0.0-2.1_fc4.i386.rpm xen-kernel-2.6.12-xen3_2.1_fc4.i686.rpm

Il est nécessaire de vérifier que les répertoires xenstored sont bien créé xenstored sont bien créés :

Il alors modifier /etc/grub.conf afin de booter sur le kernel xen0. Nous en profitons aussi pour rajouter le paramètre dom0_mem pour définir la mémoire alloué à la VM dom0. Il est conseillé de ne pas mettre beaucoup si cette machine ne sert qu’à démarrer les autres. En effet, si on met trop, il ne restera que peu de mémoire pour les autres VM. Dans notre cas le serveur dispose de 2Go, nous attribuons seulement 128 Mo pour dom0.

Voici donc à quoi ressemble le fichier grub.conf :

default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.12-xen3)
        root (hd0,0)
        kernel /boot/xen-3.gz dom0_mem=128M
        module /boot/vmlinuz-2.6-xen ro root=LABEL=/
        module /boot/initrd-2.6-xen.img

Vient maintenant le moment de reboot la machine sur le kernel Xen.

Nous pouvons maintenant démarrer le démon xend à l’aide des commandes suivantes :

# service xend start
# chkconfig --level 3 xend on

On peut alors s’assurer que cela fonctionne en listant les domaines (sort d’environnement d’exécution pour les machines virtuelles) de xen avec la commande :

# xm list

Installation du machine virtuelle

Il y a plusieurs façons de procéder. On créer une nouvelle partition physique est faire l’installation du système dans cette partition physique et rebootant la machine sur le CD d’installation de la Fedora Core 4.

On peut aussi faire l’installation de la machine virtuelle dans une fichier qui sera vu comme une partition. C’est cette solution que nous avons mise en place. Les fichiers des images de partition ce trouve dans le répertoire /var/vm/.

Commençons pas créer un fichier vide de la taille de la partition (13 Go) :

# dd if=/dev/zero of=machine1.img bs=1M count=13312

Il est alors nécessaire de formatter cette partition (ici en Ext3) :

# /sbin/mke2fs -F -j machine1.img

Nous allons maintenant installer un système minimum de Fedora Core 4 dessus afin de pouvoir booter cette machine. Pour cela, il faut monter ce fichier en loop back :

# mkdir machine1
# mount -o loop machine1.img machine1

Pour que l’on puisse faire l’installation à l’aide de yum, il faut créer quelques fichiers indispensables :

# cd machine1
# mkdir etc
# mkdir dev
# for i in console null zero ; do /sbin/MAKEDEV -d /var/vm/machine1/dev -x $i ; done

Dans le répertoire /var/vm/machine1/etc, il faut créer le fichier fstab suivant :

/dev/sda1               /                       ext3    defaults 1 1
none                    /dev/pts                devpts  gid=5,mode=620 0 0
none                    /dev/shm                tmpfs   defaults 0 0
none                    /proc                   proc    defaults 0 0
none                    /sys                    sysfs   defaults 0 0

Il ne reste plus qu’à installer la liste des packages qui nous intéresse. Dans notre cas, comme le système hôte est aussi une Fedora Core 4 et qui plus est minimale, nous somme partie de la liste des packages installés sur le système hôte pour l’installation de la machine virtuelle.

Pour cela, il faut déjà récupérer la liste des packages installés, supprimer les kernels inutiles et les outils Xen et faire installer les packages restants par Yum. Vous pouvez faire cela à l’aide de la commande suivante :

# rpm -qa | egrep -iv '(kernel|xen)' | perl -e 'while(<>) { $_ =~ s/\n/ /; print $_; }' | xargs yum --installroot=/var/vm/machine1/ -y install

Il est aussi nécessaire d’installer le kernel Xen sur la VM. En effet, le kernel utilisé se trouve sur dom0 et n’a pas besoin d’être sur la VM mais nous avons besoins de ses modules sur la VM. Vous pouvez donc le rajouter avec la commande suivante :

# yum --install=/var/vm/machine1 install /root/xensource/xen-kernel-2.6.12-xen3_2.1_fc4.i686.rpm

Il peut être nécessaire de modifier la configuration de yum afin qu’il ne vérifie pas la signature GPG pour installer ce package. Pour cela, il faut éditer le fichier /etc/yum.conf et modifier la ligne suivante comme suit :

gpgcheck=0

Une fois l’installation finie, il faut démonter le fichier :

# umount /var/vm/machine1/proc
# umount /var/vm/machine1

Reste à écrire le fichier de configuration de la machine virtuelle. Dans mon cas, le fichier est placé dans le répertoire /etc/xen/auto afin de permettre le démarrage automatique de cette VM lors du boot du serveur hôte. Voici le contenu du fichier machine1 :

kernel ="/boot/vmlinuz-2.6.12.6-xen3_2.1_fc4"
memory = 768
name = "machine1"
nics = 1
disk = ['file:/var/vm/machine1.img,sda1,w']
root = "/dev/sda1"
extra = "ro selinux=0 3"

Pour décrypter un peu. Nous utilisons le kernel /boot/vmlinuz-2.6.12.6-xen3_2.1_fc4 pour la machine virtuelle, elle a 768 Mo de mémoire, elle s’appele machine1, elle a une interface réseau, elle utilise une partition qui se trouve dans le fichier /var/vm/machine1.img et qui sera vue comme /dev/sda1 dans la VM, la partition de boot de la VM est /dev/sda1 et nous rajoutons les paramètres "ro selinux=0 3" au boot du kernel afin de booter en désactivant SELinux et au runlevel 3.

Pour que la VM soit démarré automatique au boot de la machine hôté, il faut s’assurer que le service xendomains est bien démarré au boot de notre runlevel :

# chkconfig --level 3 xendomains on

Utilisation d’une machine virtuelle

 Démarrer une VM

Maintenant que notre machine virtuelle est bien installé, il faut la démarrer. Cela peut être fait automatiquement lors du boot de la machine hôte si xendomains est activé. Sinon, on peut démarrer une machine avec la commande :

# xm create -c machine1

L’option -c permet d’attacher le terminal actuel à la console de la VM et donc de voir le boot de la machine.

 Arrêter une VM

On peut le faire normalement en étant sur la VM. Sinon, en étant sur la machine hôte on peut utiliser la commande suivante :

# xm shutdown machine1

 Se rattacher à la console d’une VM déjà démarré

Sur la machine hôte, on peut le faire simplement en utilisant la commande :

# xm console machine1

Notre terminal devenant alors la console de la VM.

Sur la machine hôte, on peux aussi se connecter en telnet sur le port 9601 (pour le première VM, incrémenter pour les autres) pour accéder à la console.

Annexes

Notre installation de Xen a été faite en se basant sur la documentation disponible ici http://www.fedoraproject.org/wiki/F.... Toutefois, en suivant exactement la procédure nous avons eu quelques difficulté. En effet, l’installation du groupe "Base" avec yum ne fonctionne pas pour nous.

Documents :

par Daniel Lacroix