Introduction
Xen est un système de virtualisation OpenSource. Les premières versions ne pouvaient accueillir que des OS libres dans la mesure où il était nécessaire d’en modifier le noyau.
Les versions récentes des micro-processeurs AMD et Intel permettent la prise en charge d’une partie des instructions de virtualisation directement par le micro-processeur.
De ce fait, il est maintenant possible de faire tourner des OS comme Windows sur un hôte Xen installé sous Linux.
Terminologie
- Domaine xen
- Une instance de Xen. Elle peut être privilégiée (Dom0) ou non privilégiée (DomU)
- Dom0
- C’est l’instance Xen privilégiée. elle représente le système hôte dans lequel les instances DomU vont tourner. Seul le Dom0 a un accès plein et entier au matériel.
- DomU
- C’est l’instance non privilégiée de Xen ou machine virtuelle. « DomU » est parfois traduit comme Domaine Utilisateur pour indiquer qu’il ne dispose d’aucun privilège d’accès au matériel.
- DRBD
- Distributed Redundant Block Device. Système de réplication de périphériques en mode block (disques durs) par le réseau. Cette technologie est très souvent utilisée dans les architectures « HA » (Haute Disponibilité)
- LVM
- Logical Volume manager. Couche d’abstraction permettant une gestion à la fois plus souple et plus puissante des partitions d’un disque dur. Il est possible de modifier la taille d’une partition, réaliser des snapshots, …
Choix du stockage
Il existe plusieures manières d’installer les machines virtuelles:
- Fichiers image
- Le « disque » est virtualisé dans un fichier, un peu comme VMWare ou VirtualBox. Simple à mettre en place et à gérer, ce n’est cependant pas très souple d’utilisation et cela induit surtout une perte de performance.
- NFS
- Beaucoup plus souple d’utilisation, ceci n’est concevable que pour un hébergement en volume (et avec un très bon réseau). Dans le cas contraire, stocker les informations en distant ne présente pas beaucoup d’intérêt.
- LVM
- C’est naturellement une solution plus intéressante car elle allie les performances d’un disque local à la souplesse intrinsèque de LVM. Par exemple, cela permet d’ajouter de l’espace disque presque à la volée. En revanche, pas de redondance.
- LVM + DRBD
- Les avantages de LVM, la redondance en plus ! Évidemment, vous aurez besoin de 2 serveurs pour assurer la réplication des datas.
Disposant de 2 PC, j’ai choisi d’utiliser DRBD associé à LVM. Configuré en primary/primary, DRBD donne l’avantage de pouvoir migrer les machines virtuelles « à chaud ». Utile lorsqu’on doit mettre le node à jour.
Autre avantage, cela vous permet de répartir les machines virtuelles entre les 2 nodes, chacuns des nodes assurant le backup de l’autre. Pas de problème de synchronisation de data, DRBD s’en charge pour vous.
Le fonctionnement de notre système sera le suivant:
- Chaque machine virtuelle sera installée sur un volume LVM du Dom0. L’installation du DomU en lui-même peut-être faite en LVM (ou pas). Cela n’a pas d’importance: la ressource DRBD est vue comme un disque par le DomU.
- Chaque volume logique LVM sera associé à une ressource DRBD et répliqué. Il y aura donc autant de ressources DRBD que de machines virtuelles.
- Les machines virtuelles seront réparties sur les 2 nodes. Attention: gardez bien à l’esprit que vous devez garder de la place (mémoire et CPU notamment) sur chaque node pour accueillir, même provisoirement, les DomU du vis-à-vis.
Configuration de LVM
Il s’agit tout d’abord de partitionner votre disque et de créer les PV. Par exemple, pour un Dom0 Xen, je crée 2 PV:
- un PV appelé
System
d’une cinquantaine de GigaOctet. Ce volume accueillera le système, en « LVM over RAID ». - un PV appelé
XenHosting
qui occupe le reste du disque. Il accueillera les DomU
Configuration de DRBD
Pour les raisons de clarté, la configuration de DRBD est déplacée: DRBD: Distributed Replicated Block Device
Installation de Xen
La version de Xen dans GNU/Debian Lenny est la 3.2. L’installation de l’hyperviseur Xen est facile:
Une fois le noyau installé, redémarrez votre serveur sur le nouveau noyau. Une fois connecté, vérifiez que Xen est bien démarré:
Configuration du réseau
Par défaut, pas de réseau ! Au moins, on est peinard…
Là encore, plusieures solutions, pas de jaloux:
- Réseau bridgé
- Solution la plus simple, chaque machine virtuelle est vue comme unique sur le réseau car ayant sa propre adresse IP.
- Réseau routé
- Solution un peu plus évoluée, le Dom0 se transforme en routeur. Chaque machine virtuelle possède toujorus sa propre adresse IP.
- Réseau NATé avec VLAN
- Le Dom0 est le seul à être vu du réseau. C’est une peu comme chez soi avec un modem ADSL: on peut avoir plusieurs machine qui accèdent à Internet, mais elles y accéderont avec la même adresse IP.
Nous n’utiliserons que le réseau bridgé, plus simple. Mais encore faut-il l’activer:
Puis:
et enfin:
Si peth0 apparaît, c’est gagné. Le reste tient du réseau bridgé classique, je ne m’étendrai pas dessus.
Configuration de la machine virtuelle
Dans ce document, nous n’installerons que des machines virtuelles en mode HVM.
Ceci permet d’avoir de « vraies » machines indépendantes, mais également de pouvoir installer une machine sous un autre système d’exploitation que celui du Dom0 (Windows par exemple).
Chaque machine virtuelle doit avoir son propre fichier de configuration.
Une fois la configuration achevée, vous pouvez démarrer la machine virtuelle et l’installer comme vous feriez sur un PC classique.
Contrôler une machine virtuelle
Le contrôle d’une machine virtuelle est relativement sommaire. Il consiste en quelques opérations de base:
- Création / Démarrage
- Arrêt « normal » / Destruction (arrêt « électrique »)
- Migration vers un autre node
Création
Arrêt
- Redémarrage
-
xm restart xps-101
- Arrêt Soft
-
xm shutdown xps-101
- Arrêt Hard
-
xm destroy xps-101
Migration
La migration est un peu plus complexe. En effet, comme on utilise DRBD, on aura besoin, par exemple, du nom du noeud en vis-à-vis.
Xen doit également être configuré pour pouvoir communiquer avec son vis-à-vis. Il faut adapter le fichier/etc/xen/xend-config-xenapi.sxp
Un redémarrage de xend est nécessaire pour que le changement soit pris en compte.
Ceci fait, il devient possible de migrer la machine virtuelle à l’aide de la commande:
Où 192.168.0.2 est l’IP du node en vis-à-vis.
Maintenance
On peut, pour autant que Xen et la machine virtuelle soient correctement configurés, accéder à la console d’une machine virtuelle à partir du node (utile pour dépanner lorsqu’on a merdé le firewall 😉 ).
Pour quitter, utiliser CTRL+ALTGr+]
Source et références
Sites officiels
- Xen
-
- //www.xen.org/
- DRBD
-
- //www.drbd.org/
- GNU/Debian Linux
-
- //www.debian.org/
Documentation et Howto
- Xen
-
- //www.howtoforge.com/debian_etch_xen_3.1
- //www.labo-linux.org/articles-fr/premiere-approche-de-xen/installation-de-xen
- //www.xen-tools.org/software/xen-tools/examples.html
- //wiki.debian.org/Xen
- https://asi.insa-rouen.fr/asipedia/index.php/Xen
- https://help.ubuntu.com/community/Xen
- //www.howtoforge.com/debian_etch_xen_from_debian_repository
- //howto.landure.fr/gnu-linux/debian-4-0-etch/installer-et-configurer-xen-sur-debian-4-0-etch
- //www.hostinggeek.com/
- //www.projet-plume.org/fiche/xen
- //virtualization4xceptn.wordpress.com/2008/09/15/xen-how-to-define-the-boot-order-for-hvm-in-vmcfg/
- //etbe.coker.com.au/2007/07/27/a-support-guide-to-xen/
- LVM
-
- //www.morot.fr/spip.php?article35
- //linux.developpez.com/lvm/#L4.2
- //clx.anet.fr/spip/article.php3?id_article=237
- DRBD
-
- //www.drbd.org/users-guide/
Trucs et astuces
- Noyau Dom0 Lenny
-
- //lists.debian.org/debian-devel/2008/07/msg00312.html
- //kernel-archive.buildserver.net/debian-kernel/waldi/xen-extra/pool/main/l/linux-2.6/
- UDEV dans DomU
-
- //codewut.de/xen-on-32bit-os-with-8gb-ram
- //lists.xensource.com/archives/html/xen-users/2006-09/msg00284.html
- Support du HVM
-
- //wiki.xensource.com/xenwiki/HVM_Compatible_Processors
Divers et dépannage
- Accès aux partitions LVM d’une machine virtuelle
-
- //blogs.simc.be/simc/index.php/post/2009/01/22/Kpartx-pour-aller-un-peut-plus-loin-avec-LVM
- //cedric-tintanet.developpez.com/tutoriels/linux/sauvegarde-virt/
- DomU brutal test
-
- //www.cyberciti.biz/faq/understanding-bash-fork-bomb/
- Création miroirs
-
- //smhteam.info/wiki/index.linux.php5?wiki=CreerUnMirroirDebianLocal
- //www.debian.org/mirror/ftpmirror.fr.html
- //www.debian.org/mirror/list-full#FR
- //howto.landure.fr/gnu-linux/ubuntu-edgy-eft/developpement-et-serveurs/creation-dun-mirroir-ubuntu-local-a-laide-de-apt-mirror
- //doc.ubuntu-fr.org/tutoriel/creer_un_miroir_de_depot_local
- Keymap setting for VNC
-
- //linux.derkeiler.com/Mailing-Lists/Debian/2007-11/msg01128.html