Aller au contenu
Perfect Homelab [A01] : Post-Installation - Sauvegarder son système Proxmox avec Sanoid et ZFS
  1. Posts/

Perfect Homelab [A01] : Post-Installation - Sauvegarder son système Proxmox avec Sanoid et ZFS

Fabien ALLAMANCHE
Auteur
Fabien ALLAMANCHE
Géomaticien @ Vienne Condrieu Agglomération
Sommaire
Perfect Homelab Annexe - Cet article fait partie d'une série.
Partie 1: Cet article

Perfect Homelab

Introduction
#

Si vous utilisez Proxmox avec ZFS, vous avez probablement déjà un Proxmox Backup Server (PBS) pour sauvegarder vos machines virtuelles et conteneurs LXC. Mais qu’en est-il de votre système Proxmox lui-même et de vos données personnelles ?

C’est là qu’intervient Sanoid, un outil de gestion automatique de snapshots ZFS qui vous permettra de :

  • Revenir en arrière après une mise à jour ratée de Proxmox,
  • Restaurer rapidement après une mauvaise manipulation,
  • Protéger vos données personnelles stockées sur ZFS,
  • Avoir un historique de vos modifications.

Dans cet article, je vous montre comment mettre en place une politique de snapshots simple et efficace avec Sanoid :

Architecture de départ
#

Voici l’architecture de mon serveur Proxmox avec ZFS en miroir :

rpool/ROOT/pve-1                    # Système Proxmox (11.7G)
rpool/datastore/subvol-*            # Disques des VMs/LXC (déjà sauvegardés par PBS)
rpool/tank/documents                # Documents personnels (51.6G)
rpool/tank/pgbackweb                # Application de backup PostgreSQL (4.41G)

Stratégie de sauvegarde :

  • Les VMs et conteneurs sont déjà couverts par PBS → on les ignore
  • On protège le système Proxmox et les données personnelles avec Sanoid

Installation de Sanoid
#

Sur Debian/Proxmox, l’installation est très simple :

apt update
apt install sanoid

Configuration
#

Sanoid utilise un fichier de configuration au format INI situé dans /etc/sanoid/sanoid.conf.

Principe de fonctionnement
#

La configuration repose sur deux concepts :

  1. Datasets : les systèmes de fichiers ZFS à protéger
  2. Templates : des profils de sauvegarde réutilisables

Configuration finale
#

Voici la configuration complète et commentée :

# Système Proxmox - snapshots avant/après maintenance
[rpool/ROOT/pve-1]
use_template = proxmox_system

# Données personnelles - rétention modérée
[rpool/tank]
use_template = data
recursive = yes
process_children_only = yes

#############################
# Templates                 #
#############################

# Template pour le système
# 2 snapshots par semaine, rétention de 3 mois en mensuel
[template_proxmox_system]
frequently = 0
hourly = 0
daily = 14
monthly = 3
yearly = 0
autosnap = yes
autoprune = yes

# Template pour les données
# 2 snapshots par semaine, 1 mois de rétention
[template_data]
frequently = 0
hourly = 0
daily = 8
monthly = 0
yearly = 0
autosnap = yes
autoprune = yes

Explication des templates
#

Template proxmox_system (pour le système) :

  • daily = 14 : conserve 14 snapshots quotidiens (environ 2 par semaine sur 2 semaines)
  • monthly = 3 : conserve 3 snapshots mensuels (3 mois d’historique)
  • Total : environ 17 snapshots

Template data (pour les données) :

  • daily = 8 : conserve 8 snapshots quotidiens (environ 2 par semaine sur 1 mois)
  • Pas de rétention mensuelle ou annuelle
  • Total : 8 snapshots par dataset

Option importante :

  • recursive = yes : applique la politique à tous les datasets enfants
  • process_children_only = yes : ne snapshot que les enfants, pas le parent

Test et activation
#

1. Test en mode lecture seule
#

Avant d’activer, vérifiez que tout fonctionne sans modifier votre système :

sanoid --cron --verbose --readonly

Vous devriez voir les snapshots qui seraient créés sans qu’ils ne le soient réellement.

2. Activation du service
#

Si le test est concluant, activez le timer systemd :

# Active et démarre le timer
systemctl enable sanoid.timer
systemctl start sanoid.timer

# Vérification
systemctl status sanoid.timer
systemctl list-timers sanoid*

Le timer s’exécute toutes les 15 minutes et vérifie s’il doit créer ou supprimer des snapshots selon votre configuration.

3. Premier run manuel (optionnel)
#

Pour créer immédiatement les premiers snapshots sans attendre :

sanoid --cron --verbose

Vérification et monitoring
#

Lister les snapshots créés
#

# Tous les snapshots Sanoid
zfs list -t snapshot | grep autosnap

# Snapshots récents
zfs list -t snapshot | grep autosnap | tail -20

# Snapshots pour un dataset spécifique
zfs list -t snapshot rpool/ROOT/pve-1

Espace utilisé par les snapshots
#

zfs list -o space rpool/ROOT/pve-1
zfs list -o space rpool/tank/documents
zfs list -o space rpool/tank/pgbackweb

Logs du service
#

# Logs en temps réel
journalctl -u sanoid.service -f

# Logs du jour
journalctl -u sanoid.service --since today

# Dernières exécutions
journalctl -u sanoid.service -n 50

Utilisation pratique
#

Restaurer après une mauvaise mise à jour
#

Si une mise à jour de Proxmox pose problème, vous pouvez facilement revenir en arrière :

# 1. Lister les snapshots disponibles
zfs list -t snapshot rpool/ROOT/pve-1

# 2. Rollback vers un snapshot
# ⚠️ ATTENTION : vous perdrez toutes les modifications après ce snapshot
zfs rollback rpool/ROOT/pve-1@autosnap_2025-11-20_00:00:00_daily

# 3. Redémarrer
reboot

Snapshot manuel avant une intervention critique
#

Avant une mise à jour majeure, créez un snapshot manuel :

# Créer un snapshot avec la date
zfs snapshot rpool/ROOT/pve-1@pre-update-$(date +%Y%m%d)

# Lister vos snapshots manuels
zfs list -t snapshot | grep pre-update

Récupérer un fichier supprimé
#

Les snapshots ZFS sont accessibles dans .zfs/snapshot/ :

# Accéder aux snapshots d'un dataset
cd /mnt/tank/documents/.zfs/snapshot/

# Lister les snapshots disponibles
ls -la

# Copier un fichier depuis un snapshot
cp autosnap_2025-11-20_00:00:00_daily/mon-fichier.pdf ~/

Bonnes pratiques
#

Ajuster la rétention selon vos besoins
#

La configuration proposée est volontairement conservatrice. Vous pouvez l’ajuster :

Pour plus de protection système :

daily = 30      # 1 mois de snapshots quotidiens
monthly = 6     # 6 mois d'historique

Pour économiser l’espace disque :

daily = 7       # 1 semaine seulement
monthly = 0     # Pas de rétention mensuelle

Surveiller l’espace disque
#

Les snapshots ZFS consomment de l’espace uniquement pour les données modifiées. Surveillez régulièrement :

zpool list
zfs list -o space

Combiner avec d’autres outils
#

Sanoid est complémentaire à :

  • Proxmox Backup Server : pour les VMs/conteneurs
  • Syncoid : pour la réplication vers un autre serveur
  • Backups hors site : pour une protection contre les sinistres

Dépannage
#

Erreur “Argument isn’t numeric”
#

Si vous obtenez cette erreur, vérifiez que vous n’avez pas de commentaires en fin de ligne dans votre configuration. Les commentaires doivent être sur des lignes séparées.

Incorrect :

daily = 14    # commentaire ici

Correct :

# Commentaire sur sa propre ligne
daily = 14

Les snapshots ne sont pas créés
#

Vérifiez que :

  1. Le timer est bien actif : systemctl status sanoid.timer
  2. La configuration est valide : sanoid --cron --readonly --verbose
  3. Les logs pour identifier l’erreur : journalctl -u sanoid.service

Supprimer tous les snapshots Sanoid
#

Si vous voulez repartir de zéro :

# ⚠️ ATTENTION : supprime TOUS les snapshots autosnap
zfs list -t snapshot | grep autosnap | awk '{print $1}' | xargs -n1 zfs destroy

Conclusion
#

Sanoid est un outil simple et efficace pour automatiser la gestion de vos snapshots ZFS. Avec la configuration proposée, vous bénéficiez :

  • D’une protection du système Proxmox contre les mises à jour ratées
  • D’un historique de vos données personnelles
  • D’une gestion automatique sans intervention manuelle
  • D’une consommation d’espace maîtrisée

N’hésitez pas à adapter la configuration à vos besoins spécifiques. L’important est de tester régulièrement vos procédures de restauration pour être prêt le jour où vous en aurez vraiment besoin !

Ressources
#

Perfect Homelab Annexe - Cet article fait partie d'une série.
Partie 1: Cet article

Articles connexes