Installation pas à pas de Xen sous Debian
Date: 29/06/2009 | Catégories: Open-source,Planet-libre,Systeme | Tags: debian,linux,tutoriel,xen
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 = lenny # 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 --dist=lenny --arch=i386 --role=udev
General Information
--------------------
Hostname : servvirt1.mondomaine.com
Distribution : lenny
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:
- http://www.cl.cam.ac.uk/
- http://www.howtoforge.com/
- http://www.eecs.iu-bremen.de/
- http://www.d7031.de/
- http://www.unixgarden.com/