4. ZFS — le système de fichiers qui se souvient de tout — Le snapshot, délégué au système de fichiers
4.7 Le snapshot, délégué au système de fichiers
En clair. Dans l'interface, prendre un instantané est toujours le même geste : onglet Snapshots de la machine, puis Take Snapshot. Que le disque soit sur local-lvm ou sur ZFS, l'écran est identique.
Mais Proxmox ne fait pas le snapshot lui-même : il le délègue au stockage qui porte le disque. C'est donc le stockage qui décide si le snapshot est possible, et comment il est fait.
| Stockage du disque | Qui fait réellement le snapshot | Où le voir, avec l'outil du stockage |
|---|---|---|
LVM-thin (local-lvm) |
LVM crée un volume léger, qui partage les blocs du disque | lvs : un volume snap_vm-<id>-disk-0_<nom> |
ZFS (zfs-vms) |
ZFS fige ses pointeurs, sans rien copier (copy-on-write, §4.2) | zfs list -t snapshot : …/vm-<id>-disk-0@<nom> |
Répertoire, disque raw |
Personne : un répertoire n'a pas de snapshot au niveau du stockage (§3.4) | Nulle part : le snapshot est refusé (snapshot feature is not available) |
Sur le lab, le snapshot d'une VM posée sur local-lvm (une VM 101 de test) s'est traduit par une ligne de LVM, et non de Proxmox. La voici : Logical volume "snap_vm-101-disk-0_avant-mise-a-jour" created. C'est la preuve de la délégation.
Le même geste, sur une VM de test qui porte un disque sur ZFS et un disque sur local-lvm, montre les deux outils au travail.
Dans le Shell du nœud :
qm snapshot 190 essai # snapshot de la VM 190, ses deux disques
zfs list -t snapshot # côté ZFS : le snapshot du dataset
lvs | grep 190 # côté LVM : le volume du snapshot
Résultat attendu (nœud pxe212, Proxmox VE 9.2.21 ; VM 190 de test, supprimée ensuite) :
snapshotting 'drive-scsi0' (zfs-vms:vm-190-disk-0)
snapshotting 'drive-scsi1' (local-lvm:vm-190-disk-0)
WARNING: You have not turned on protection against thin pools running out of space.
WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
Logical volume "snap_vm-190-disk-0_essai" created.
WARNING: Sum of all thin volume sizes (80.00 GiB) exceeds the size of thin pool pve/data (no free space in volume group).
NAME USED AVAIL REFER MOUNTPOINT
datapool/vms/vm-190-disk-0@essai 0B - 56K -
snap_vm-190-disk-0_essai pve Vri---tz-k 1.00g data vm-190-disk-0
vm-190-disk-0 pve Vwi-a-tz-- 1.00g data 0.00
Un seul snapshot Proxmox, deux mécanismes. ZFS a créé …@essai (0 octet : rien n'est copié). LVM a créé le volume léger snap_vm-190-disk-0_essai.
Les WARNING viennent de LVM : la somme des tailles des disques fins (80 Gio) dépasse la taille du pool pve/data, et aucune extension automatique n'est réglée. Le snapshot est créé malgré tout.
Il suffit qu'un seul disque soit sur un stockage sans snapshot pour que toute la machine soit bloquée. Vérifié en ajoutant à la même VM un disque raw sur un stockage de type répertoire.
Dans le Shell du nœud :
qm snapshot 190 essai-dir # même geste, avec un disque sur un répertoire
Résultat attendu :
snapshot feature is not available
L'onglet Snapshots de la VM de test. Le bouton Take Snapshot est grisé, et le message à sa droite en donne la raison : The current guest configuration does not support taking new snapshots.
L'interface a interrogé le stockage de chaque disque avant d'afficher le bouton. En bas, le journal des tâches garde la trace de la tentative en ligne de commande : Error: snapshot feature is not available.
Deux conséquences pratiques :
- Le choix du stockage décide de ce que vous pourrez faire de vos machines. Un disque posé sur un stockage sans snapshot ne pourra jamais être figé avant une mise à jour risquée. C'est la colonne Snapshots du comparatif du §6.1.
- Un snapshot vit sur le même stockage que le disque. Il partage son sort : si le pool ou le groupe de volumes meurt, le snapshot meurt avec. Ce n'est pas une sauvegarde.
À retenir : ZFS réunit volumes, RAID logiciel, snapshots et système de fichiers. Proxmox délègue le snapshot au stockage : même bouton, mécanisme propre à chaque stockage.
Le copy-on-write protège les données et rend les snapshots instantanés ; les checksums détectent la corruption.
L'ARC met en cache en mémoire vive. On vérifie et on ajuste son plafond (zfs_arc_max, posé à 10 % de la RAM par l'installateur depuis la version 8.1). Sinon, ZFS peut prendre plus de la moitié de la RAM du nœud.
▶ À pratiquer maintenant — Atelier 3 puis Atelier 4
Créer un pool miroir sur deux disques, y poser un dataset compressé, puis éprouver le snapshot et le rollback — casser un fichier volontairement pour constater qu'il revient.
Enfin, faire passer le disque d'une VM de local-lvm à zfs-vms sans l'arrêter.
Proxmox VE — TSSR
