Table des matières

Sauvegarder, migrer ou restaurer une machine virtuelle

Proxmox dispose de plusieurs mécanismes de sauvegarde de l’état d’une machine virtuelle :

Pour chaque machine virtuelle nouvellement créée, il est souhaitable d’activer les fonctionnalités de backup.

Activation des backups

Dans l’interface web Proxmox, à partir du menu Datacenter, on clique sur l’onglet Backup. Si aucun backup n’est défini, on l’ajoute, sinon, on modifie l’existant. Un exemple de configuration est celui-ci :

L’important est que :

Attention:

Avec Proxmox 6, un nouveau format de compression est introduit : ZSTD. Il compresse aussi bien que GZip en général, et beaucoup plus rapidement. C’est celui qu’on privilégiera.

Il est préférable qu’il soit fait dans la nuit, et les jours de la semaine sont à sélectionner suivant les besoins de sauvegarde.

Note:

Sur les machines Alice et Bob, Picasoft utilise un système pour échanger les backups mutuels, pour s’assurer d’avoir une sauvegarde des machines virtuelles d’une machine en cas de panne grave. Il est aussi envisageable d’externaliser les backups, une fois chiffrés. Ce système est documenté ici, et n’est pas indispensable pour que les backups Proxmox fonctionnent (mais souhaitable tout de même) : https://gitlab.utc.fr/picasoft/projets/tx/rotation-vm

Déclencher un backup

Depuis Proxmox 6, il est possible de déclencher manuellement un backup programmé, par exemple avant une grosse mise à jour, avec le bouton Run Now :

Déclencher un snapshot

Pour sauvegarder les machines virtuelles, Proxmox intègre un système de snapshot. Il est en mesure de sauvegarder le système de fichier complet de la machine virtuelle et de le restaurer en cas de besoin. Dans le cas ou une personne n’est pas sure de ce qu’elle va faire sur une machine, il est possible de prendre un snapshot de celle-ci et de faire un rollback pour revenir à la situation initiale.

Un snapshot est beaucoup plus léger et rapide qu’un backup, puisqu’il ne sauvegarde que les modifications sur la VM, et non ses disques complets. Il est donc à privilégier avant toute opération dangereuse (mise à jour majeure du système d’exploitation, etc).

Pour prendre un snapshot, il faut se rendre sur le menu de la VM, puis sur l’onglet Snapshot, et cliquer sur Add Snapshot. Il est préférable d’inclure la RAM. Par exemple, pour prendre un snapshot sur pica02 avant une mise à jour majeure, on pourra faire :

Restaurer un backup ou une snapshot

La restauration d’une machine s’effectue en cliquant sur une machine virtuelle dans l’interface web.

Pour un backup, on se rend ensuite dans l’onglet Backup, et pour un snapshot sur l’onglet Snapshot. On a alors une liste des backups ou snapshots sur la machine. Lorsque l’on clique sur celui-ci, on a alors la possibilité de restaurer l’état de la machine virtuelle.

Important:

Cette opération est irréversible ! On peut néanmoins prendre une snapshot avant de restaurer un backup, si on a vraiment un doute, mais c’est peut-être un peu tordu…

Par exemple, pour restaurer un backup sur pica02, on choisira le backup puis on cliquera sur Restore :

Note:

Il est tout à fait possible de transférer le backup sur un autre hyperviseur et de le restaurer : il faudra simplement veiller à modifier la configuration réseau et à choisir le stockage adéquat pour les disques virtuels.

Consulter les fichiers d'un backup

Pour des raisons diverses, on peut vouloir examiner et récupérer certains fichiers d’un backup.

En restaurant sur une nouvelle machine virtuelle

On restaure le backup sur une machine avec un ID qui n’existe pas ; une nouvelle machine sera créée mais on ne la démarre pas. Souvent, le but est de récupérer certains fichiers ; or la nouvelle VM n’est probablement pas connectée à Internet.

On va simplement trouver le disque virtuel où se trouvent les fichiers qui nous intéressent. On suppose qu’il s’agit de disk.qcow2 et que /mount_point existe.

Note:

Usuellement, les image disque des machines virtuelles se trouvent dans /var/lib/<storage>/images/<VM_ID>.

Ensuite, on monte le disque virtuel avec la commande suivante :

snippet.bash
$ guestmount -a disk.qcow2 -i --ro /mount_point

Attention:

Si guestmount n’est pas trouvé, on installera libguestfs-tools.

Avec un script tiers

On pourra utiliser ce script pour extraire les fichiers du backup dans un dossier : https://github.com/jancc/vma-extractor/blob/master/vma.py

Attention:

Le dossier extrait peut être très lourd : vérifier l’espace disque disponible. Aussi, dans la mesure où Proxmox ne fournit pas d’outil générique pour réaliser cette opération, ce script est réalisé par un tiers. Il peut cesser de fonctionner à un moment ou un autre.

Effacer un snapshot qui s'est mal déroulé

Si il n’est pas possible d’effacer le snapshot depuis l’interface web, il est possible de passer directement par la ligne de commande. Pour cela, il faut se connecter l’hôte concerné, puis lancer la commande suivante :

qm delsnapshot <id_VM> <nom_snapshot>

Si vous avez un message d’erreur du type VM is locked (snapshot), vous pouvez débloquer la VM avec:

qm unlock <id_VM>

Attention à bien vérifier qu’elle n’est pas bloquée pour une raison légitime (par exemple, les backups quotidiens de 3h du mat, qui peuvent durer jusqu’à 8h du mat).

Si vous avez encore des erreurs, comme par exemple:

root@bob:~# qm delsnapshot 102 Test_SATA
VM 102 qmp command 'blockdev-snapshot-delete-internal-sync' failed - Snapshot with id 'null' and name 'Test_SATA' does not exist on device 'drive-scsi1'

alors il est possible que le snapshot soit présent seulement dans le fichier de config de la VM (ici, /etc/pve/qemu-server/102.conf). Dans ce cas, il suffit d’effacer l'entrée