ZFS Snapshots : Comment les créer, les restaurer et les automatiser

10 min de lecture - 5 mai 2026

hero section cover
Table des matières
  • ZFS Snapshots : Comment les créer, les restaurer et les automatiser
  • Fonctionnement des instantanés ZFS
  • Création d'instantanés
  • Restauration à partir d'instantanés
  • Gestion et élagage des instantanés
  • Automatiser la rétention avec Sanoid
  • Réplication hors site avec zfs send
  • Note sur la protection contre les ransomwares
  • Recommandation vidéo
  • Réflexions finales
Partager

Apprenez à créer, restaurer et automatiser des instantanés ZFS sous Linux. Couvre les commandes, le retour en arrière, les politiques de rétention et la réplication hors site avec Sanoid

ZFS Snapshots : Comment les créer, les restaurer et les automatiser

Un instantané ZFS est une copie en lecture seule, à un moment donné, de votre système de fichiers. Elle est créée instantanément, n'occupe pas d'espace jusqu'à ce que les données soient modifiées et vous permet de revenir en arrière ou de récupérer des fichiers en quelques secondes. Si vous gérez des serveurs, des instances VPS ou tout ce qui contient des données que vous ne pouvez pas vous permettre de perdre, les instantanés devraient faire partie de votre flux de travail.

Cet article explique comment fonctionnent les instantanés ZFS, comment les utiliser et comment automatiser leur conservation afin qu'ils ne s'accumulent pas.

Fonctionnement des instantanés ZFS

ZFS utilise un modèle de copie sur écriture (CoW). Lorsque vous prenez un instantané, ZFS ne duplique aucune donnée. Il enregistre simplement l'état actuel de l'arborescence des blocs. Les nouvelles écritures sont effectuées sur des blocs libres, tandis que l'instantané continue de faire référence aux originaux.

Cela signifie que les instantanés sont créés en quelques microsecondes, quelle que soit la taille du jeu de données, et qu'ils ne consomment pas d'espace supplémentaire lors de la création. Ils ne commencent à utiliser de l'espace que lorsque l'ensemble de données en direct change, car l'instantané conserve les blocs d'origine qui seraient autrement libérés.

Cette méthode est fondamentalement différente des outils de sauvegarde au niveau des fichiers, tels que rsync ou tar, qui analysent et copient des fichiers entiers. Si vous modifiez 4 Ko d'un fichier de 10 Go, rsync copie l'intégralité du fichier. ZFS ne sauvegarde que le bloc de 4 Ko.

Les instantanés sont également immuables. Ils sont en lecture seule au niveau du noyau, de sorte que les processus de l'espace utilisateur (y compris les ransomwares) ne peuvent pas les modifier. Combiné à la somme de contrôle intégrée de ZFS, cela signifie que vous pouvez vérifier l'intégrité des données lors de la restauration.

Création d'instantanés

Conditions préalables

Vous aurez besoin d'installer ZFS et de configurer un pool. Sur Ubuntu 20.04+ :

sudo apt update && sudo apt upgrade -y
sudo apt install zfsutils-linux -y
sudo modprobe zfs

Créez un pool. Pour un seul disque (typique sur un VPS) :

sudo zpool create tank /dev/sdb

Pour une configuration en miroir sur un serveur dédié, utilisez les ID des disques au lieu des noms de périphériques pour éviter les problèmes après les redémarrages :

sudo zpool create tank mirror /dev/disk/by-id/ata-DISK1 /dev/disk/by-id/ata-DISK2

Activer la compression (LZ4 est rapide et efficace) :

sudo zfs set compression=lz4 tank

Créez ensuite des ensembles de données pour vos charges de travail :

sudo zfs create tank/web
sudo zfs create tank/databases

Prendre un instantané

La commande de base :

sudo zfs snapshot tank/web@before-update

Pour les noms horodatés (utile avec cron) :

sudo zfs snapshot tank/db@$(date +%Y%m%d_%H%M%S)

Pour capturer tous les jeux de données enfants en une seule fois, utilisez le drapeau récursif :

sudo zfs snapshot -r tank@daily_backup

Vérifier avec :

sudo zfs list -t snapshot

Restauration à partir d'instantanés

Restauration de fichiers individuels

Chaque ensemble de données ZFS possède un répertoire .zfs/snapshot caché à son point de montage. Il n'apparaît pas dans ls, mais vous pouvez naviguer directement jusqu'à lui :

ls /tank/web/.zfs/snapshot/before-update/

Pour restaurer un seul fichier :

cp -p /tank/web/.zfs/snapshot/before-update/config/app.conf /tank/web/config/

L'option -p préserve les autorisations et les horodatages.

Rétablissement d'un jeu de données entier

Si vous devez tout rétablir, par exemple après l'échec d'une mise à niveau :

sudo zfs rollback tank/web@before-update

Cette opération est presque instantanée, car ZFS met à jour les pointeurs de bloc plutôt que de copier les données. Mais elle est destructive : toutes les modifications apportées après l'instantané sont définitivement perdues.

Si des instantanés plus récents existent entre la cible et l'état actuel, ZFS bloquera le retour en arrière. Utilisez -r pour le forcer et supprimer ces instantanés intermédiaires :

sudo zfs rollback -r tank/db@20260426_090000

Une bonne habitude : faites un instantané de l'état actuel (cassé) avant de revenir en arrière, afin d'avoir une solution de repli en cas de besoin.

Méthode de récupérationVitesseRisque de perte de donnéesMeilleure solution
Restauration de fichiers via .zfsDépend de la taille du fichierAucuneSuppressions accidentelles, récupération d'un seul fichier
Retour completInstantanéÉlevé (perte de toutes les modifications postérieures à l'instantané)Échec des mises à niveau, problèmes au niveau du système
Clonage pour testInstantanéAucun (crée un jeu de données parallèle)Vérification avant de s'engager dans un rollback

Gestion et élagage des instantanés

Les instantanés ont une taille nulle au départ, mais ils augmentent au fur et à mesure que les données actives changent en dessous d'eux. Pour vérifier l'utilisation de l'espace :

zfs list -t snapshot -o name,used,refer,creation

La colonne USED indique la quantité d'espace propre à cet instantané. La colonne REFER indique la taille totale de l'ensemble de données lorsque l'instantané a été pris.

Pour supprimer un instantané :

sudo zfs destroy tank/web@before-update

Vous pouvez également supprimer par motif :

sudo zfs destroy tank/web@daily-2026-04-%

Commencez toujours par une exécution à sec :

sudo zfs destroy -nv tank/web@daily-%

ZFS peut techniquement gérer des millions d'instantanés, mais les performances se dégradent au-delà de quelques milliers par jeu de données. Les commandes telles que zfs list et zfs destroy ralentissent considérablement. Veillez à ce que la rétention soit stricte.

Automatiser la rétention avec Sanoid

Sanoid est l'outil standard pour automatiser la création et l'élagage des instantanés ZFS. Vous définissez les politiques de rétention dans sanoid.conf, et il s'occupe du reste.

Une configuration de production typique peut ressembler à ceci :

Type de charge de travailHoraireQuotidienHebdomadaireMensuelle
Production standard24-4830812
Base de données (taux d'utilisation élevé)72301224
Journaux / faible priorité12-24703
Supports statiques0703

Sanoid prend également en charge les instantanés subhoraires grâce au paramètre frequently. En définissant frequently = 96 et frequent_period = 15, vous obtenez un instantané toutes les 15 minutes.

Programmez Sanoid via cron pour qu'il s'exécute toutes les minutes ou toutes les 15 minutes, et il créera et élaguera les instantanés automatiquement.

Réplication hors site avec zfs send

Les instantanés sur un serveur unique protègent contre les modifications accidentelles et les défaillances logicielles, mais pas contre les pertes matérielles. Pour cela, répliquez hors site en utilisant zfs send et zfs receive via SSH :

zfs send tank/web@backup | ssh user@remote zfs receive backup/web

Pour les transferts incrémentiels (envoi de ce qui a changé depuis le dernier instantané) :

zfs send -i tank/web@old_snap tank/web@new_snap | ssh user@remote zfs receive backup/web

L'outil compagnon de Sanoid, syncoid, automatise ce processus et gère les envois incrémentaux, la récupération des erreurs et la journalisation.

Note sur la protection contre les ransomwares

Les instantanés ZFS sont en lecture seule au niveau du noyau, ce qui signifie que les logiciels malveillants standard ne peuvent pas les modifier ou les chiffrer. Il s'agit là d'une solide couche de défense. Mais elle n'est pas à l'épreuve des balles : si un pirate obtient un accès root, il peut supprimer les instantanés avant de chiffrer vos données.

Les instantanés ne doivent être qu'un élément d'une stratégie plus large. Combinez-les avec une réplication hors site, un accès restreint à la racine et une sécurité au niveau du réseau. Ne comptez pas uniquement sur les instantanés.

Recommandation vidéo

Réflexions finales

Les instantanés ZFS sont rapides, peu encombrants et simples à utiliser une fois que l'on en a compris les bases. Ils ne remplacent pas les sauvegardes hors site, mais ils comblent une lacune que les outils de sauvegarde traditionnels ne peuvent pas combler : des points de récupération instantanés et sans frais généraux que vous pouvez prendre aussi souvent que vous le souhaitez.

Si vous utilisez ZFS sur un VPS ou un serveur dédié, configurez Sanoid, définissez une politique de rétention et automatisez la réplication. La configuration prend 30 minutes et permet d'économiser des heures en cas de problème. Essayez-le sur un SDV FDC ou un serveur dédié.

Blog

À l'honneur cette semaine

Plus d'articles
ZFS Snapshots : Comment les créer, les restaurer et les automatiser

ZFS Snapshots : Comment les créer, les restaurer et les automatiser

Apprenez à créer, restaurer et automatiser des instantanés ZFS sous Linux. Couvre les commandes, le retour en arrière, les politiques de rétention et la réplication hors site avec Sanoid

10 min de lecture - 5 mai 2026

Comment installer et utiliser Redis sur un VPS

9 min de lecture - 7 janvier 2026

Plus d'articles