Semaine 4 — Sauvegarder une VM et la remettre en place¶
Prérequis : Templates et cloud-init
Exercice associé : Exercice 4 — Sauvegarder l'infrastructure de Cyclo-Nord
Objectifs d'apprentissage¶
- Décrire ce que contient une archive
vzdumpet ce qui la distingue d'une copie de disque. - Choisir entre les modes Snapshot, Suspend et Stop selon l'état de la VM.
- Restaurer une VM sous son ancien identifiant ou sous un nouveau, et dire ce qui change.
- Situer les formats OVA et OVF par rapport à la sauvegarde intégrée.
1. Le problème : la VM disparaît¶
Il existe deux types de personnes: celles qui font des sauvegardes, et celles qui se rendent compte trop tard qu'elles auraient dû en faire.
Une VM, c'est un fichier de configuration de quinze lignes et un fichier de disque. Une commande de trop, un serveur réinstallé pour le groupe suivant, un disque qui tombe en panne, et les deux disparaissent ensemble.
Vous venez de passer 90 minutes à construire le réseau de Cyclo-Nord. Ce travail existe à un seul endroit : sur les disques des serveurs de votre équipe. Il ne survivra pas à la semaine si vous n'en sortez rien.
Proxmox intègre l'outil qui règle ça, et il s'appelle vzdump. Il ne s'installe pas, il ne se configure pas, il est là depuis le premier jour.
2. Ce que produit une sauvegarde¶
Une sauvegarde de VM donne un seul fichier, déposé dans le sous-dossier dump/ d'un stockage qui accepte le contenu Backup :
Le nom se lit de gauche à droite : le type de machine (qemu pour une VM, lxc pour un conteneur), son identifiant, la date et l'heure. Deux sauvegardes de la même VM ne peuvent donc jamais s'écraser.
L'extension dit le reste. VMA est le format d'archive de Proxmox, et .zst la compression zstd appliquée par-dessus.
Le fichier contient la machine entière¶
C'est le point essentiel. L'archive ne transporte pas seulement le contenu des disques : elle transporte aussi la description du matériel, exactement telle que Proxmox la connaît.
boot: order=scsi0
cores: 2
memory: 4096
name: fw-cyclonord
net0: virtio=BC:24:11:67:95:33,bridge=vmbr0,tag=460
net1: virtio=BC:24:11:82:7A:5A,bridge=vmbr0,tag=20
net2: virtio=BC:24:11:02:F7:82,bridge=vmbr0,tag=30
ostype: other
scsi0: local-lvm:vm-401-disk-0,size=32G
scsihw: virtio-scsi-single
Les trois cartes réseau sont là, avec leur bridge, leur étiquette VLAN et leur adresse MAC. La mémoire, les cœurs, le nom, l'ordre de démarrage aussi. Une VM restaurée depuis cette archive redémarre dans le même réseau que celle d'origine, sans que vous ayez à retoucher quoi que ce soit.
Astuce
Le bouton Show Configuration, dans le panneau des sauvegardes, affiche ce bloc sans rien restaurer. C'est la façon la plus rapide de savoir laquelle de vos archives contient la bonne version d'une machine.
Les blocs vides ne sont pas copiés¶
Le disque du pare-feu fait 32 Go, mais le système n'y a écrit que 1,6 Go. Le reste n'a jamais servi. vzdump lit tout le disque, jette les blocs restés à zéro, et compresse ce qui reste :
INFO: backup is sparse: 30.40 GiB (94%) total zero data
INFO: transferred 32.00 GiB in 14 seconds (2.3 GiB/s)
INFO: archive file size: 676MB
676 Mo pour un disque de 32 Go. C'est ce qui rend la manipulation possible en salle de classe : les trois machines de Cyclo-Nord tiennent sur une clé USB ordinaire.
3. Les trois modes¶
Une sauvegarde lit un disque pendant que le système écrit dedans. Sans précaution, l'archive contient un système de fichiers à moitié dans un état et à moitié dans l'autre. Le mode dit comment Proxmox évite ce problème.
| Mode | Ce qui arrive à la VM | Quand l'employer |
|---|---|---|
| Snapshot | rien, elle continue de tourner | le choix par défaut, et celui de presque tous les cas |
| Suspend | elle est gelée le temps de la sauvegarde | quand le stockage ne sait pas faire de snapshot |
| Stop | elle est éteinte, puis rallumée à la fin | quand vous voulez l'archive la plus sûre possible |
Le mode Snapshot ne copie pas le disque tel quel. QEMU fige une vue instantanée du disque et sert cette vue à vzdump, pendant que les écritures de la VM continuent ailleurs. C'est pourquoi la VM ne s'arrête jamais.
Il reste une chose que QEMU ne sait pas faire seul : demander au système invité de vider ses tampons d'écriture sur le disque avant la photo. C'est le rôle de qemu-guest-agent. Avec lui, le journal affiche le gel du système de fichiers ; sans lui, il affiche skipping guest filesystem freeze, et l'archive est cohérente au niveau du bloc mais pas forcément au niveau applicatif.
Important
Une base de données sauvegardée sans agent invité peut se retrouver avec une transaction à moitié écrite dans l'archive. Le qemu-guest-agent installé par cloud-init à l'exercice 2 n'était donc pas un détail de confort.
4. Restaurer¶
Une sauvegarde qu'on n'a jamais restaurée n'est pas une sauvegarde : c'est un fichier dont on espère qu'il fera l'affaire. La restauration est le seul test qui vaille.
Proxmox en propose deux depuis la même archive.
Restaurer par-dessus. Vous partez du panneau Backup de la VM. L'identifiant est imposé, et la machine existante est détruite et remplacée. C'est ce qu'on fait après une fausse manœuvre : on veut retrouver la machine d'avant, à sa place.
Restaurer à côté. Vous partez du panneau Backups du stockage. Proxmox propose alors un identifiant libre, et vous obtenez une seconde machine construite sur la description de l'archive. C'est ce qu'on fait pour vérifier une sauvegarde sans toucher à la production.
La fenêtre de restauration offre une case Unique. Cochée, elle tire de nouvelles adresses MAC au lieu de reprendre celles de l'archive. Deux machines avec la même MAC sur le même réseau se coupent mutuellement, donc cette case est obligatoire dès que l'original tourne encore.
Une restauration par-dessus efface la VM en place
Proxmox ne demande pas de confirmation supplémentaire et ne garde rien de la machine remplacée. Vérifiez la date de l'archive avant de cliquer, plutôt qu'après.
5. Et les autre formats : OVA, OVF, VMDK¶
Vous croiserez ces trois noms dès que vous sortirez de Proxmox, et le TP1 y reviendra. Voici l'essentiel.
Un .ova est une archive tar qui contient un fichier .ovf — une description XML du matériel — et un ou plusieurs .vmdk, les disques au format VMware. Le standard est public, publié par le DMTF, ce qui explique que tous les hyperviseurs sachent le lire.
Proxmox les accepte : déposez le fichier dans le sous-dossier import/ d'un stockage Directory et il apparaît dans le panneau Import. En ligne de commande, qm importovf fait la même chose.
Mais ce n'est pas le chemin naturel ici, pour deux raisons.
D'abord, l'OVF décrit du matériel en termes génériques : tant de mémoire, tant de disques, une carte réseau. Il ignore tout des bridges, des étiquettes VLAN et des adresses MAC de Proxmox. Là où une archive vzdump rebranche la VM exactement où elle était, un OVA vous laisse tout redéclarer à la main.
Ensuite, pour sortir des machines d'un hôte VMware ESXi, Proxmox ne passe pas par des fichiers du tout : on ajoute l'hôte ESXi comme stockage dans Datacenter > Storage, Proxmox liste ses VM et les importe directement. Pas d'export, pas de disque de 300 Go déplacé deux fois. C'est le chemin de la semaine 5.
Retenez donc la ligne de partage : vzdump pour sauvegarder ce qui vit déjà sur Proxmox, l'import pour faire entrer ce qui vient d'ailleurs.
Pièges fréquents¶
- Croire que la sauvegarde protège du serveur. Une archive déposée sur
localréside sur le disque du nœud. Le jour où ce nœud est réinstallé, elle disparaît avec lui. Une sauvegarde ne compte que si elle est ailleurs que la machine qu'elle sauvegarde. - Restaurer par-dessus la machine qu'on voulait garder. Les deux fenêtres se ressemblent ; seul l'endroit d'où on les ouvre change le comportement.
- Oublier la case Unique. Deux VM avec la même adresse MAC sur le même bridge, et les deux deviennent injoignables par intermittence.
- Sauvegarder une VM sans agent invité et s'en remettre au hasard. L'archive existe, elle se restaure, et la base de données qu'elle contient est corrompue.
Vérification des acquis¶
Question 1¶
Vous restaurez fw-cyclonord sur un nœud neuf, à partir de son archive seule. Que devez-vous reconfigurer à la main ?
- a) Les trois cartes réseau, leurs bridges et leurs étiquettes VLAN.
- b) Rien du côté matériel : l'archive contient la configuration de la VM.
- c) La mémoire et les cœurs, que vzdump ne sauvegarde pas.
Voir la réponse
**b) Rien du côté matériel : l'archive contient la configuration de la VM.** Une archive vzdump transporte le fichier de configuration en plus des disques. Les lignes `net0`, `net1` et `net2` y sont, avec leur bridge et leur `tag`. Le bouton **Show Configuration** permet de le vérifier avant même de restaurer. Le choix a) décrit ce qui se passe avec un OVA, et c'est justement la différence entre les deux formats. L'OVF décrit un matériel générique qui ignore les bridges de Proxmox ; l'archive vzdump décrit cette VM-ci, sur cet hyperviseur-ci.Question 2¶
Pourquoi le mode Snapshot n'oblige-t-il pas à éteindre la VM ?
- a) Parce que Proxmox copie le disque assez vite pour que la VM n'ait pas le temps d'écrire.
- b) Parce que QEMU fige une vue du disque au moment du déclenchement et sert cette vue à vzdump, pendant que les écritures continuent ailleurs.
- c) Parce que la VM est mise en pause quelques millisecondes à chaque bloc lu.
Voir la réponse
**b) Parce que QEMU fige une vue du disque au moment du déclenchement et sert cette vue à vzdump, pendant que les écritures continuent ailleurs.** L'archive contient donc l'état exact du disque à l'instant du déclenchement, et rien de ce qui a été écrit après. La VM, elle, ne remarque rien. Le choix a) est tentant parce que la sauvegarde va vite, mais la vitesse ne garantit rien : une base de données peut écrire trois fois pendant les quelques secondes d'une copie. Ce n'est pas la rapidité qui rend l'archive cohérente, c'est le gel de la vue.Question 3¶
Vous restaurez une archive sous un nouvel identifiant pour vérifier qu'elle est bonne, sans arrêter la VM d'origine. Que faut-il faire de plus ?
- a) Cocher Unique pour que la copie reçoive de nouvelles adresses MAC.
- b) Changer le nom de la VM restaurée, sinon Proxmox refuse la restauration.
- c) Débrancher la carte réseau de la VM d'origine le temps du test.
Voir la réponse
**a) Cocher Unique pour que la copie reçoive de nouvelles adresses MAC.** Sans cette case, la copie reprend les adresses MAC inscrites dans l'archive. Deux machines portant la même MAC sur le même bridge se disputent le trafic, et les deux deviennent injoignables par moments — y compris celle qui fonctionnait très bien avant votre test. Le choix b) prête à Proxmox une vérification qu'il ne fait pas : deux VM peuvent parfaitement porter le même nom, puisque c'est l'identifiant numérique qui les distingue.Pour aller plus loin¶
- Backup and Restore dans le wiki de Proxmox.
- Le chapitre vzdump de la documentation, pour les options en ligne de commande.