La plupart des commandes suivantes ne peux se faire qu'en mode administrateur, n'oubliez pas le sudo.
Commençons par installer Xen sur le système d'exploitation hôte (dom0).
Installez les paquets suivants (les dépendances suivront) :
$ aptitude install xen-linux-system-2.6.18-6-xen-686 xen-tools
Installez Bridge-utils si vous compter faire du Bridge (pas du NAT) :
$ aptitude install bridge-utils
Pour être sur le noyau Xen, il est nécessaire de redémarrer. Je vous laisse donc faire un petit :
$ reboot
Avant de continuer, vérifiez que vous avez bien démarré sur le bon noyau :
$ uname -r 2.6.18-6-xen-686
Si vous avez quelquec chose du genre (contenant « xen ») c'est que c'est bon : vous pouvez passer à la config.
Nous allons créer l'endroit où les domU (systèmes invités) seront stockés :
$ mkdir -p /home/xen/domains
C'est dans le fichier /etc/xen-tools/xen-tools.conf que ça va se faire.
Après l'installation, il contient la configuration par défaut, vous pouvez donc le modifier, spécifier d'autres paramètres afin d'obtenir le système de vos rêves.
Voici les directives importantes, modifiez les, car par défaut, soit c'est faux, soit c'est commenté :
# Le répertoire où sont stockées les images virtuelles. dir = /home/xen # Installation via la méthode du deboostrap. debootstrap = 1 # Les caractéristiques de création par défaut de vos domU. size = 4Gb # Taille du disque virtuel memory = 128Mb # Taille de la mémoire allouée swap = 128Mb # Taille de la partition d'échange. fs = ext3 # use the EXT3 filesystem for the disk image. dist = etch # Distribution à installer par défaut. image = sparse # Specify sparse vs. full disk images / Je sais pas ce que c'est. # 1 pour activer le dhcp (configuration ip automatique) pour vos domU soit activé, 0 sinon. dhcp = 1 # Sinon, vous pouvez mettre des IP fixes (gare au conflit !). # gateway = 192.168.1.1 # netmask = 255.255.255.0 # Si vous souhaitez copier les comptes utilisateurs de dom0 vers les domU. # accounts = 1 # À la fin de l'installation, Xen vous demandera automatiquement le password root de votre domU. passwd = 1 # À MODIFIER : attention, par défaut, xen-tool possède une vieille version du noyau. kernel = /boot/vmlinuz-2.6.18-6-xen-686 initrd = /boot/initrd.img-2.6.18-6-xen-686 # Autant prendre le miroir le plus proche, mettez celui que vous voulez ! mirror = http://ftp.fr.debian.org/debian/
Ici on s'intéresse au fichier /etc/xen/xend-config.sxp.
C'est là que se trouve la configuration du « moteur » de Xen, c'est ici que l'on va choisir entre le bridge ou le NAT !
Cela dépend de l'infrastructure voulue. J'avoue préférer le NAT, mais ne vous inquiétez pas, nous allons voir comment configurer les deux.
Décommentez la ligne :
(network-script network-bridge)
Pour ma part, j'ai fait un bridge avec une interface réseau inutilisée, voici mon fichier /etc/network/interfaces :
# XEN NETWORK
auto eth1
iface eth1 inet manual
# XEN BRIDGE
auto xenbr0
iface xenbr0 inet static
address 192.168.100.254
netmask 255.255.255.0
bridge_ports eth1
bridge_maxwait 0
Et comme bien sûr, j'ai horreur de mettre des ip fixe, j'ai fait un serveur dhcp UNIQUEMENT en écoute sur le bridge. Pour ce faire, dans /etc/init.d/dhcp3-server, ajoutez ceci (plutôt en début de fichier) :
INTERFACES="xenbr0"
Ensuite, dans votre fichier de configuration de /etc/dhcp3/dhcpd.conf, voici un exemple/extrait de config :
subnet 192.168.100.0 netmask 255.255.255.0 { # remarque : le range est inversé c'est normal, en fait ça va le faire ;) range 192.168.100.100 192.168.100.1; } host monpremierDomU { hardware ethernet 00:xx:xx:xx:xx:xx; fixed-address 192.168.100.x; }
A vous de choisir l'ip fixe que vous voulez, ce qui pratique pour rendre accessible des services de l'extérieur, via des règles NAT (quand vous n'avez qu'une ip publique comme moi). Pour trouver l'adresse MAC de votre VM, pas de panique, elle est dans le fichier de configuration dans /etc/xen/monpremierDomU.cfg :)
Là c'est moins simple… Il existe la méthode "Xen s'occupe de tout" et celle "Xen s'occupe moins de tout". Comme je préfère la souplesse d'outils éprouvés, je préfère utiliser la deuxième méthode : on va utiliser dhcp3-server pour attribuer les ip aux domU's. Mais tout d'abord, à ajouter :
(network-script network-nat) (vif-script 'vif-nat dhcp=yes')
Et bien sûr, commentez :
#(network-script network-bridge) #(vif-script vif-bridge)
Ensuite, au niveau du serveur dhcp, donc dans /etc/dhcp3/dhcpd.conf, ajoutez à la fin du fichier :
subnet 10.0.0.0 netmask 255.255.0.0 { }
Relancez, puis idem pour Xen, et hop, il ajoutera tout seul les domU's dans ce fichier. Exemple concret, une fois Xen relancé et qu'un domU a été crée :
subnet 10.0.0.0 netmask 255.255.0.0 { } { hardware ethernet 00:16:3e:43:3a:51; fixed-address 10.0.11.1; option routers 10.0.11.128; option host-name "monpremierDomU"; }
D'abord on relance Xen :
$ invoke-rc.d xend restart
Puis on va créer notre première machine virtuelle :
$ xen-create-image -hostname=monpremierdomU -passwd
C'est simple : voilà que vous allez créer un domU nommé « monpremierdomU », et à la fin de l'installation, xen-tool va vous demander le mot de passe root. Pour plus de détails sur la commande xen-create-image, n'hésitez pas à faire un petit :
$ man xen-create-image
Ensuite, on lance la machine, en se basant sur son fichier de conf :
$ xm create monpremierdomU.cfg
Ce fichier de configuration se trouve dans /etc/xen/.
C'est parti, on lance !
xm console monpremierdomU
Pour détacher, attention, ça s'invente pas en azerty : Crtl + AltGr + °
Maintenant que notre Xen fonctionne et que nous savons créer un domU, nous allons voir comment modifier quelques options.
Chaque domU possède son fichier de configuration, donc notre domU par exemple, possède sa conf dans : /etc/xen/monpremierdomU.cfg.
Examinons un peu :
kernel = '/boot/vmlinuz-2.6.18-6-xen-686' ramdisk = '/boot/initrd.img-2.6.18-6-xen-686' memory = '128' root = '/dev/sda1 ro' disk = [ 'file:/home/xen/domains/www/disk.img,sda1,w', 'file:/home/xen/domains/www/swap.img,sda2,w' ] name = 'www' dhcp = 'dhcp' vif = [ '' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart'
Vous pouvez allouer plus ou moins de RAM facilement. Des détails là dessus seront ajoutés plus tard.