Les Dédibox SC sont basées sur des serveurs Dell XS11-VX8, qui ont les caractéristiques suivantes :

Dans le choix des distributions Linux disponibles ont retrouve la dernière Debian, aka Squeeze.

La tentation est alors grande d'y mettre un hyperviseur Xen4.

Voici comment j'ai procédé.

Configuration de l'installation

Système d'exploitation

  • Installation Serveur
  • Debian V6.0.0 64bits

Table de partition

/dev/sda1 Primaire ext4 /boot    200 Mo
/dev/sda2 Primaire swap         1024 Mo
/dev/sda3 Primaire ext4 /      10240 Mo

Je réserve le reste du disque ( =~ 150 Go) pour un futur volume LVM).

Je passe les écrans “Configuration système” et “Configuration réseau”.

Une fois installée votre Dédibox est prête à être xénifiée.

Personnalisation dom0

Commande en vrac à exécuter en tant que root

Mise à jour du système

# apt-get udpate
# apt-get dist-upgrade

Personnalisation du système

# apt-get install vim sudo screen
# update-alternatives --config editor (choix vim.basic)
# grep ^root /etc/sudoers | sed -e 's/root/hugues/' > /etc/sudoers.d/hugues
# chmod 0440 /etc/sudoers.d/hugues 

Remplacer “hugues” par votre username préféré.

Création du volume LVM

Créer la partition primaire /dev/sda4 de type 8e/Linux LVM. Puis créer le volume group vg0.

# apt-get install lvm2
# fdisk /dev/sda

Une fois la partition créée, je configure LVM

# pvcreate /dev/sda4 
# /etc/init.d/lvm2 restart
# vgcreate vg0 /dev/sda4

Xenification dom0

Package Only

Debian Squeeze, y'a tout dedans.

# apt-get install xen-hypervisor-4.0-amd64
# apt-get install xen-qemu-dm-4.0
# apt-get install linux-image-2.6-xen-amd64
# apt-get install xen-tools xen-utils

Identification du kernel Xen

La partie la plus critique consiste à identifié quel kernel sera lancé au boot. En effet il n'y a pas de déport KVM sur la dédibox SC.

# less /boot/grub/grub.cfg 

Il nous reste à identifier le “menuentry” qui contient les lignes :

multiboot /xen-4.0-amd64.gz placeholder  
module /vmlinuz-2.6.32-5-xen-amd64 placeholder root=UUID=24bf8eef-779b-4042-965d-f8e42a721351 ro  quiet
module /initrd.img-2.6.32-5-xen-amd64

Chez moi c'est la 4…(0,1,2,3,4) Donc il faut modifier grub, pour que le kernel 4 soit pris au boot :

# vim /etc/default/grub 
[...]
GRUB_DEFAULT=4

Puis mise à jour de grub et reboot.

# update-grub
# reboot

Xen Check

Le dmesg de Xen, avant l'appel du kernel Linux

# xm dmesg

Liste des domaines instanciés, dont dom0:

# xm list

Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1480     1     r-----    684.0

Configuration Xend

Network

J'ai opté pour du NAT, et donc modifié le fichier /etc/xen/xend-config.sxp. Pour le moment ce sont les seules modifications apportées au fichier.

(network-script network-nat)
(vif-script     vif-nat)

Pour de plus amples informations sur la gestion du réseau par Xen Xen:Wiki:XenNetworking

Dans mon cas les DomUs seront dans le 10.0.0.0/8

Configuration Xen-Tools

Ici encore peu de modifications dans le fichier de configuration.

/etc/xen-tools/xen-tools.conf

lvm = vg0
size   = 10Gb      # Disk image size.
memory = 256Mb    # Memory size
swap   = 256Mb    # Swap size
gateway    = 10.0.0.254
netmask    = 255.255.255.0
broadcast  = 10.0.0.255

Première DomU

Création

# xen-create-image --hostname www --ip 10.0.0.1

Suivi de l'installation

# tail -f /var/log/xen-tools/www.log

Préparation

# mount /dev/vg0/www-disk /mnt
# chroot /mnt

Une fois dans l'environnement chrooté, j'effectue les opérations suivantes:

  • Créer un utilisateur
  • Modifier le mot de passe de root
  • Vérifier les paramètres réseaux
  • Retirer la ligne 127.0.0.1 de /etc/resolv.conf

Avant de lancer la domU, il faut démonter le disk lvm

# umount /mnt

Lancement de la domU

# xm create /etc/xen/www.cfg 
# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1480     1     r-----    682.5
www                                          1   256     1     -b----     51.8

Pour vous connecter à la domU

# xm console www 

Ctrl+D pour sortir.

Rendre visible vos domU depuis l'extérieur

Comme dit plus haut, on fait du NAT. Sans rien faire vous pouvez vérifier que les scripts de Xen ont mis en place le masquerading, permettant aux domU de communiquer avec l'extérieur. Mais pour l'entrant c'est à nous de jouer avec iptables.

NB: Il y a un petit “bug” dans le script /etc/xen/scripts/network-nat. En effet celui-ci fait appel à un script qui n'existe pas. Un contournement rapide consiste à le créer.

# touch /etc/xen/scripts/hotplugpath.sh

Iptables

Pour faire simple :

# vim /etc/network/if-up.d/iptables

Dont le contenu est :

#!/bin/bash
 
IPT=/sbin/iptables
XEN_NET='10.0.0.0/8'
VM_WWW='10.0.0.1'
 
${IPT} -F
${IPT} -t nat -F
echo "1" > /proc/sys/net/ipv4/ip_forward
${IPT} -t nat -A POSTROUTING -s ${XEN_NET} -j MASQUERADE
${IPT} -A PREROUTING -t nat -p tcp -i eth0 --dport 2201 -j DNAT --to ${VM_WWW}:22
${IPT} -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to ${VM_WWWW}:80

Et ne pas oublier de le rendre exécutable

# chmod +x /etc/network/if-up.d/iptables

Vous pouvez appeler le script directement, pas besoin d'attendre un prochain reboot.

Voilà votre domU est joignable en http, ou en ssh sur le port 2201.

Have fun,

Hug

linux/dediboxv3_debian6_xen4.txt · Last modified: 2011/05/25 13:30 by hug