Skip to content

SnapRAID - Protection Parity des Données

SnapRAID est un système de protection par parity pour stockage multi-disques, conçu pour les données principalement statiques (médias, archives).

Informations

Paramètre Valeur
Version 12.x (affichage bugé)
Parity disks 1 (tolère perte 1 disque)
Data disks 2 (disk1: quasi-vide, disk2: quasi-vide)
Block size 256 KB
Sync frequency ⚠️ Jamais synchronisé depuis installation
Protection ❌ Aucune (parity non calculée, partition invalide)

État Actuel du Système

🚨 Statut : NON OPÉRATIONNEL

Problèmes critiques identifiés :

  1. SnapRAID jamais synchronisé
    snapraid status
    # Files: 0 | Used: 0 GB | Parity: 0 bytes
    
  2. Configuration /etc/snapraid.conf valide ✅
  3. Aucun sync exécuté depuis installation ❌
  4. Aucune protection active

  5. Partition Parity Invalide ⚠️ BLOCAGE MAJEUR

    lsblk | grep sde1
    # sde1  286K  part  /mnt/parity  ext4
    

  6. Partition de 286KB au lieu de 931GB
  7. Ancien partitionnement macOS (HFS+, VFAT)
  8. SnapRAID ne peut PAS fonctionner
  9. Action requise : Reformatage complet /dev/sde

  10. Disques Data Vides

    du -sh /mnt/disk1 /mnt/disk2
    # /mnt/disk1: 16K (seulement lost+found)
    # /mnt/disk2: 52K (dossiers vides + .snapraid.content)
    

  11. Architecture prévue pour Phase 3 (migration archives)
  12. En attente migration ~1TB archives depuis disque externe

  13. Médias Non Protégés

  14. 1.2TB films sur /mnt/media-bulk (sdc2)
  15. Partition séparée hors SnapRAID
  16. Choix assumé : Médias re-téléchargeables

Correctifs Requis

1. Corriger Partition Parity (⚠️ URGENT)

# Backup éventuelles données
umount /mnt/parity

# Recréer table partitions
parted /dev/sde mklabel gpt
parted /dev/sde mkpart primary ext4 0% 100%

# Formater
mkfs.ext4 -L snapraid-parity /dev/sde1

# Monter
mount /dev/sde1 /mnt/parity

# Mettre à jour fstab
echo "UUID=$(blkid -s UUID -o value /dev/sde1) /mnt/parity ext4 defaults 0 2" >> /etc/fstab
Durée estimée : 30-60 minutes

2. Migrer Archives (Phase 3)

# Connecter disque externe HGST Touro 1TB
mount /dev/sdX1 /mnt/backup-external

# Copier vers pool protégé
rsync -av --progress /mnt/backup-external/ /mnt/storage/archives/
Durée estimée : 2-4 heures (1TB USB 3.0)

3. Premier Sync SnapRAID

snapraid sync
Durée estimée : 2-3 heures (selon volume données)

Concept et Fonctionnement

Qu'est-ce que SnapRAID ?

SnapRAID N'est PAS :

  • ❌ Un RAID temps réel (pas de protection instantanée)
  • ❌ Un système de fichiers (fonctionne au-dessus d'ext4/XFS/etc.)
  • ❌ Un backup (pas de copie externe)
  • ❌ Adapté aux bases de données (nécessite sync manuel)

SnapRAID EST :

  • ✅ Un calculateur de parity pour tolérer pannes disques
  • ✅ Un vérificateur d'intégrité (checksums md5/sha256)
  • ✅ Un outil de récupération après défaillance matérielle
  • ✅ Optimisé pour données statiques (médias, documents)

Principe Parity (XOR)

graph TB
  D1["<span style='color: #333;'>disk1: Block A1 = 010</span>"]
  D2["<span style='color: #333;'>disk2: Block B1 = 101</span>"]
  D1 --> XOR[XOR Operation]
  D2 --> XOR
  XOR --> P["<span style='color: #333;'>Parity: P1 = 111</span>"]

  style D1 fill:#e1f5ff
  style D2 fill:#e1f5ff
  style P fill:#fff4e6

Récupération si disk1 défaillant :

A1 (perdu) = P1 XOR B1 = 111 XOR 101 = 010 ✓ RÉCUPÉRÉ

Limites parity 1-disque :

  • ✅ Tolère perte 1 disque data
  • ❌ Perte 2+ disques = données irrécupérables
  • ❌ Perte disque parity seul = pas de protection (recalcul nécessaire)

SnapRAID vs RAID5

Critère SnapRAID RAID5 Hardware
Protection parity ✅ 1 disque ✅ 1 disque
Temps calcul Sync manuel/cron Temps réel (write)
Performance écriture = disque natif Pénalité 20-30%
Données statiques ✅ Optimal ⚠️ Overkill
Données dynamiques ❌ Sync lag ✅ Temps réel
Vérification intégrité ✅ scrub checksums ⚠️ scrub parity only
Ajout disques ✅ Immédiat + sync ❌ Rebuild total
Consommation énergie ✅ Spin-down OK ❌ Tous actifs

Pourquoi SnapRAID pour ce serveur :

  • ✅ Médias = données statiques
  • ✅ Sync hebdomadaire suffit
  • ✅ Économie énergie (spin-down)
  • ✅ Performance écriture native
  • ✅ Combine avec MergerFS

Configuration Active

Installation

# Depuis sources GitHub
git clone https://github.com/amadvance/snapraid.git
cd snapraid
./configure
make
make install

# Vérifier version
snapraid --version

Fichier Configuration

Emplacement : /etc/snapraid.conf

# /etc/snapraid.conf

# Parity file (disque dédié ou partition séparée)
parity /mnt/parity/snapraid.parity

# Content files (3 emplacements minimum recommandé)
content /var/snapraid/snapraid.content
content /mnt/disk1/.snapraid.content
content /mnt/disk2/.snapraid.content

# Data disks
data d1 /mnt/disk1
data d2 /mnt/disk2

# Exclusions
exclude *.tmp
exclude *.!qB
exclude *.part
exclude /downloads/incomplete/
exclude /downloads/*/.incomplete/
exclude .Trash-*/
exclude .DS_Store
exclude Thumbs.db
exclude .AppleDouble
exclude ._*

# Options
block_size 256
autosave 500

Paramètres Clés

Parity disk :

# Vérifier point de montage
df -h | grep parity
# /dev/sde1  286K  ... /mnt/parity (⚠️ PARTITION INVALIDE)

# État actuel:
# ❌ Partition de 286KB seulement (devrait être 931GB)
# ❌ Ancien partitionnement macOS sur disque WD Green
# ⚠️ REFORMATAGE REQUIS AVANT UTILISATION

# Après correction:
# Exigence: Parity ≥ plus gros disque data
# Parity 931GB > disk1 916GB ✓
# Parity 931GB > disk2 916GB ✓

Content files (métadonnées) :

  • /var/snapraid/snapraid.content : SSD système (rapide)
  • /mnt/disk1/.snapraid.content : Disque data 1 (redondance)
  • /mnt/disk2/.snapraid.content : Disque data 2 (redondance)

Raison 3 emplacements : Protection métadonnées si 1-2 disques défaillent.

Data disks :

  • d1 → /mnt/disk1 : WD Blue 1TB (quasi-vide, attend migration)
  • d2 → /mnt/disk2 : WD Red 1TB (quasi-vide, attend migration)

État actuel :

du -sh /mnt/disk1 /mnt/disk2
# disk1: 16K (seulement lost+found)
# disk2: 52K (dossiers structure Phase 3 créés)

Architecture prévue (Phase 3) : - Migration ~1TB archives depuis disque externe HGST - Backup Google Drive → /mnt/storage/google-drive-backup/ - Backup Google Photos → /mnt/storage/google-photos-backup/ - Archives personnelles → /mnt/storage/archives/

Ajout futur disk3 :

data d3 /mnt/disk3
content /mnt/disk3/.snapraid.content

Puis snapraid sync pour calculer parity.

Exclusions :

  • Fichiers temporaires : *.tmp, *.part, *.!qB
  • Répertoires téléchargements incomplets
  • Métadonnées système (Trash, DS_Store, Thumbs.db)

block_size 256 KB :

  • Plus petit (128): Récupération plus précise
  • Plus grand (512): Sync plus rapide
  • 256 KB: Compromis optimal médias

autosave 500 GB :

Sauvegarde état tous les 500 GB → Si interruption, reprise au checkpoint (pas restart complet).

Commandes Essentielles

Status (État Array)

snapraid status

Output typique :

   Files Fragmented Excess  Wasted  Used    Free  Use Name
   22000       50      120    4.2   487.0  429.0  54% d1
   15000       30       80    2.8   321.0  595.0  36% d2
 --------------------------------------------------------------------------
   37000       80      200    7.0   808.0 1024.0  44%

Métriques :

  • Files : Nombre fichiers protégés
  • Used : Espace utilisé disque
  • Fragmented Files : Fichiers modifiés depuis dernier sync
  • Excess Fragments : Overhead fragmentation

Diff (Changements Depuis Dernier Sync)

snapraid diff

Output :

1245 files added
120 files removed
45 files modified

Si sync hebdomadaire : Typiquement 100-300 fichiers modifiés (nouveaux téléchargements).

Sync (Calculer/Mettre à Jour Parity)

Premier sync (initialisation) :

# Dry-run (simulation)
snapraid sync --plan

# Vérifier plan OK, puis lancer:
snapraid sync

Durée premier sync :

Données: 808 GB
Vitesse: 90-120 MB/s
Durée: 2-2.5 heures

Sync incrémental (après modifications) :

snapraid sync

Durée sync incrémental :

Modifications: 15 GB nouveaux fichiers
Vitesse: 100 MB/s
Durée: 2-3 minutes

Sortie sync :

Hashing...
 50%, 100 GB, 2800 files, 105 MB/s
Parity computing...
 50%, 196 GB, 45 MB/s, 20 minutes remaining
Everything OK
Sync completed in 2h15m.

Scrub (Vérification Intégrité)

Vérifier 10% données aléatoires :

snapraid scrub -p 10

Vérifier fichiers spécifiques :

snapraid scrub -p 100 -o 0
# -p 100: 100% données
# -o 0: Offset 0 (début array)

Sortie scrub :

Scrubbing...
 50%, 400 GB, 18000 files, 95 MB/s
 100%, 808 GB, 37000 files
Scrub completed. No errors found.

Si erreurs détectées :

WARNING: Error in file /mnt/disk1/media/movie.mkv
Checksum mismatch (silent corruption detected)

Action : Récupérer fichier corrompu via snapraid fix.

Smart (Vérifier SMART Disques)

snapraid smart

Output :

Temp Power  Error Rehash State   Disk Model      Serial
  34C    17      0     0                                  /dev/sdc
  38C    12      0     0                                  /dev/sdd

Alertes :

  • Error > 0 : Secteurs réalloués (disque défaillant)
  • Temp > 50°C : Surchauffe (améliorer refroidissement)

Utilisation Quotidienne

Workflow Ajout Contenus

1. Télécharger nouveaux médias (SABnzbd, Sonarr, Radarr)

# Fichiers arrivent dans /mnt/storage/downloads/
# MergerFS place sur disk avec plus d'espace (policy mfs)

2. Vérifier changements (optionnel)

snapraid diff
# 45 files added (15.2 GB)

3. Sync parity (hebdomadaire recommandé)

snapraid sync
# Durée: 2-3 minutes (sync incrémental)

4. Scrub vérification (mensuel recommandé)

snapraid scrub -p 10
# Vérifie 10% données aléatoires (~5min)

Opérations Courantes

Vérifier état rapide :

snapraid status

Tester intégrité fichier :

# Vérifier checksum fichier spécifique
snapraid list /mnt/disk1/media/movie.mkv

Forcer recalcul parity complet :

# Si doute intégrité parity
snapraid sync --force-full
# Durée: Identique premier sync (2-3h)

Monitoring

Commandes Vérification

# État global
snapraid status

# Changements depuis dernier sync
snapraid diff

# SMART disques
snapraid smart

# Historique sync
cat /var/log/snapraid.log

Indicateurs Santé

Métrique Valeur Saine Seuil Warning Action
Sync age <7 jours >14 jours Lancer sync
Scrub age <30 jours >90 jours Lancer scrub
Fragmented files <5% >10% Acceptable (nature SnapRAID)
SMART errors 0 >0 Remplacer disque
Temp disques <45°C >50°C Améliorer refroidissement

Troubleshooting

Problème : Sync Échoue (ENOSPC)

Symptôme :

Error: No space left on parity disk

Cause : Disque parity trop petit (< plus gros disque data)

Solution :

# Vérifier espace
df -h | grep parity

# Si insuffisant: Remplacer par disque plus gros
# Ou supprimer données inutiles disques data

Problème : Content Files Corrompus

Symptôme :

Error: Unable to load state from /var/snapraid/snapraid.content

Solution :

# Utiliser content file alternatif
snapraid status --conf /mnt/disk1/.snapraid.content

# Si OK, copier vers /var
cp /mnt/disk1/.snapraid.content /var/snapraid/snapraid.content

Problème : Checksum Mismatch (Corruption)

Symptôme :

WARNING: Checksum error in /mnt/disk1/media/movie.mkv

Diagnostic :

# Vérifier SMART disque
smartctl -a /dev/sdc | grep -i error

# Si erreurs matérielles: Remplacer disque + récupérer

Récupération :

# Restaurer fichier depuis parity
snapraid fix -f /mnt/disk1/media/movie.mkv

Voir SnapRAID Recovery pour procédure complète.

Ressources

Voir Aussi


Dernière mise à jour : 27 janvier 2026