MergerFS - Pool de Stockage Unifié
MergerFS est un système de fichiers FUSE qui fusionne plusieurs disques indépendants en un seul point de montage unifié, sans RAID ni striping.
Informations
| Paramètre | Valeur |
|---|---|
| Version | 2.40.2 |
| Type | FUSE (Filesystem in Userspace) |
| Point de montage | /mnt/storage |
| Disques sources | /mnt/disk1, /mnt/disk2 (extensible /mnt/disk*) |
| Capacité totale actuelle | ~1.8TB (2x 916GB) |
| Politique création | mfs (Most Free Space) |
Concept et Architecture
Principe de Fonctionnement
MergerFS n'est PAS :
- ❌ Un RAID (pas de striping, parity, ou mirroring)
- ❌ Un système de fichiers distribué (chaque fichier réside sur UN disque)
- ❌ Une solution de backup ou protection données
MergerFS EST :
- ✅ Un proxy transparent unifiant plusieurs mount points
- ✅ Un gestionnaire intelligent de placement fichiers
- ✅ Un système permettant d'ajouter des disques sans reformatage
- ✅ Une couche logique au-dessus de systèmes de fichiers existants
Schéma Architecture
graph TB
Apps[Applications<br/>Jellyfin, Sonarr, Radarr, SABnzbd]
Apps --> |Accèdent à| Storage[/mnt/storage<br/>MergerFS v2.40.2]
Storage --> |Policy: mfs| Disk1[/mnt/disk1<br/>WD Blue 1TB<br/>487GB utilisés]
Storage --> |moveonenospc| Disk2[/mnt/disk2<br/>WD Red 1TB<br/>321GB utilisés]
Storage -.-> |Futurs disques| DiskN[/mnt/disk*]
Disk1 --> Dev1[/dev/sdc1<br/>ext4 916GB]
Disk2 --> Dev2[/dev/sdd1<br/>ext4 916GB]
style Storage fill:#e1f5ff
style Disk1 fill:#fff4e6
style Disk2 fill:#fff4e6
Vue Unifiée Transparente
Ce que voient les applications :
drwxr-xr-x 12 1000 1000 4096 Jan 25 14:30 media/
drwxr-xr-x 3 1000 1000 4096 Jan 26 02:15 downloads/
drwxr-xr-x 5 root root 4096 Dec 10 18:00 documents/
drwxr-xr-x 4 root root 4096 Jan 15 09:00 backups/
Réalité physique sous-jacente :
# disk1 contient: media/ downloads/ documents/
# disk2 contient: media/ backups/ photos/ music/
# Fusion transparente par MergerFS
Conséquence importante :
- Fichier
media/movie.mkvexiste sur disk1 OU disk2, pas les deux - Si disk1 défaille: perte fichiers disk1 uniquement
- Si disk2 défaille: perte fichiers disk2 uniquement
- D'où nécessité SnapRAID pour protection → Voir SnapRAID
Configuration Active
Installation
# Version depuis GitHub (plus récente que Debian repos)
wget https://github.com/trapexit/mergerfs/releases/download/2.40.2/mergerfs_2.40.2.debian-bookworm_amd64.deb
dpkg -i mergerfs_2.40.2.debian-bookworm_amd64.deb
Vérification version :
Configuration fstab
Fichier : /etc/fstab
/mnt/disk* /mnt/storage fuse.mergerfs allow_other,use_ino,cache.files=auto-full,moveonenospc=true,category.create=mfs,dropcacheonclose=true,minfreespace=50G 0 0
Paramètres clés :
| Option | Description | Raison |
|---|---|---|
/mnt/disk* |
Wildcard incluant tous disques | Ajout disque automatique sans modifier config |
allow_other |
Autorise accès non-root | LXC containers (user 1000:1000) peuvent lire/écrire |
use_ino |
Utilise inode numbers sources | Cohérence hardlinks, compatibilité rsync |
cache.files=auto-full |
Cache métadonnées + data | +30-50% performance opérations répétées |
moveonenospc=true |
Déplace fichier si disque plein | Évite erreurs ENOSPC en production |
category.create=mfs |
Most Free Space | Création sur disque avec plus d'espace libre |
dropcacheonclose=true |
Libère cache au fermeture | Évite saturation RAM (32GB système) |
minfreespace=50G |
Refuse création si <50GB | Marge sécurité (films 4K ~40GB max) |
Montage Actuel
1:2 on /mnt/storage type fuse.mergerfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
Vérification capacité :
Utilisation Pratique
Création de Fichiers (Policy mfs)
Algorithme Most Free Space :
# État actuel disques
df -h | grep disk
# /dev/sdc1 916G 487G 429G 54% /mnt/disk1
# /dev/sdd1 916G 321G 595G 36% /mnt/disk2
# Création fichier 15GB (SABnzbd download)
dd if=/dev/zero of=/mnt/storage/media/movie.mkv bs=1M count=15000
# MergerFS choisit disk2 (595GB > 429GB libre)
ls -la /mnt/disk2/media/movie.mkv # ✓ Existe
ls -la /mnt/disk1/media/movie.mkv # ✗ N'existe pas
Vérification placement :
# Trouver disque physique d'un fichier
getfattr -n user.mergerfs.srcmounts /mnt/storage/media/movie.mkv
# Retourne: /mnt/disk2
Lecture Transparente
Lecture uniforme quel que soit disque source :
# Jellyfin lit fichier (peu importe disk1 ou disk2)
cat /mnt/storage/media/movie.mkv | head -c 1M
# MergerFS redirige vers bon disque automatiquement
# Performances identiques à lecture directe disque
Gestion Espace Plein
Scénario : disk1 presque plein, download 50GB
# disk1: 40GB libres (< minfreespace 50GB)
# disk2: 595GB libres (> minfreespace 50GB)
# Téléchargement SABnzbd dans /mnt/storage/downloads/
# MergerFS ignore disk1 automatiquement
# Fichier créé sur disk2 ✓
Si tous disques <50GB :
Opérations Courantes
Vérifier État Pool
# Capacité globale
df -h /mnt/storage
# État chaque disque
df -h | grep disk
# Nombre fichiers total
find /mnt/storage -type f | wc -l
Rechercher Fichiers par Disque
# Lister tous fichiers sur disk1
find /mnt/disk1 -type f
# Lister tous fichiers sur disk2
find /mnt/disk2 -type f
# Compter fichiers par disque
echo "Disk1: $(find /mnt/disk1 -type f | wc -l)"
echo "Disk2: $(find /mnt/disk2 -type f | wc -l)"
Rééquilibrage Manuel (optionnel)
Si déséquilibre trop important (ex: disk1 90%, disk2 30%) :
# Déplacer manuellement gros fichiers peu utilisés
rsync -avh --remove-source-files /mnt/disk1/oldbackup/ /mnt/disk2/oldbackup/
# Ou utiliser mergerfs.balance (outil communautaire)
# https://github.com/trapexit/mergerfs-tools
Note : Policy mfs prévient déséquilibre à long terme (nouveaux fichiers vont sur disque le plus vide).
Monitoring
Commandes Rapides
# Capacité temps réel
watch -n 5 'df -h | grep -E "disk|storage"'
# Charge I/O
iostat -x 5 | grep sd[cd]
# Performance MergerFS
top | grep mergerfs # CPU usage
Alertes Recommandées
Seuils critiques :
- ⚠️ Capacité totale >85% : Planifier ajout disque
- ⚠️ Un disque >90% : Déplacer fichiers manuellement
- 🚨 Tous disques <100GB : Ajout disque urgent
Script monitoring simple :
#!/bin/bash
# /usr/local/bin/check-storage.sh
THRESHOLD=85
USAGE=$(df -h /mnt/storage | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt $THRESHOLD ]; then
echo "WARNING: Storage at ${USAGE}% (threshold ${THRESHOLD}%)"
# Envoyer notification (mail, ntfy, etc.)
fi
Troubleshooting
Problème : Permission Denied
Symptôme : Applications dans LXC ne peuvent pas écrire
Cause : Option allow_other absente ou permissions filesystem
Solution :
# Vérifier option active
mount | grep mergerfs | grep allow_other
# Doit contenir "allow_other"
# Si absent, remonter avec option
umount /mnt/storage
mount /mnt/storage
# Vérifier permissions disques sources
ls -ld /mnt/disk1 /mnt/disk2
# Doit être accessible par user applicatif (ex: 1000:1000)
Problème : Fichier Introuvable
Symptôme : Fichier visible dans /mnt/storage mais cat échoue
Cause : Disque source démonté ou défaillant
Diagnostic :
# Identifier disque source
getfattr -n user.mergerfs.srcmounts /mnt/storage/problematic.mkv
# Vérifier si disque monté
mount | grep disk1
mount | grep disk2
# Vérifier santé disque
smartctl -H /dev/sdc
smartctl -H /dev/sdd
Solution : Remonter disque ou récupérer via SnapRAID si défaillant.
Problème : Performance Lente
Symptôme : Vitesse lecture/écriture <50 MB/s
Causes possibles :
- Disque défaillant : Vérifier SMART status
- Cache désactivé : Vérifier option
cache.files=auto-full - CPU saturé (rare) : Top | grep mergerfs >50%
Diagnostic :
# Test vitesse directe disque
dd if=/mnt/disk1/testfile of=/dev/null bs=1M count=1000
# Doit être >100 MB/s pour HDD 7200rpm
# Test vitesse via MergerFS
dd if=/mnt/storage/testfile of=/dev/null bs=1M count=1000
# Overhead doit être <5%
Ressources
- MergerFS GitHub - Repository officiel
- MergerFS Wiki - Documentation complète
- MergerFS Tools - Scripts communautaires (balance, dup, etc.)
- Reddit r/DataHoarder - Communauté utilisateurs MergerFS
- Perfect Media Server - Guide installation
Voir Aussi
- SnapRAID - Protection parity des données MergerFS
- MergerFS Advanced - Policies détaillées, optimisations performances
- MergerFS Maintenance - Ajout/retrait disques, rebalancing
- Storage Overview - Architecture stockage globale
- Storage Comparison - MergerFS vs ZFS vs RAID
Dernière mise à jour : 27 janvier 2026