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 :
- SnapRAID jamais synchronisé
- Configuration
/etc/snapraid.confvalide ✅ - Aucun sync exécuté depuis installation ❌
-
Aucune protection active
-
Partition Parity Invalide ⚠️ BLOCAGE MAJEUR
- Partition de 286KB au lieu de 931GB
- Ancien partitionnement macOS (HFS+, VFAT)
- SnapRAID ne peut PAS fonctionner
-
Action requise : Reformatage complet
/dev/sde -
Disques Data Vides
- Architecture prévue pour Phase 3 (migration archives)
-
En attente migration ~1TB archives depuis disque externe
-
Médias Non Protégés
- 1.2TB films sur
/mnt/media-bulk(sdc2) - Partition séparée hors SnapRAID
- 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
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/
3. Premier Sync SnapRAID
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 :
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 :
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)
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)
Output :
Si sync hebdomadaire : Typiquement 100-300 fichiers modifiés (nouveaux téléchargements).
Sync (Calculer/Mettre à Jour Parity)
Premier sync (initialisation) :
Durée premier sync :
Sync incrémental (après modifications) :
Durée sync incrémental :
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 :
Vérifier fichiers spécifiques :
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 :
Action : Récupérer fichier corrompu via snapraid fix.
Smart (Vérifier SMART Disques)
Output :
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)
3. Sync parity (hebdomadaire recommandé)
4. Scrub vérification (mensuel recommandé)
Opérations Courantes
Vérifier état rapide :
Tester intégrité fichier :
Forcer recalcul parity complet :
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 :
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 :
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 :
Diagnostic :
# Vérifier SMART disque
smartctl -a /dev/sdc | grep -i error
# Si erreurs matérielles: Remplacer disque + récupérer
Récupération :
Voir SnapRAID Recovery pour procédure complète.
Ressources
- SnapRAID Official Site - Documentation officielle
- SnapRAID Manual - Guide complet
- SnapRAID FAQ - Questions fréquentes
- GitHub Repository - Code source
- Perfect Media Server - SnapRAID - Guide communautaire
Voir Aussi
- SnapRAID Recovery - Procédures récupération après panne
- SnapRAID Automation - Cron jobs et monitoring
- MergerFS - Pool stockage unifié (fonctionne avec SnapRAID)
- Storage Overview - Architecture stockage complète
Dernière mise à jour : 27 janvier 2026