Dawan Proxmox VE — TSSR

Chapitre 3 — Réseau et stockage

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

Onglet Snapshots d'une VM dont un disque est sur un répertoire : bouton grisé

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.