===== Introduction =====
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
* vmx pour processeur Intel
* svm pour processeur amd
===== Installation de la virtualisation =====
Faire une installation basique de Centos dans un premier temps.[[http://www.silverlake.fr/wiki/doku.php?id=installation_oracle_11g#centos|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
===== Mise en place des sources d'installation =====
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.
===== Création des VM =====
==== Commandes de base ====
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
==== Utilitaire virt-install ====
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"
* La VM se nomme adi101
* Elle utilise la paravirtualisation ( option -p )
* Possède 512Mo de RAM ( opion -r )
* Le disque fait 8Go
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"
==== Démarrage au boot des VM ====
Il suffit de déplacer les fichier de configuration des VM de /etc/xen, vers /etc/xen/auto.
==== Clonage de VM ====
La commande virt-clone permet cette action, attention toutefois il faudra modifier manuellement certains fichiers :
* /etc/sysconfig/network, en corrigeant HOSTNAME
* /etc/sysconfig/network-scripts/ifcfg-eth0, pour passer en IP statique
* /etc/hosts...
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
* L'option -o donne la VM d'origine
* L'option -n le nom de la VM future
* L'option -f l'emplacement du disque de la VM future