Comment copier une machine virtuelle kvm en raw sur un Volume Group LVM2 se trouvant sur un disque en DRBD

Il se trouve que je devais migrer quelques machines virtuelle se trouvant sur un cluster proxmox sur le site de Lausanne, sur un autre cluster proxmox se trouvant à Lutry. Jusque-la rien de bien sorcier me direz-vous, si ce n'est qu'avec un lien réseau de faible débit entre les deux sites j'ai fait une copie initiale de mes images de bécannes virtuelles en fichier raw sur un disque externe.
Sur le site de Lutry j'ai une config avec deux serveurs en cluster proxmox
 lutrycalc01:~# pveca -lCID----IPADDRESS----ROLE-STATE--------UPTIME---LOAD----MEM---DISK
 1 : 192.168.50.100  M     A     1 day 05:49   2.23     8%     1%
 2 : 192.168.50.110  N     A     1 day 05:49   0.00     1%     1%
chaque serveur à 3 disques logiques (de taillse identique) s'appuyant sur une config physique en RAID5.

le 2ème disque logique /dev/sdb1  est répliqué sur les deux noeud grâce à l'excellent DRBD de LINBIT. Il y a un excellent howto pour configurer un disque drbd sur un cluster proxmox sur le wiki de proxmox
L'intérêt principal d'un disque logique utilisant DRBD sous Proxmox est d'avoir les deux noeuds d'un cluster avec toujours  la même image du même fichier raw (d'une machine virtuelle kvm donnée) sur chaque noeud, ce qui permet une migration quasi instantanée en "live migration" sous proxmox et qui théoriquement assure aussi une tolérance aux pannes en cas de mort subite du noeud principal (ça j'ai pas encore testé)
Ceci dit DRBD est un excellent projet et un produit fort intéressant et bien documenté qui peut être utilisé indépendament de proxmox comme solution plus classique de tolérance aux pannes il y a d'ailleurs un excellent article sur le site d'ibm d'ou vient l'image ci-après.

Donc sur mon disque externe j'avais une image de 20GB au format raw classique de ma machine virtuelle
lutrycalc01:~# qemu-img info /mnt/BACKUP/goeland/proxmox/kvm/images/102/vm-102-disk.raw
image: /mnt/BACKUP/goeland/proxmox/kvm/images/102/vm-102-disk.raw
file format: raw
virtual size: 20G (21474836480 bytes)
disk size: 20G

Mon problème était de savoir comment copier cette image sur le noeud principal de mon serveur. J'avais déjà au préalable créé une machine virtuelle aux caractéristiques identiques mais avec
lutrycalc01:~# cat /etc/qemu-server/102.conf
name: kvm_gosqlcc02
ide2: cdrom,media=cdrom
vlan0: rtl8139=FE:A2:23:8B:EF:83
bootdisk: ide0
ostype: w2k3
ide0: drbdvg0:vm-102-disk-1
memory: 1024
onboot: 1
sockets: 1

Un scan des volumes logiques avec lvscan me donnait une première piste :
lutrycalc01:~# lvscan
  ACTIVE            '/dev/pve/swap' [31.00 GB] inherit
  ACTIVE            '/dev/pve/root' [96.00 GB] inherit
  ACTIVE            '/dev/pve/data' [1.63 TB] inherit
  ACTIVE            '/dev/drbdvg/vm-102-disk-1' [20.00 GB] inherit


avec un "ps aux |grep kvm" j'ai pu voir comment proxmox lance la machine virtuelle ayant son disque sur le volume group en drbd
 lutrycalc01:~# ps aux |grep kvm
root      2751  0.0  0.0      0     0 ?        S    Mar17   0:00 [kvm-irqfd-clean]
root     26549  5.4  3.2 1167180 1066152 ?     Sl   17:41   3:12 /usr/bin/kvm -monitor unix:/var/run/qemu-server/102.mon,server,nowait -vnc unix:/var/run/qemu-server/102.vnc,password -pidfile /var/run/qemu-server/102.pid -daemonize -usbdevice tablet -name kvm_gosqlcc02 -smp sockets=1,cores=1 -nodefaults -boot menu=on -vga cirrus -tdf -localtime -rtc-td-hack -k fr-ch -drive file=/dev/drbdvg/vm-102-disk-1,if=ide,index=0,boot=on -drive file=/dev/cdrom,if=ide,index=2,media=cdrom -m 1024 -netdev type=tap,id=vlan0d0,ifname=tap102i0d0,script=/var/lib/qemu-server/bridge-vlan -device rtl8139,mac=FE:A2:23:8B:EF:83,netdev=vlan0d0 -id 102 -cpuunits 1000


J'arrête cette machine virtuelle via l'interface web de proxmox et il ne me restait plus qu'a copier avec un bon vieux "dd" l'intégralité de mon disque :
lutrycalc01:~# dd if=/mnt/BACKUP/goeland/proxmox/kvm/images/102/vm-102-disk.raw of=/dev/mapper/drbdvg-vm--102--disk--1 bs=1M
20480+0 records in
20480+0 records out
21474836480 bytes (21 GB) copied, 1510.34 s, 14.2 MB/s




Et ensuite j'ai pu démarrer ma machine virtuelle qui était la réplique exacte de celle se trouvant sur le site de Lausanne.
Une petite règle DNAT sur le firewall de Lutry et me voila "presque" en mesure de faire du rdesktop sur mon serveur virtuel depuis mon site distant, je dis presque parceque j'ai quand même du aller modifier le default gateway de ce serveur. Mais en installant rdesktop sur une box Linux debian  se trouvant déjà sur place et sur laquelle j'avais un accès ssh j'ai pu faire un rdesktop distant et aller corriger le default gateway de mon serveur virtuel.
Encore une fois Merci GNU/Linux, merci Debian, merci Proxmox, merci OpenSsh, merci DRBD, merci à tous les projets du Monde Libre à tous ces anonymes qui tous ensembles de par leur travail, leur effort et leur ouverture d'esprit rendent toute cette magie possible.
C'est beau la vie d'un ingénieur système sous GNU/Linux !

Commentaires

Posts les plus consultés de ce blog

Comment extraire les fichiers disques en raw d'un backup proxmox vma

Utiliser curl pour récupérer des logs sur un serveur Microsoft IIS avec l'authentification ntlm

Find the lists of disks of your Proxmox VM stored in a ceph cluster