lundi 30 juillet 2018

Migration des VM d'un hôte Proxmox VE vers un autre hôte sans cluster

Suite à des déboires par rapport à l'hébergeur de mon serveur, j'ai fini par revenir chez OVH chez qui j'ai toujours été satisfait. Sur ce nouveau serveur, j'ai donc rempilé pour la même distribution que l'ancien, un Proxmox VE 5 sur base de Debian 9, pour des raisons de compatibilité principalement, et aussi car j'étais satisfait de cet hyperviseur après quelques années sous ESXi.

Le principal intérêt étant la possibilité de conserver les machines virtuelles et ne rien avoir à réinstaller à part l'hyperviseur lui-même et refaire la configuration (ou plutôt, la redéployer étant donné que j'avais tout sauvegardé), je vais expliquer dans cet article comment procéder à l'export et à l'importation des VM de l'ancien hôte vers le nouveau.

Sur l'interface de Proxmox, sélectionner la machine virtuelle que l'on souhaite sauvegarder, puis aller dans Backup, et enfin, cliquer sur Backup Now. Si le datastore est invisible, il faut activer le stockage de fichiers de sauvegarde dessus (Datacenter > Storage > Edit > Content, cocher VZDump backup file).


La fenêtre de sauvegarde d'une VM. Il faut choisir le datastore sur lequel écrire la sauvegarde, le mode (snapshot, mise en veille de la VM ou arrêt complet) et enfin, spécifier si l'on souhaite une compression de celle-ci et/ou un mail.

Un snapshot n'étant pas suffisant pour restaurer une VM sur un autre hôte sans cluster, il faut donc soit mettre en sommeil la VM le temps de la sauvegarde (option Suspend) ou l'arrêter complètement (option Stop). Dans mon cas, le mode Suspend suffit ; j'ai choisi une compression LZO pour réduire le temps de transfert vers l'autre hyperviseur.

Il se peut que la sauvegarde échoue : le message d'erreur est généralement assez clair, mais s'assurer qu'il ne reste pas un ISO de monté et inaccessible ou que la VM n'est pas en cours d'extinction déjà est un début.

Un écran apparaît alors permettant de suivre le déroulement de la sauvegarde, en fonction de la taille de la machine, de vos performances CPU et disque, il n'y a pas de vrai moyen de déterminer le temps que cela peut prendre. A titre d'exemple, une sauvegarde d'une VM avec un seul disque virtuel contenant environ 65 Go de données s'est terminée en environ 15 minutes (CPU Core i7-4770, 32 Go de RAM, disques SATA 10K).

Une fois la sauvegarde terminée, il va s'agir de la transférer. Le moyen présentant le meilleur ratio simplicité/sécurité est d'utiliser SCP. Dans un shell, nous allons donc nous placer dans le répertoire des dumps, identifier le fichier de sauvegarde, puis lancer le transfert SCP.

cd /var/lib/vz/dump/
ls



La sauvegarde est donc au format .vma.lzo puisque l'on a décidé de compresser en LZO. En cas de doute un ls -l affiche la taille, permettant de différencier le log de la sauvegarde elle-même.

Reste plus qu'à lancer le SCP :

scp vzdump-qemu-machineid-time_stamp.vma.lzo user@destination:/var/lib/vz/dump/vzdump-qemu-machineid-time_stamp.vma.lzo

A noter que machineid et time_stamp sont des variables qui changent naturellement en fonction de l'ID de la VM et de l'heure à laquelle la sauvegarde a commencé ; on utilisera bien sûr le nom récupéré plus haut. scp utilisant SSH, il peut être nécessaire de préciser le port sur lequel écoute SSH sur le serveur de destination (scp -P 2222 par exemple, si le port SSH est 2222). Il faut également que l'utilisateur spécifié soit en mesure d'écrire dans le répertoire de destination. Vous pouvez faire le transfert vers un homedirectory avec un utilisateur tout simple puis ensuite déplacer la sauvegarde vers le répertoire des dumps.

Le temps de transfert dépendant quasi-uniquement de la bande passante entre les deux hôtes, impossible de prédire celui-ci. Une fois le transfert terminé, sur le nouveau Proxmox, il suffit de se rendre sur les propriétés du datastore pour permettre de gérer les sauvegardes si cela n'est pas déjà fait  (éventuellement déjà opéré sur l'hôte d'origine pour faire les sauvegardes) :

En cochant VZDump backup file, on permet au datastore de gérer les fichiers dumps.

Puis, en se rendant dans le datastore lui-même, on aperçoit bien notre backup :



Il ne reste plus qu'à le sélectionner, cliquer sur Restore, indiquer un ID de machine virtuelle libre sur le nouvel hôte et le datastore de stockage. Puis au redémarrage, tout sera comme à l'extinction sur l'ancien hôte 😎

Si l'envie vous prend de réaliser tout en ligne de commande ou que vous ne pouvez pas utiliser l'interface web, je vous renvoie vers la documentation de vzdump et qmrestore.

Aucun commentaire:

Enregistrer un commentaire