Serveurs virtuels

Configuration (par l'exemple) de XEN 3.0.1 sur Debian GNU/Linux 3.1 (sarge)

L'installation est appliquée sur une installation de base, avec trois RAID1 logiciels (swap,/,le reste) et du lvm (volume groupe vg_1) sur le 3ème RAID1.

  • Installation des paquetages nécessaires
    • Modifier /etc/apt/sources.list
# Xen pre-release packages
deb http://packages.debianbase.de/sarge/i386/xen3/ ./
deb http://www.backports.org/debian/ sarge-backports main
    • Modifier /etc/apt/preferences
Package: *
Pin: release a=sarge-backports
Pin-Priority: 200

Package: udev
Pin: release a=sarge-backports
Pin-Priority: 999

Package: lsb
Pin: release a=sarge-backports
Pin-Priority: 999

Package: module-init-tools
Pin: release a=sarge-backports
Pin-Priority: 999
    • Installer les paquetages
aptitude install xen linux-patch-xen udev/sarge-backports lsb-base/sarge-backports module-init-tools/sarge-backports bridge-utils
  • Compilation du noyau xen0
    • Récupérer les sources du noyau (la version 3.0.1 de XEN s'appuie sur une version 2.6.12.x)
cd /usr/src
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.bz2
    • Décompresser les sources
tar xjf linux-2.6.12.tar.bz2
    • Appliquer le patch XEN
cd linux-2.6.12
/usr/src/kernel-patches/i386/apply/xen
    • Choisir les options de compilation
make ARCH=xen menuconfig

Outre les options propres au boot de la machine, il faut ici veiller a bien selectionner les options suivantes dans la section XEN

CONFIG_XEN_PRIVILEGED_GUEST=y
CONFIG_XEN_PHYSDEV_ACCESS=y
CONFIG_XEN_BLKDEV_BACKEND=y
CONFIG_XEN_NETDEV_BACKEND=y
    • Compiler le noyau
make-kpkg clean
mak-kpkg --revision=x1 --append_to_version="-xen0" --arch xen kernel_image
  • Installer le noyau
    • Installation du paquetage
dpkg -i ../kernel-xen0-2.6.12-xen0_x1_i386.deb
    • Modification de la configuration grub

Ajouter dans le fichier /boot/grub/menu.lst la section suivante, en bas du fichier sous la ligne "### END DEBIAN AUTOMAGIC KERNELS LIST"

title           Debian GNU/Linux, kernel 2.6.12  XEN
root            (hd0,1)
kernel          /boot/xen-3.0.gz
module          /boot/xen-linux-2.6.12-xen0 root=/dev/md1 md=1,/dev/sda2,/dev/sdb2 ro libata console=tty0
savedefault
boot

Adapter les options root à l'environnement ;)

Il faut également dire à grub d'utiliser ce noyau par défaut en changeant l'option "default" dans ce même fichier.

  • Redémarrage
    • Désactiver TLS
mv /lib/tls /lib/tls.disabled
    • Rebooter et recompiler le noyau précédent jusqu'à ce que la machine boote correctement ;)
  • Compiler un noyau "xenU" pour les machines virtuelles

Reprendre la même procédure que précédemment en:

    • Changeant désactivant les options XEN précédentes et en activant les suivantes
CONFIG_XEN_BLKDEV_FRONTEND=y
CONFIG_XEN_NETDEV_FRONTEND=y
    • Changeant l'option de compilation "--append_to_version" pour mettre par exemple "xenu0"
  • Installer le kernel xenU
dpkg -i ../kernel-xen0-2.6.12-xenu0_x1_i386.deb
  • Préparer une partition pour la première machine virtuelle
    • Création du volume logique
lvcreate -n x_test -L 3G vg_1
    • Formater la partition
mkfs.ext3 /dev/vg_1/x_test
  • Monter la partition et y installer un système de base
mount /dev/vg_1/x_test /mnt
rsync -av / /mnt --exclude="/mnt/*" --exclude="/sys/*" --exclude="/proc/*"
  • Nettoyer le système virtuel
    • supprimer tout ce qui a été installé précédemment pour xen sauf le dernier noyau "xenU"
    • changer le nom d'hôte dans les fichiers appropriés
    • changer l'adresse IP
    • modifier fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/hda1	/		ext3	defaults,errors=remount-ro	0	1
proc	/proc	proc	defaults	0	0
  • Démonter la partition du système virtuel
umount /mnt
  • Créer le fichier de configuration du serveur virtuel

Créer le fichier /etc/xen/test avec le contenu suivant

kernel = "/boot/xen-linux-2.6.12-xenu0"
memory = 64
name = "test"
vif = [  ]
disk = [ 'phy:vg_1/x_test,hda1,w' ]
root = "/dev/hda1 ro"
extra = "2"

Ajuster ces paramêtres en s'inspirant des exemples dans /usr/share/doc/xen.

  • Démarrer ce nouveau serveur
xm create -c test

Pour quitter le terminal Ctrl+]

  • Activer le serveur virtuel au démarrage
cd /etc/xen/auto
ln -s ../test .