Installation de Xen Hyperviseur sous Debian Squeeze chez OVH - Partie 1/2

Ayant eu le besoin d’installer une infrastructure de virtualisation permettant de déployer un nombre important de VPS sur demande très rapidement, j’ai fait des recherches sur les principaux systeme de virtualisation proposé par Ovh.

Je vais d’abord comparer les différents systèmes de virtualisation mis à disposition, voir pourquoi j’ai retenu Xen.

Je vais expliquer brièvement le fonctionnement de Xen, puis nous passerons à l’installation de l’hyperviseur.

Nous finirions pas la configuration du réseau avec l’installation des machines virtuelles.

Comparaison des systèmes de virtualisation

Ovh propose par défaut Virtuozzo, Proxmox, Citrix XenServer, Hyper-V, VMWare Server, VMWare ESXi.

Ayant déjà eu une expérience avec Plesk, et n’ayant pas apprécié le fonctionnement, j’ai éliminé Virtuozzo.

J’ai aussi éliminé Hyper-V, car j’utilise uniquement des systèmes GNU/Linux.

Utilisant proxmox/OpenVZ depuis plusieurs mois, j’en étais très satisfait, mais le kernel étant partageé, je préfère pour cette nouvelle installation du “full virtualized” plutôt qu’une simple isolation.

Je me suis longuement renseigné sur les différentes versions de VMWare et je n’ai pas trouvé d’informations suffisamment complètes sur la CLI ou la possibilité d’interfacer le système avec un autre langage.

Je me suis donc tourné vers Xen, qui possède de nombreuses références sur le net.

J’ai été déstabilisé car ça ne correspondait pas au tuto trouvés sur internet, en effet cette distribution est un package contenant plusieurs outils dont Xen Hypervisor.

Apres quelques heures, j’ai décidé de passer à une debian squeeze où j’installerai Xen Hypervisor moi même.

Fonctionnement de Xen

Xen permet d’exécuter plusieurs systèmes d’exploitation (et leurs applications) de manière isolée sur une même machine physique sur plate-forme x86, x86-64, IA-64 et PowerPC (bientôt sur SPARC). Les systèmes d’exploitation invités partagent ainsi les ressources de la machine hôte.

Xen est un « paravirtualiseur » ou un « hyperviseur » de machines virtuelles. Les systèmes d’exploitation invités ont « conscience » du Xen sous-jacent, ils ont besoin d’être « portés » (adaptés) pour fonctionner sur Xen. Linux, NetBSD, FreeBSD (portage en cours), Plan 9 et GNU Hurd peuvent d’ores-et-déjà fonctionner sur Xen.

L’hyperviseur ou machine hôte s’appelle le Dom0 et les différentes machines virtuelles s’appellent les DomU.

Installation de Xen

On commence par installer les divers paquets et le noyau de Xen.

1
apt-get install xen-hypervisor-4.0-amd64 xen-tools xen-utils-4.0 linux-headers-2.6.32-5-xen-amd64 linux-image-2.6.32-5-xen-amd64 xenwatch

Afin de pouvoir fonctionner Xen utilise son propre kernel, il va donc falloir remplacer le kernel par défaut fournit par Ovh et modifier le bootloader.

Installation de GRUB

Les serveurs Ovh sont fournis avec lilo d’origine, tous les tutoriaux que j’ai trouvé recommande l’installation de grub pour choisir le kernel.

1
2
3
apt-get install grub mdadm initramfs-tools
fdisk -l
grub-install --recheck /dev/sda

A adapter en fonction de votre partition de boot.

On met a jour les fichiers de configuration de grub.

1
update-grub

Le fichier est génèré à partir des fichiers suivant :

1
2
ls /etc/grub.d
06_OVHkernel 10_linux 20_linux_xen

Si l’on observe les choix proposés au boot, on s’apercoit que le kernel Ovh est toujours en première position :

1
2
3
4
5
6
grep menuentry /boot/grub/grub.cfg
menuentry "Debian GNU/Linux, OVH kernel 2.6.38.2-xxxx-grs-ipv6-64" {
menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-xen-amd64' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-xen-amd64 (mode de dépannage)' --class debian --class gnu-linux --class gnu --class os {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64' --class debian --class gnu-linux --class gnu --class os --class xen {
menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-amd64 and XEN 4.0-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os --class xen {

Nous voulons démarrer le kernel xen, on modifie donc la configuration en conséquence.

/etc/default/grub
1
GRUB_DEFAULT=3

On ajoute aussi la ligne suivante, afin de ne pas afficher les VM d’apparaitre dans le boot menu :

/etc/default/grub
1
GRUB_DISABLE_OS_PROBER=true

Et on regénère la config.

1
update-grub

Si vous redémarrez maintenant, vous n’aurez pus accès à votre machine, car Ovh intègre les drivers nécessaires au fonctionnement des cartes réseaux en tant que modules statiques du kernel.

Pour connaître les modules nécessaires, tapez la commande suivante :

1
lspci -n

Et copiez le contenu sur le site : http://kmuto.jp/debian/hcl/.

Il nous indique qu’il faut charger le module e1000e.

Nous allons modifier les fichiers de configuration dans un premier temps, puis nous compilerons le module ensuite.

/etc/modules
1
2
loop max_loop=64
e1000e

La modification de la première ligne permet d’avoir plus d’interfaces réseaux virtuelles et donc de machines virtuelles.

Installation du module e1000e

On récupère les sources :

1
2
3
cd/usr/local/src
wget http://freefr.dl.sourceforge.net/project/e1000/e1000e%20stable/1.4.4/e1000e-1.4.4.tar.gz
tar xzvf e1000e-1.4.4.tar.gz

Afin de compiler le module sur le bon noyau, il faut boot sur ce noyau, or si on reboot maintenant, on aura plus d’accès réseau.

Il faudra aussi installer les paquets suivants avant de poursuivre :

1
apt-get install build-essential linux-headers-2.6-xen-amd64

Il faut donc passer par le vKVM.
On va créer un script qu’il restera juste à exécuter :

compile.sh
1
2
3
#!/bin/bash
cd/usr/local/src/e1000e-1.4.4/src
BUILD_KERNEL=2.6.32-5-xen-amd64 make install && reboot
1
chmod a+x compile.sh

Modifiez le netboot depuis votre manager, pour passer en vKVM, puis rebooter votre machine.
Une fois connecté, lancer la compilation :

1
./compile.sh

Si la compilation ne marche pas, il faut éditer le script de la façon suivante :

compile.sh
1
2
3
#!/bin/bash
cd/usr/local/src/e1000e-1.4.4/src
BUILD_KERNEL=2.6.32-5-xen-amd64 make CFLAGS_EXTRA=-DDISABLE_PM install && reboot

Modifiez le netboot sur le hard disk et redémarrer le vKVM, vous devriez démarrer démarrer sur votre machine et pouvoir vous connecter en ssh.

Controlez le fonctionnement avec :

1
xm info

C’est fini pour aujourd’hui, dans la prochaine partie, nous verrons comment configurer le réseau et ajouter des machines virtuelles.