Migration Xen dans un Cluster Ganeti
Nous vous proposons aujourd’hui un guide de migration Xen dans un cluster Ganeti basé sur notre expérience. Ce guide ne traite que des instances Xen de type PV (paravirtualisé), et non des HVM.
Vous venez d’installer un joli cluster Ganeti basé sur l’hyperviseur Xen afin de bénéficier de ses nombreuses fonctionnalités. Seulement voilà, vous avez également des instances Xen antérieures qui tournent sur des hôtes indépendants , et vous aimeriez bien rapatrier tout cela simplement sur votre cluster tout neuf.
Création et configuration de l’instance pour une migration Xen dans un cluster Ganeti
La première étape est de créer une instance Ganeti, en spécifiant la même taille de disque que l’instance que vous souhaitez migrer. Pour une instance de 25GiB, cela donne :
# gnt-instance add --no-start --disk-template drbd --disk 0:size=25G --os-type debootsrap+default --no-install hostname.de.votre.instance.tld
Si vous souhaitez modifier l’instance après coup (par exemple ici pour rajouter de la mémoire vive et une interface), vous pouvez utiliser cette commande :
# gnt-instance modify --net add:link=xenbr0 -B maxmem=1024M,minmem=1024 hostname.de.votre.instance.tld
Une fois l’instance créée, quelques réglages sont nécessaires pour configurer correctement la manière dont l’instance démarre. On distingue deux cas :
- L’instance utilise un kernel présent sur l’hôte :
C’est le comportement par défaut, il faut spécifier à l’hyperviseur le chemin du noyau avec les commandes suivantes :
# gnt-instance modify --hypervisor-parameters initrd_path="/$KERNDIR/initrd.img-2.6.32-5-xen-686" hostname.de.votre.instance.tld # gnt-instance modify --hypervisor-parameters kernel_path="/$KERNDIR/vmlinuz-2.6.32-5-xen-686" hostname.de.votre.instance.tld
- L’instance utilise son propre noyau (pvgrub, pygrub)
Lors du démarrage, pvgrub ou pygrub va lire le fichier /boot/grub/menu.lst présent sur le disque de l’instance et démarrer le noyau de l’instance. Si vous utilisez pvgrub ou pygrub afin de démarrer sur un noyau présent dans le système de fichiers de l’instance, les paramètres à modifier sont les suivants (pour pygrub) :
# gnt-instance modify --hypervisor-parameters bootloader_path=/usr/lib/xen-4.1/bin/pygrub hostname.de.votre.instance.tld # gnt-instance modify --hypervisor-parameters use_bootloader=True hostname.de.votre.instance.tld
Une fois le noyau ou pygrub configuré, il faut spécifier où se situe le système de fichier racine. Deux configurations sont également possibles ici :
- Si le disque de l’instance dispose d’une table de partitions, suivie d’une partition comportant le système de fichiers racine, alors il faut spécifier à Ganeti la partition contenant ce système racine :
# gnt-instance modify --hypervisor-parameters root_path=/dev/xvda1 hostname.de.votre.instance.tld
- Si le disque de l’instance contient directement un système de fichiers, il faut faire attention à bien spécifier directement le disque sans numéro de partition :
# gnt-instance modify --hypervisor-parameters root_path=/dev/xvda hostname.de.votre.instance.tld
Copie des données pour une migration Xen dans un cluster Ganeti
Une fois notre instance configurée, nous allons pouvoir copier le disque depuis l’hôte d’origine.
Sur le cluster Ganeti, afin de rendre le volume accessible, on l’active :
# gnt-instance activate-disks hostname.de.votre.instance.tld
Sur l’ancien host, on éteint l’instance :
# xm shutdown hostname.de.votre.instance.tld
Puis, on peut utiliser netcat et pipeview pour copier les données depuis l’ancien host vers le master DRBD (attention, ce n’est pas forcément le master Ganeti) :
Sur le master DRBD, en remplaçant drbdX par le bon volume :
# nc -l -p 2000 | pv > /dev/drbdX
Sur l’ancien host :
# dd if=/chemin/vers/disque/hostname.de.votre.instance.tld-disk | pv | nc hostname.du.master.drbd.tld 2000
Démarrer l’instance
Une fois la copie terminée, on peut démarrer l’instance :
# gnt-instance start hostname.de.votre.instance.tld
Pour plus d’informations sur ce sujet, vous pouvez consulter les liens suivants :
- Notre offre de virtualisation
- Notre offre de formation Linux
- Notre offre de support en crédit temps
- Tutoriel en anglais
Si vous avez besoin d’assistance technique pour des projets Xen, Ganeti, ou plus généralement Linux, nous proposons des offres de support en crédit-temps ou des formations sur ces technologies.