===== 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