Hyperviseur Xen sur debian Squeeze amd64

Nous allons installer Xen sur un serveur Dell PowerEdge R410 avec Debian Squeeze amd64!

Voici la machine (DELL PowerEdge R410) :

  • Processeur Xeon Quad Core E5620
  • carte PERC H200 avec 2 disques SAS en RAID1
  • 4 Go de mémoire vive

–> On fait l’installation de la debian squeeze avec le CD1 (bien suffisant pour l’installation de base) téléchargeable ici : http://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-cd/ (c’est la weekly builds) – Je prends cette version car qu’elle prend désormais en charge ma carte PERC H200

–> On récupère le paquet firmware-bnx2_0.27_all.deb qui est le firmware de la carte réseau « Broadcom Corporation NetXtreme II ». On décompresse le paquet avec ar (ou bien avec n’importe quel logiciel de décompression..par exemple 7zip sous windows le fait aussi) pour ne garder sur un support amovible que : bnx2\bnx2-mips-09-5.0.0.j3.fw

…(l’installation de la debian se passe sans souci)… c’est parti mon kiki! (oui l’hyperviseur s’appelle kiki)

Voici le partitionnement choisi (en 4 partitions primaires) :

  • 100Mo /boot en ext4
  • 20Go en LVM (pour le système – en ext4)
  • 1Go de swap
  • le reste en LVM

–> On installe Xen :

root@kiki:/etc/xen# aptitude  install linux-image-2.6-xen-amd64 xen-tools xen-utils

Dans /etc/default/grub, j’ai ça (pas de modification) :

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Je modifie /etc/grub.d/40_cutom pour avoir ça :

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Xen 4 / Debian Squeeze kernel 2.6.32-5 pvops" {
insmod ext4
set root='(hd0,msdos1)'
multiboot (hd0,msdos1)/xen-4.0-amd64.gz
module (hd0,msdos1)/vmlinuz-2.6.32-5-xen-amd64
module (hd0,msdos1)/initrd.img-2.6.32-5-xen-amd64
}

On met a jour grub :

root@kiki:/etc/xen# update-grub

Mince, après reboot j’ai toujours ça :

root@kiki:/etc/xen# xm info
WARNING!  Can't find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?

Je tente un truc trouvé ici http://xen-orchestra.com/2010/08/xen-4-on-squeeze-how-to/ :

root@kiki:/etc/xen# mv /etc/grub.d/10_linux /etc/grub.d/50_linux
root@kiki:/etc/xen# update-grub2

après reboot, c’est ok……

root@kiki:/etc/xen# xm info
host                   : kiki
release                : 2.6.32-5-xen-amd64
version                : #1 SMP Wed Oct 20 02:22:18 UTC 2010
machine                : x86_64
nr_cpus                : 8
nr_nodes               : 1
cores_per_socket       : 4
threads_per_core       : 2
cpu_mhz                : 2394
hw_caps                : bfebfbff:2c100800:00000000:00001f40:029ee3ff:00000000:00000001:00000000
virt_caps              :
total_memory           : 4086
free_memory            : 460
node_to_cpu            : node0:0-7
node_to_memory         : node0:460
node_to_dma32_mem      : node0:387
max_node_id            : 0
xen_major              : 4
xen_minor              : 0
xen_extra              : .1
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : unavailable
xen_commandline        : placeholder
cc_compiler            : gcc version 4.4.5 20100824 (prerelease) (Debian 4.4.4-11)
cc_compile_by          : waldi
cc_compile_domain      : debian.org
cc_compile_date        : Fri Sep  3 15:38:12 UTC 2010
xend_config_format     : 4

Je liste les vm :

root@kiki:/etc/xen# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  3573     8     r-----    165.9

MAINTENANT On va essayer de créer une machine virtuelle!!

On édite le fichier /etc/xen-tools.conf pour adapter les directives : dir, debootstrap, size, memory, noswap, fs, dist, image, dhcp, kernel, initrd, arch

grep -E -v '^(#|$)' /etc/xen-tools/xen-tools.conf
dir = /home/xen
install-method = debootstrap
size   = 4Gb      # Disk image size.
memory = 128Mb    # Memory size
swap   = 128Mb    # Swap size
fs     = ext3     # use the EXT3 filesystem for the disk image.
dist   = `xt-guess-suite-and-mirror --suite` # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway    = 192.168.0.1
netmask    = 255.255.255.0
broadcast  = 192.168.0.255
nameserver = 192.168.16.56
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
mirror = `xt-guess-suite-and-mirror --mirror`
ext3_options     = noatime,nodiratime,errors=remount-ro
ext2_options     = noatime,nodiratime,errors=remount-ro
xfs_options      = defaults
reiserfs_options = defaults
btrfs_options    = defaults

et je fais en sorte de paramétrer le mode bridge dans /etc/xen/xend-config.sxp (c’est par défaut d’ailleurs) :

(network-script network-bridge)
(vif-script vif-bridge)
#(network-script network-route)
#(vif-script vif-route)

JE PEUX MAINTENANT CRÉER MES MACHINES VIRTUELLES !!!

Je crée la machine girafe :

root@kiki:~# xen-create-image --hostname=girafe --ip=192.168.0.14 --passwd
 
General Information
--------------------
Hostname       :  girafe
Distribution   :  squeeze
Mirror         :  http://debian.univ-reims.fr/debian/
Partitions     :  swap            128Mb (swap)
                  /               4Gb   (ext3)
Image type     :  sparse
Memory size    :  128Mb
Kernel path    :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path    :  /boot/initrd.img-2.6.32-5-xen-amd64
 
Networking Information
----------------------
IP Address 1   : 192.168.0.14 [MAC: 00:16:3E:9D:89:EA]
Netmask        : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1
Nameserver     : 192.168.16.56
 
 
Creating partition image: /home/xen/domains/girafe/swap.img
Done
 
Creating swap on /home/xen/domains/girafe/swap.img
Done
 
Creating partition image: /home/xen/domains/girafe/disk.img
Done
 
Creating ext3 filesystem on /home/xen/domains/girafe/disk.img
Done
Installation method: debootstrap
Done
 
Running hooks
Done
 
No role scripts were specified.  Skipping
 
Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done
 
 
Logfile produced at:
         /var/log/xen-tools/girafe.log
 
Installation Summary
---------------------
Hostname        :  girafe
Distribution    :  squeeze
IP-Address(es)  :  192.168.0.14
RSA Fingerprint :  a2:af:7e:21:b3:a1:1d:62:70:c5:83:ce:b5:c6:94:9c
Root Password   :  N/A

J’ai eu ce problème lors de la création initiale de girafe :

...
Installation method: debootstrap
Done
System installation failed.  Aborting
/tmp/agcdRtKUDf/etc/ssh/ssh_host_rsa_key.pub: No such file or directory
 
 
Logfile produced at:
         /var/log/xen-tools/girafe.log
Removing: /home/xen/domains/girafe

Il m’a simplement fallu indiquer les paramètre proxy (ce qui peut être aussi mis dans xen-tools.conf) :

root@kiki:~# export http_proxy="http://wwwcache.univ-orleans.fr:3128"

Enfin, on liste les domaines, on lance girafe et on reliste les domaines :

root@kiki:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  3573     8     r-----   3112.7
root@kiki:~#
root@kiki:~# xm create girafe.cfg
Using config file "/etc/xen/girafe.cfg".
Started domain girafe (id=9)
root@kiki:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  3142     8     r-----   5362.2
girafe                                      9   128     1     -b----      1.5

Tout est ok!!! On peut maintenant créer plusieurs autres machines virutelles et les lancer.

Après avoir créé tout plein de machines virtuelles… je les ai lancées une par une… et à la 4ème, mince :

root@kiki:~# xm create martine.cfg
Using config file "/etc/xen/sardine.cfg".
Error: Device 51713 (vbd) could not be connected. Failed to find an unused loop device

Test des interfaces de loopback :

root@kiki:~# ls -ls /dev | grep loop | wc -l
8

mince.. c’est pas assez…

Pour rectifier ça il suffit de créer le fichier /etc/modprobe.d/local-loop.conf et y mettre :

options loop max_loop=64

Il faut arrêter tous les domU (avec des xm shutdown mamachinev).

Il ne doit rester que dom0 :

root@kiki:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  3573     8     r-----   3114.6

On recharge le module loop :

root@kiki:~# rmmod loop && modprobe loop

On reteste les interfaces loop :

root@kiki:~# ls -ls /dev | grep loop | wc -l
64

Bingo!! je vais pouvoir lancer jusqu’à 32 machines virtuelles!!!

Je lance déjà mes 5 machines virtuelles :

root@kiki:~# xm create martine.cfg
Using config file "/etc/xen/martine.cfg".
Started domain girafe (id=34)
root@kiki:~# xm create josiane.cfg
Using config file "/etc/xen/josiane.cfg".
Started domain girafe (id=35)
root@kiki:~# xm create gisele.cfg
Using config file "/etc/xen/gisele.cfg".
Started domain girafe (id=36)
root@kiki:~# xm create girafe.cfg
Using config file "/etc/xen/girafe.cfg".
Started domain girafe (id=38)

Tout fonctionne!!!!!

Je vérifie en les listant :

root@kiki:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  3142     8     r-----   5362.2
girafe                                      38   128     1     -b----      1.5
gisele                                      36   128     1     -b----      1.9
josiane                                     35   128     1     -b----      0.8
martine                                     34   128     1     -b----      1.9
sardine                                     37   128     1     -b----      1.8

Bingo.

Cette entrée a été publiée dans Non classé, Sysadmin, Système. Vous pouvez la mettre en favoris avec ce permalien.

3 réponses à Hyperviseur Xen sur debian Squeeze amd64

  1. nicx dit :

    merci pour ton post, c’est sympas d’avoir partagé tes installes de Xen.
    ca m’a permis de jetter un coup d’oeil rapide à l’installation de Xen.

    merci

  2. Gourrague dit :

    Bonjour,
    Je viens de mettre un serveur Xen4.0 en œuvre sur la base d’un squeeze amd64.
    L’hyperviseur fonctionne.
    Je voudrais respecter les bonnes pratiques édictées par XenSource, à savoir l’usage de la mémoire.
    En effet, j’aimerai descendre la mémoire allouée pour le dom0 à 1G à la place des 24 Go actuels.
    Le problème: il n’y a plus de menu.lst sous la nouvelle mouture de grub pour y ajouter dom0_mem=1024M.
    Auriez vous une idée?
    Le serveur est un serveur hébergé chez Ovh.
    Merci pour vos réponses.
    Cordialement.
    Gourrague

    • Arnaud LE NORCY dit :

      Salut,
      tu as la commande « xm mem-set »
      tu peux essayer :
      # xm mem-set 0 1000

      a+
      arnaud