Ayant lu avec interet le site de Ryo-Ohki sur la virtualisation (notamment VMWare Server), je voulais a mon tour donner un petit tuto que j'ai pondu sur Xen.
Xen vous le savez a atteint un bon degre de maturite et gagne la confiance de bon nombre de distributions Unix et Linux professionnelles (pour en citer deux-trois : RHEL, Suse, Solaris).
Mais la mise en oeuvre de Xen n'en reste pas moins compliquee, et de longues heures de recherche sur le web sont souvent necessaires pour se debugger (pas glop, mais on apprend des chose) ; encore faut-il en avoir la patience...
Parce que oui, au juste, c'est bien beau de virtualiser, mais pourquoi faire ? Je vais schematiser en repondant qu'on virtualise pour isoler ; et isoler, ca veut dire securiser. Pour ceux qui veulent creuser le sujet : topic wikipedia sur la virtualisation informatique.
Mais revenons a Xen. Comment ca marche ?...
- D'un cote le domaine hote (Dom0) qui est la machine physique preparee avec un kernel permettant de faire fonctionner Xen.
- De l'autre le domaine invite (DomU) qui est la machine virtuelle.
L'installation de Xen se fait donc en deux temps, detaillons un peu la premiere etape :
Installation du Dom0
De nombreux tuto existent pour expliquer cela, cependant je les trouvent souvent incomplets, c'est pourquoi je ne me contente pas ici de donner quelques liens.
Je prendrai comme exemple une installation sous CentOS 4.4 qui est l'equivalent de la RHEL ES 4.4
Tout d'abord, il faut recuperer les sources (RPMS) de Xen a cette adresse : Xen 3.0.2
Remarque : ce sont les seules sources que j'ai reussi a faire fonctionner :
* le kernel-xen-2.6.16.29-3.0.3.0.i386.rpm qu'on peut downloader ici panic au boot
* xen-3.0.0-2.1_rhel4.1.i386.rpm du repository kbs-xen.repo ne parvient pas à se lancer sur un CentOS 4.4...
# rpm -ivh xen-3.0.2.2-86.1_rhel4.1.i386.rpm xen-kernel-2.6.16-xen3_86.1_rhel4.1.i686.rpm
Préparation... ########################################### [100%]
1:xen-kernel ########################################### [ 50%]
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_get_baud_rate
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_resume_port
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_register_driver
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_suspend_port
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_remove_one_port
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_update_timeout
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_unregister_driver
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_get_divisor
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_match_port
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_add_one_port
WARNING: /lib/modules/2.6.16-xen3_86.1_rhel4.1/kernel/drivers/serial/8250.ko needs unknown symbol uart_write_wakeup
2:xen ########################################### [100%]
Dependances et conflits...
Il est possible qu'il y ait des dépendances (python-twisted par exemple). Il est aussi probable que le package lksctp-tools entre en conflit avec l'installation de Xen, il faut alors le desinstaller :
# rpm -e lksctp-tools
Il faudra ensuite modifier manuellement /boot/grub/grub.conf comme suit :
title CentOS Xen (2.6.16-xen3_86.1_rhel4.1)
root (hd0,0)
kernel /xen-3.0.2-2.gz
module /vmlinuz-2.6.16-xen3_86.1_rhel4.1 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.16-xen3_86.1_rhel4.1.img
Derniere petite touche, renommer le repertoire /lib/tls en /lib/tls.disabled :
# mv /lib/tls /lib/tls.disabled
Installation du DomU
J'installe ici une Fedora Core 4 que j'upgraderai ensuite en Fedora Core 6
Le Fedora Xen Quick Start est un tres bon guide, cependant je n'y ai pas trouve toutes les reponses a mes problemes. Je reprends donc ici, etape par etape.
Creation du fichier systeme
* A mon avis, on peut commencer avec 5Go
# dd if=/dev/zero of=fedora_6.img bs=1M count=1 seek=5120
* Il faut ensuite formater ce fichier :
# /sbin/mkfs.ext3 -F -j fedora_6.img
* Pour terminer, il reste a monter le fichier creer dans /mnt :
# mount -o loop /path/to/file/fedora_6.img /mnt
Note : il est vrai que RedHat est plus tolerant que d'autres systemes Unix, aussi il n'est pas necessaire de donner le path absolu vers le fichier, mais c'est une bonne habitude. Si l'on se trouve dans le path, alors `pwd`/fedora_6.img peut nous faciliter la vie.
Mettre en place le nouvel environnement
* Il faut tout d'abord copier l'ensemble du repertoire /dev/ :
# for i in console null zero ; do /sbin/MAKEDEV -d /mnt/dev -x $i ; done
* On peut ensuite creer la nouvelle fstab
# mkdir /mnt/etc/
# vi /mnt/etc/fstab
/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
* Monter /proc/ dans le fichier image
# mkdir /mnt/proc
# mount -t proc none /mnt/proc
* Enfin, on peut installer le systeme de base dans le fichier
Note : pour ce faire, on utilise en general ce fichier yum.conf. En voici le contenu qu'on peut recopier localement en le nommant simplement yum.conf :
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
exclude=*-debuginfo
gpgcheck=0
obsoletes=1
reposdir=/dev/null
[base]
name=Fedora Core 4 - $basearch - Base
mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-4
enabled=1
[updates-released]
name=Fedora Core 4 - $basearch - Released Updates
mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc4
enabled=1
Ce fichier yum.conf est prevu pour l'installation de Fedora Core 4 ; je conseille de ne rien y changer, car les distributions suivantes de Fedora n'ont pas de groupe Base. Le plus simple est d'installer Fedora 4 et de l'upgrader vers la version que le souhaite (ici la 6).
On peut maintenant passer a l'installation proprement dite :
yum -c yum.conf --installroot=/mnt -y groupinstall Base
Configurer l'environnement fraichement cree
Car ce n'est pas tout de m'avoir installe, quelques fichiers manquent encore a l'appel :
* Le fichier /etc/sysconfig/network-scripts/ifcfg-eth0 est un des grands absents, pourtant c'est dans celui-ci qu'on va entrer tous les parametres reseau :
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.0.255
HWADDR=00:E0:1A
9:6C:27
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=192.168.0.254
* Le fichier /etc/sysconfig/network n'est pas plus present, c'est pourtant la qu'on specifier le hostname de la machine :
NETWORKING=yes
HOSTNAME=mydomu
* Enfin, celui qu'on ne presente plus /etc/hosts :
#
# Internet host table
#
#------------------------------------------------------
# localhost
#------------------------------------------------------
127.0.0.1 localhost.localdomain localhost
192.168.0.2 mydomu.mydomaine mydomu
Note : Il est aussi possible des maintenant de copier le fichier resolve.conf depuis le Dom0 sur le DomU.
* On peut desormais demonter notre future machine virtuelle...
# umount /mnt/proc
# umount /mnt
* ...Et lui allouer de l'espace memoire :
# xm mem-max 0 384
# xm mem-set 0 384
Le fichier de configuration de la machine virtuelle
C'est ici qu'on defini les parametres de la machine :
Note : on utilise ici le meme kernel pour le Dom0 et le DomU.
# vi fedora-6-vm
kernel ="/boot/vmlinuz-2.6.16-xen3_86.1_rhel4.1"
memory = 256
name = "Fedora_6"
nics = 1
disk = ['file
root/fedora_6.img,sda1,w']
root = "/dev/sda1"
extra = "ro selinux=0 3"
C'est pret !
Il ne reste plus qu' booter la machine virtuelle :
xm create -f /path/to/file/fedora-6-vm -c
Il est probable qu'il y ait des messages d'erreur dans la sequence de boot (/lib/modules/2.6.16-xen3_86.1_rhel4.1/modules.dep not found par exemple) ; c'est qu'il manque le package module-init-tools dans le DomU. Pas de panique, la mise a niveau vers Fedora Core 6 corrigera le probleme. Sinon, on peut toujours installer le package :
# yum install -y module-init-tools
Enfin, pour ceux qui ne se rappellent plus comment passer d'une version de Fedora a la suivante :
# wget http://download.fedora.redhat.com/ [...] noarch.rpm \
http://download.fedora.redhat.com/ [...] noarch.rpm
# yum update yum
# yum upgrade
Liens utiles :
Le manuel utilisateur
Red Hat quick start
Liste de ressources Xen