Ce qui est présenté ici est un ensemble de notes sur la mise en place de la virtualisation avec XEN sous Centos 5.7 et non un tutorial validé.
Depuis la version 5.4 de Centos, il est possible en plus de XEN de virtualiser avec KVM. Il importe toutefois d'activer le jeux VT du processeur si celui-ci le permet. Ce réglage se fait en général dans le bios. La commande suivante doit retourner des lignes si la VT est supportée par le processeur.
egrep '(svm|vmx)' /proc/cpuinfo
Faire une installation basique de Centos dans un premier temps.Exemple ici
Procéder à la mise à jour des package et installer le groupe Virtualisation
yum -y update yum -y install kernel-xen xen
Ceci va mettre en place un nouveau noyau Linux dit xénifié. Il faut modifier la séquence de boot pour utiliser ce noyau en editant le fichier /boot/grub/menu.lst et en mettant le niveau 0 sur l'option default.
... default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-274.12.1.el5xen) root (hd0,0) kernel /xen.gz-2.6.18-274.12.1.el5 dom0_mem=256M module /vmlinuz-2.6.18-274.12.1.el5xen ro root=LABEL=/ module /initrd-2.6.18-274.12.1.el5xen.img ...
La ligne dom0_mem=256M permet de donner au minimum 256Mo de RAM au Dom0.
Relancer la machine et verifier l'utilisation du noyau Xen
uname -r => 2.6.18-274.12.1.el5xen
Pour installer une VM paravirtualisée, les sources d'installation, l'image ISO de la distribution, doit être accèssible par le réseau ( http, nfs…) . l'exemple ici présente l'installation avec un serveur web local sur l'IP 192.168.1.100.
Installer le serveur web
yum install httpd service httpd start chkconfig httpd on
Créer une image iso depuis le DVD d'installation
dd if=/dev/cdrom of=/home/centos57.iso
Sur ce serveur, monter l'image iso de la distribution
mkdir -p /u01 mount -o loop -t iso9660 /home/centos57.iso /u01 ln -s /u01 /var/www/html/centos
Important, désactiver selinux en edittant le fichier /etc/selinux/config et en passant la ligne SELINUX à disabled, puis activer la configuration
setenforce 0
En pointant un navigateur sur http://192.168.1.100/centos, la liste des fichiers de la distribution doit s'afficher.
La méthode n'utilise aucun outils graphiques ou scripts virt-install.
Création d'un file-system pour héberger les VM
mkfs -t ext3 /dev/sda11 mkdir /u01 mount -t ext3 /dev/sda11 /u01
Création de l'image VM
dd if=/dev/zero of=/u01/adi101.img oflag=direct bs=1M count=8192
Installer wget
yum install wget
Charger les images d'installation noyau sous /boot
cd /boot wget http://192.168.1.100/centos/images/xen/initrd.img wget http://192.168.1.100/centos/images/xen/vmlinuz
Editer le fichier de configuration de la VM sous /etc/xen, exemple : /etc/xen/adi101.cfg
kernel = "/boot/vmlinuz" ramdisk = "/boot/initrd.img" extra = "text ks=http://192.168.1.100/standard-ks.cfg" name = "adi101" memory = "512" disk = [ 'tap:aio:/u01/adi101.img,xvda,w', ] vif = [ 'bridge=virbr0', ] vcpus=1 on_reboot = 'destroy' on_crash = 'destroy'
Créer le fichier /var/www/html/standard-ks.cfg
install url --url http://192.168.1.100/centos lang fr_FR.UTF-8 keyboard fr-latin9 rootpw azerty firewall --enabled --port=22:tcp authconfig --enableshadow --enablemd5 selinux --enforcing timezone --utc Europe/Paris bootloader --location=mbr --driveorder=xvda reboot clearpart --all --initlabel --drives=xvda part /boot --fstype ext2 --size=100 --asprimary part / --fstype ext3 --size=500 --asprimary part swap --size=1024 --asprimary part /usr --fstype ext3 --size=2000 part /var --fstype ext3 --size=1000 part /tmp --fstype ext3 --size=500 part /home --fstype ext3 --size=1 --grow %packages --excludedocs --nobase @core
La ligne : part /home –fstype ext3 –size=1 –grow, indique de prendre pour /home la capacité restante totale du disque. Lancer la création de la VM
xm create /etc/xen/adi101.cfg -c
Une fois la VM installée, modifier /etc/xen/adi101.cfg ainsi :
name = "adi101" memory = "512" disk = [ 'tap:aio:/u01/adi101.img,xvda,w', ] vif = [ 'bridge=virbr0', ] vcpus=1 bootloader="/usr/bin/pygrub" on_reboot = 'restart' on_crash = 'restart'
Relancer la VM
xm create /etc/xen/adi101.cfg -c
Les éléments comme les sources d'installation ou le fichier kickstart sont identiques. L'intérêt de virt-install est que la création d'une VM tient en une ligne.
virt-install --name adi101 -p -r 512 --disk path=/u01/adi101.img,size=8 --location http://192.168.1.100/centos -x "ks=http://192.168.1.100/standard-ks.cfg"
Pour créer plusieurs VM, modifier le fichier standard-ks.cfg ( la ligne network en adaptant les valeurs ) et relancer la commande virt-install .
Exemple de création de adi102.concarnux.fr
Fichier standard-ks.cfg
... network --device eth0 --bootproto static --ip 192.168.1.102 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1 --hostname adi102.concarnux.fr ...
Commande virt-install
virt-install --name adi102 -p -r 512 --disk path=/u01/adi102.img,size=8 --location http://192.168.1.100/centos -x "ks=http://192.168.1.100/standard-ks.cfg"
Il suffit de déplacer les fichier de configuration des VM de /etc/xen, vers /etc/xen/auto.
La commande virt-clone permet cette action, attention toutefois il faudra modifier manuellement certains fichiers :
La VM devant être clonée ne doit pas être en fonction, il est possible de la mettre en pause
xm pause adi101 virt-clone -o adi101 -n adi103 -f /u01/adi103.img xm unpause adi101