Blog

Cloner une vm Xen avec LVM

Écrit le 28 02 2014 par Kévin MET _

Pour aujourd'hui, un petit tutoriel qui explique comment cloner une machine virtuelle Xen qui a son disque géré par LVM. Dans le fichier de configuration de votre vm, ça se traduit par une ligne qui ressemble à cela :


disk = [
		'phy:/dev/main/supervision.mnt-tech.fr-disk,xvda2,w',
		'phy:/dev/main/supervision.mnt-tech.fr-swap,xvda1,w',
]

On va donc commencer par utiliser la fonction de snapshot de LVM qui est très rapide car elle ne copie pas le volume mais uniquement les différences avec le volume original. Cela implique que si vous voulez changer environ 10Go sur votre snapshot par rapport à votre volume d'origine, il faudra dimensionner votre snapshot à 10Go. Pour plus de détails, vous pouvez consulter la documentation redhat sur les snapshots LVM. Nous allons donc créer un snapshot de notre volume logique. Dans l'exemple, mon volume se nomme /dev/main/supervision.mnt-tech.fr-disk et je sais que je vais avoir 5Go grand maximum de différence avec mon volume d'origine. Je vais donc faire un snapshot de ce volume correspondant à mes besoins :


root@xen1:~# lvcreate -L5G -s -n 'node1.mnt-tech.fr-disk' /dev/main/supervision.mnt-tech.fr-disk
  Logical volume "node1.mnt-tech.fr-disk" created

On peut voir notre snapshot avec la commande suivante :


root@xen1:~# lvdisplay /dev/main/node1.mnt-tech.fr-disk
  --- Logical volume ---
  LV Path                /dev/main/node1.mnt-tech.fr-disk
  LV Name                node1.mnt-tech.fr-disk
  VG Name                main
  LV UUID                yrV8cf-xIfh-NAC4-PejZ-D2yR-5z21-TgFtjV
  LV Write Access        read/write
  LV Creation host, time xen1, 2014-02-28 12:00:50 +0100
  LV snapshot status     active destination for supervision.mnt-tech.fr-disk
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  COW-table size         5.00 GiB
  COW-table LE           1280
  Allocated to snapshot  0.04%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:6

L'étape suivante n'est pas obligatoire, elle dépend de votre configuration. Dans mon cas, je met en dur les adresses IP de mes machines virtuelles dans le fichier de configuration à l'intérieur de la machine. Je vais donc devoir modifier l'adresse IP de ma machines virtuelle en montant le snapshot LVM avec kpartx.


root@xen1:~# kpartx -av /dev/main/node1.mnt-tech.fr-disk 
root@xen1:~# mkdir temp
root@xen1:~# mount /dev/main/node1.mnt-tech.fr-disk temp/
root@xen1:~# vim temp/etc/network/interfaces 
Faire les modifications sur votre interface
root@xen1:~# umount /dev/main/node1.mnt-tech.fr-disk
root@xen1:~# kpartx -d /dev/main/node1.mnt-tech.fr-disk
root@xen1:~# rmdir temp/

Il nous faut maintenant dupliquer le fichier de configuration de la vm et le modifier pour l'adapter à notre snapshot.


root@xen1:~# cp /etc/xen/supervision.mnt-tech.fr.cfg /etc/xen/node1.mnt-tech.fr.cfg
root@xen1:~# vim /etc/xen/node1.mnt-tech.fr.cfg

Dans le fichier de config /etc/xen/node1.mnt-tech.fr.cfg vous devez modifier l'adresse IP, l'adresse MAC, les volumes LVM à utiliser et le nom de la vm. Dans mon cas, j'ai modifié ceci :


disk = [
		'phy:/dev/main/node1.mnt-tech.fr-disk,xvda2,w',
		'phy:/dev/main/node1.mnt-tech.fr-swap,xvda1,w',
]
vif = [ 'ip=192.168.1.1 ,mac=00:16:3E:D3:F8:C4' ]
name = 'node1.mnt-tech.fr'

Et enfin, il ne reste plus qu'à lancer notre machine virtuelle :


root@xen1:~# xm create node1.mnt-tech.fr.cfg 
Using config file "/etc/xen/node1.mnt-tech.fr.cfg".
Started domain node1.mnt-tech.fr (id=6)
♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.