Skip to content

MergerFS - Configuration Avancée

Options et optimisations avancées MergerFS.

Policies Avancées

Create Policies

mfs (Most Free Space) : Actuellement utilisé

# Créer sur disque avec plus d'espace
category.create=mfs

lfs (Least Free Space) : Remplir séquentiellement

category.create=lfs
# Remplit disk1 complètement avant utiliser disk2

mspmfs (Most Shared Path MFS) : Par dossier

category.create=mspmfs
# /movies sur disk1 → nouveaux films disk1
# /tv sur disk2 → nouvelles séries disk2

epmfs (Existing Path MFS) : Garder ensemble

category.create=epmfs:mfs
# Si /media/movies existe disk1, nouveau film → disk1
# Sinon → mfs (most free space)

Modification Runtime

# Changer policy temporairement
setfattr -n user.mergerfs.create -v lfs /mnt/storage

# Permanent : éditer /etc/fstab
nano /etc/fstab
# category.create=lfs

Options Performance

Cache Configuration

# /etc/fstab ligne MergerFS
cache.files=auto-full
cache.writeback=true
cache.statfs=true
cache.attr=300
cache.entry=300

Explications :

  • cache.files=auto-full : Cache complet métadonnées
  • cache.writeback=true : Write-back cache (performance++)
  • cache.statfs=true : Cache df stats
  • cache.attr/entry=300 : TTL cache 5 minutes

Direct I/O

# Pour grandes vidéos streaming
direct_io
# Bypass page cache, réduit RAM usage

Async Read

async_read=true
# Lectures asynchrones parallèles

Gestion Attributs Étendus

Lister attributs MergerFS :

getfattr -d -m user.mergerfs /mnt/storage

Attributs disponibles :

Attribut Description
user.mergerfs.srcmounts Liste disques sources
user.mergerfs.create Policy création actuelle
user.mergerfs.search Policy recherche
user.mergerfs.action Policy action (rename, etc)
user.mergerfs.cache Contrôle cache

Modifier attribut :

setfattr -n user.mergerfs.minfreespace -v 20G /mnt/storage

Scénarios Avancés

Pool Hiérarchique

# Tier 1: SSD rapides
/mnt/ssd1:/mnt/ssd2 /mnt/fast fuse.mergerfs category.create=lus

# Tier 2: HDD lents
/mnt/hdd1:/mnt/hdd2 /mnt/slow fuse.mergerfs category.create=mfs

# Pool global
/mnt/fast:/mnt/slow /mnt/storage fuse.mergerfs category.create=ff

Exclusion Disques

# Exclure disk2 si <100GB
minfreespace=100G

Move on No Space

moveonenospc=true
# Si écriture échoue (disk plein), déplace fichier

Monitoring Détaillé

Stats par disque :

for disk in /mnt/disk*; do
  echo "=== $disk ==="
  df -h $disk
  du -sh $disk/*
done

Performance I/O :

iostat -x 1 5 | grep -E "sd[c-e]"

Cache hit rate :

# Nécessite compilation avec --enable-xattr
getfattr -n user.mergerfs.cache.files.hits /mnt/storage
getfattr -n user.mergerfs.cache.files.misses /mnt/storage

Optimisations Spécifiques

Pour Media Streaming

# Jellyfin, Plex
cache.files=auto-full
async_read=true
direct_io
splice_read=true
splice_write=true

Pour NAS Général

# Fichiers bureautique, photos
cache.files=auto-full
cache.writeback=true
moveonenospc=true
category.create=epmfs:mfs

Pour Backups

# Gros fichiers séquentiels
direct_io
async_read=false
cache.files=off
category.create=lfs

Troubleshooting Avancé

Debug Logging

# Activer debug
fusermount -u /mnt/storage
mergerfs -o debug /mnt/disk* /mnt/storage

# Logs
journalctl -f | grep mergerfs

Performance Issues

# Vérifier cache
getfattr -n user.mergerfs.cache.files /mnt/storage

# Désactiver cache test
setfattr -n user.mergerfs.cache.files -v off /mnt/storage

# Tester performance
dd if=/dev/zero of=/mnt/storage/test bs=1M count=1000

Ressources


Dernière mise à jour : 27 janvier 2026