Déplacer une machine virtuelle KVM vers un autre serveur (hors cluster) avec dd

Dans le cadre d'une bascule de proxmox 1.9 à 2.2, nous avons préféré repartir d'une installation propre d'un cluster proxmox 2.2, sur des serveurs distincts, plutôt que de tenter une mise à jour depuis l'existant. Le risque de downtime en cas de problème est en effet élevé sur ce genre de manipulation à chaud.

En conséquence, impossible d'utiliser les outils de bascule internes à Proxmox pour envoyer les VM d'une machine à l'autre. Heureusement, transférer une machine virtuelle n'est pas vraiment difficile. Voici le scénario :

- création d'une VM aux caractéristiques identiques sur le nouveau cluster (attention surtout à utiliser la même taille de disque, car on va faire une copie bit à bit)

- extinction de la VM originale sur l'ancien cluster, éventuellement après avoir fait quelques modifications de configuration pour coller au niveau cluster (notamment si changement d'IP par exemple)

- copie du volume LVM avec dd par ssh (cf. commande plus bas)

- lancement de la VM sur le nouveau cluster et vérification de la configuration

La commande magique pour la duplication par ssh du volume LVM, avec suivi de progression :

dd if=/dev/pve/vm-103-disk-1 bs=4M 2>/dev/null | pv -tpreb -s 15g | ssh REMOTE_HOST dd of=/dev/pve/vm-105-disk-1 bs=4M 2>/dev/null

Vous devrez adapter les éléments suivants :

- le volume d'origine

- l'hôte de destination (ici REMOTE_HOST)

- le volume de destination

- la taille totale (ici 15g) du volume à transférer, pour que la barre de progression soit juste