Migrer une VM de Xen vers KVM
January 17, 2012 by nonoCatégories geekeries - Mots-clés KVM Linux virtualisation Xen
Un petit aide-mémoire sur la migration d'une machine virtuelle Linux de Xen (sur CentOS 5.x, mais ça ne doit pas jouer énormément) vers KVM (sur Scientific Linux 6.x, donc avec libvirt). L'essentiel de ce qui suit vient de cette page.
Préparation de la machine virtuelle
J'ai donc une VM Xen, appelons-la testxen1 (parce que c'est son nom), qui tourne sur l'ancien serveur. L'OS installé sur la VM est un CentOS 5. Sur cette machine virtuelle (qui tourne encore):
- éditer /etc/inittab, enlever le getty(8) qui tourne sur la console Xen et décommenter ceux des terminaux virtuels habituels;
- installer un noyau Linux «normal» (pas un noyau Xen);
- éditer /etc/fstab et remplacer les disques virtuels Xen (xvda, xvdb et ainsi de suite) par des disques IDE (hda, hdb...). NB: pas évident que cette étape soit partout la même, ça dépend peut-être de la version du noyau; à tester.
- enlever le paramètre console=xvc0 du nouveau noyau dans /boot/grub/menu.lst, et s'assurer que le nouveau noyau est bien sélectionné par défaut;
- installer grub:
[root@testxen1 ~]# grub Probing devices to guess BIOS drives. This may take a long time. GNU GRUB version 0.97 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> device (hd0) /dev/xvda device (hd0) /dev/xvda grub> root (hd0,0) root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done. grub> quit quit
C'est fini pour la machine virtuelle, on peut maintenant l'arrêter.
Sur la nouvelle machine physique
On commence, bien sûr, par copier l'ancien (ou les anciens) disque(s) virtuel(s) sur la nouvelle machine. Dans mon cas, il s'agit de volumes logiques LVM, on fait bêtement ça à grands coups de dd(1). Reste juste à créer la nouvelle VM:
virt-install --connect qemu:///system -n testxen1 -r 1024 --vcpus=1 \ --disk /dev/vg00/testxen1 --vnc --os-type linux --accelerate \ --network=bridge=br102,model=virtio,mac=12:00:02:e3:00:01 \ --noreboot --keymap us --import
Quelques notes en vrac:
- bien évidemment, remplacer le nom de la machine (ici testxen1) par ce qu'on veut;
- idem pour la mémoire (option -r) et le nombre de processeurs (option --vcpus);
- dans le cas où on a plusieurs disques virtuels, on peut répéter plusieurs fois l'option --disk, avec le disque de démarrage en premier;
- pour l'option --network, replacer br102 par le nom du pont réseau qui va bien (si vous avez une config réseau différente, va falloir chercher :-)) et bien entendu l'adresse MAC par la bonne valeur.
Voilà, vous allez voir démarrer votre nouvelle VM sous vos yeux zébahis. Elle est pas belle, la vie? :-)