Installation pas à pas de Xen sous Debian

Le but de ce billet est d'installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c'est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre hardware.

Installation du serveur Xen

J'ai choisi d'héberger mon serveur de virtualisation Xen (on appelle cette machine le dom0 pour "domaine 0" dans le jargon Xen) sur la machine suivante:

HP Proliant DL145
AMD Optron 64
2 Go RAM
2 disques durs de 80 Go en RAID 1 (LVM)
Système d'exploitation: GNU/Linux Debian Lenny 5


J'ai effectué une installation standard à partir du CD d'installation de la Debian 5.0 en appelant ma machine virt1 et en installant comme seul et unique service le daemon OpenSSH (pour un accès à distance).

Ensuite, il faut procéder à l'installation de Xen et de ses utilitaires:
aptitude install xen-hypervisor-i386 xen-linux-system-2.6.26-2-xen-686 xen-utils xen-tools xen-shell xenwatch xenstore-utils
On configure ensuite le réseau de la manière à transformer notre machine dom0 en bridge. Pour cela, on édite le fichier /etc/xen/xend-config.sxp et on remplace la ligne:
(network-script network-dummy)
par
(network-script network-bridge)
On reboot notre système pour prendre en compte le noyau supportant Xen:
reboot

Configuration du serveur Xen

Nous allons utiliser xen-tools pour administrer nos serveurs virtuels. Pour cela il faut éditer le fichier de configuration (/etc/xen-tools/xen-tools.conf) de la manière suivante (en gras les options à adapter selon votre configuration):
dir = /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   = etch     # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway   = 192.168.29.1
netmask   = 255.255.255.0

passwd = 1
kernel      = /boot/vmlinuz-`uname -r`
initrd      = /boot/initrd.img-`uname -r`
mirror = http://ftp.lip6.fr/pub/linux/distributions/debian/
ext3_options   = noatime,nodiratime,errors=remount-ro
ext2_options   = noatime,nodiratime,errors=remount-ro
xfs_options    = defaults
reiser_options = defaults
serial_device = hvc0
disk_device = xvda

On pense également à créer le répertoire qui contiendra les domaines hôtes (/xen dans ma configuration):
mkdir /xen

Installation d'un serveur virtuel

Nous allons commencer par ajouter un nouveau serveur virtuel (que l'on appelle domU pour "domaine Users" dans le jargon Xen) à notre configuration. Cette action se fait de manière très simple grâce à la commande suivante (attendre quelques minutes):
# xen-create-image --hostname=servvirt1.mondomaine.com --size=10Gb --swap=512Mb --ip=192.168.29.171 --memory=256Mb --arch=i386 --role=udev
General Information
--------------------
Hostname       :  servvirt1.mondomaine.com
Distribution   :  etch
Partitions     :  swap            512Mb (swap)
                  /               10Gb  (ext3)
Image type     :  sparse
Memory size    :  256Mb
Kernel path    :  /boot/vmlinuz-2.6.26-2-xen-686
Initrd path    :  /boot/initrd.img-2.6.26-2-xen-686

Networking Information
----------------------
IP Address 1   : 192.168.29.171 [MAC: 00:16:3E:8B:F0:9E]
Netmask        : 255.255.255.0
Gateway        : 192.168.29.1

Xen va alors créer un serveur virtuel disposant d'un disque de 10 Go, d'un taille de swap de 512 Mo et d'une mémoire de 256 Mb. L'adresse IP de ce nouveau serveur virtuel sera 192.168.29.171. Le mot de passe root du système vous sera demandé en fin d'installation.

Un fichier de configuration dédié a ce nouveau serveur a été généré: /etc/xen/servvirt1.mondomaine.com.cfg

Gestion du serveur virtuel

Démarrage du serveur virtuel

Pour lancer le serveur virtuel préalablement créé, il faut saisir la commande:
xm create /etc/xen/servvirt1.mondomaine.com.cfg
Vous pouvez alors vous connecte dessus en SSH:
ssh root@servvirt1.mondomaine.com
Pour automatiser le démarrage de ce serveur virtuel (domU) au lancement de votre serveur hôte (dom0), il faut créer le lien suivant:
ln -s /etc/xen/servvirt1.mondomaine.com.cfg /etc/xen/auto/host1.cfg
Cette commande permet de séquencer le lancement des serveurs domU dans un certain ordre. Cela peut être utile si le service hébérgé sur un serveur virtuel dépend d'un autre...

Autres commandes utiles à l'administration de vos serveurs virtuels

Pour arrêter un serveur virtuel:
xm shutdown servvirt1.mondomaine.com
Pour voir la liste des serveurs virtuelles lancées:
# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1765     2     r-----    106.7
servvirt1.mondomaine.com       1   256     1     -b----      2.6
Liste des serveurs virtuels créés:
# xen-list-images
Name: servvirt1.mondomaine.com
Memory: 256
IP: 192.168.29.171
Occupation des ressources en temps réel:
xentop
Pour rendre prioritaire un serveur virtuel par rapport à un autre, nous allons utiliser les options du gestionnaire d'allocation des ressources ("Credit scheduler", par défaut dans la version Xen 3.0).
Par exemple, si nous avons deux serveurs virtuels servvirt1 et servvirt2 (domU) hébérgés sur notre serveur hôte (dom0) et que nous souhaitons donner deux fois plus de temps CPU à servvirt2, il suffit de saisir la commande suivante:

xm sched-credit -d servvirt2.mondomaine.com -w 512

PS: par défaut, un serveur virtuel à un poids de 256.

La liste des poids des serveurs virtuels peut être obtenue grâce à la commande:
# xm sched-credit
Name                                ID Weight  Cap
Domain-0                             0    256    0
servvirt1.mondomaine.com                1    256    0
servvirt2.mondomaine.com                1    512    0
Les commandes xm sched-credit sont à lancer (par exemple dans un script shell) au démarrage du serveur hôte.

Conclusion

Xen et la virtualisation en général est un très bon moyen, dans cette période de crise, d'optimiser au mieux les ressources hardware disponibles. Il est bien sûr possible de créer autant de serveurs virtuels que possible sur notre serveur hôte (dans les limites de performances souhaités au niveau des domU).

Quelques sources utiles à la rédaction de ce billet:





Vus : 350
Publié par Nicolargo : 402