Tutorial6 min read

MergerFS + SnapRAID: The Smart Way to Expand Media Storage Without Breaking the Bank

Drive prices are up. Here's how to pool mismatched old disks into a single media volume with mergerFS and protect it with SnapRAID — no RAID controller needed.

By Seeding.Top Team|

MergerFS + SnapRAID: The Smart Way to Expand Media Storage Without Breaking the Bank

If you've priced hard drives recently, you already know: storage costs have climbed sharply. For seedbox users and media server operators who need to keep expanding capacity, paying double what you paid 18 months ago for new drives is a painful reality.

But there's a smarter path — one that experienced self-hosters have been quietly using for years. MergerFS + SnapRAID lets you pool mismatched drives of different sizes and ages into a single unified volume, add parity protection against drive failure, and do it all without a RAID controller, without reformatting, and without throwing away drives that are "too small to bother with."

This guide walks you through exactly how to set it up.


Why Not Just Use RAID?

Traditional RAID has real problems for media hoarding use cases:

  • All drives must be the same size (or you waste capacity)
  • Expanding the array is painful and often requires a full rebuild
  • A failed RAID rebuild on aging drives can cascade into total data loss
  • You lose existing data when adding a drive to most RAID setups

MergerFS + SnapRAID solves every one of these. You can mix a 500 GB drive with a 4 TB drive with an 8 TB drive. You can add a new drive any time. Your existing data stays exactly where it is.


What Each Tool Does

ToolRole
mergerFSPresents multiple mount points as a single unified filesystem
SnapRAIDCalculates parity data so you can recover from a single drive failure

They're complementary, not competing. MergerFS handles the "one big pool" problem. SnapRAID handles the "what if a drive dies" problem.

Important caveat: SnapRAID is not real-time RAID. Parity is calculated on a schedule (typically nightly). Files written after your last snapraid sync are not protected. This makes it ideal for media libraries (mostly static data) and less ideal for active torrent data. Plan accordingly.


Installation

On Debian/Ubuntu (which covers most seedbox VMs and home servers):

# mergerFS — grab the latest .deb from GitHub releases
# https://github.com/trapexit/mergerfs/releases
# As of writing, current stable is 2.40.2

wget https://github.com/trapexit/mergerfs/releases/download/2.40.2/mergerfs_2.40.2.debian-bookworm_amd64.deb
sudo dpkg -i mergerfs_2.40.2.debian-bookworm_amd64.deb

# SnapRAID — available in most distro repos, but often outdated
# Build from source or use the PPA for latest (12.3 as of writing)
sudo apt install snapraid

Check versions after install:

mergerfs --version
snapraid --version

Step 1: Mount Your Individual Drives

Assume you have three data drives and one parity drive. Get their UUIDs:

lsblk -f

Add them to /etc/fstab using UUIDs (never device names like /dev/sdb — those change):

UUID=aaaa-1111  /mnt/disk1  ext4  defaults,nofail  0  2
UUID=bbbb-2222  /mnt/disk2  ext4  defaults,nofail  0  2
UUID=cccc-3333  /mnt/disk3  ext4  defaults,nofail  0  2
UUID=dddd-4444  /mnt/parity ext4  defaults,nofail  0  2

Mount them all:

sudo mount -a

Step 2: Create the MergerFS Pool

Add this to /etc/fstab:

/mnt/disk1:/mnt/disk2:/mnt/disk3  /mnt/media  fuse.mergerfs  defaults,nonempty,allow_other,use_ino,cache.files=off,moveonenospc=true,dropcacheonclose=true,minfreespace=20G,fsname=mergerfs  0  0

Key options explained:

  • moveonenospc=true — when a disk fills up, mergerFS automatically moves new writes to another disk
  • minfreespace=20G — never fill a disk below 20 GB free (prevents write failures)
  • cache.files=off — recommended for media server use; avoids double-caching with Plex/Jellyfin
  • use_ino — makes inode numbers consistent across the pool (important for some apps)

Mount it:

sudo mount /mnt/media

Point Plex, Jellyfin, or your torrent client's completed downloads folder at /mnt/media. Done — it looks like one big drive.


Step 3: Configure SnapRAID

Edit /etc/snapraid.conf:

# Parity file — on your dedicated parity drive
parity /mnt/parity/snapraid.parity

# Data drives to protect
data d1 /mnt/disk1
data d2 /mnt/disk2
data d3 /mnt/disk3

# Exclude temp/system files
exclude *.tmp
exclude *.!ut
exclude /lost+found/
exclude .Trash-*/

Parity drive sizing: Your parity drive must be at least as large as your biggest single data drive. It does not need to equal the total of all drives.

Run your first sync (this will take a while on a full disk):

sudo snapraid sync

Check status anytime:

sudo snapraid status

Step 4: Automate Nightly Sync

The most popular automation script is snapraid-btrfs-runner — despite the name, it works fine with ext4. But a simpler option for most users is a basic cron job with the community snapraid-runner Python script:

# Install snapraid-runner
git clone https://github.com/Chronial/snapraid-runner.git /opt/snapraid-runner

# Edit config
cp /opt/snapraid-runner/snapraid-runner.conf.example /opt/snapraid-runner/snapraid-runner.conf
nano /opt/snapraid-runner/snapraid-runner.conf

Add to crontab (sudo crontab -e):

0 3 * * * python3 /opt/snapraid-runner/snapraid-runner.py -c /opt/snapraid-runner/snapraid-runner.conf

This runs a sync at 3 AM daily, scrubs a percentage of data for silent corruption detection, and can email you a report.


Recovering from a Drive Failure

If /mnt/disk2 dies, replace it, format the new drive, mount it at /mnt/disk2, then:

sudo snapraid fix -d d2

SnapRAID reconstructs all data from parity. Then run snapraid sync to update parity for the repaired drive.


What This Looks Like for a Seedbox/Media Setup

A practical layout for a home server running Jellyfin + qBittorrent:

/mnt/disk1        ← 4 TB, completed downloads + media
/mnt/disk2        ← 2 TB, older media archive
/mnt/disk3        ← 500 GB, overflow
/mnt/parity       ← 4 TB, SnapRAID parity (matches largest data disk)
/mnt/media        ← mergerFS pool (all three data disks unified)

qBittorrent save path:     /mnt/media/downloads/
Jellyfin library path:     /mnt/media/movies/ and /mnt/media/tv/

Sonarr/Radarr hardlink from downloads to media folders within the same mergerFS pool — hardlinks work correctly within a single mergerFS mount.


The Bottom Line

If you're staring at a pile of old 500 GB laptop drives or mismatched desktop drives and wondering if they're worth deploying — they are. MergerFS costs nothing, SnapRAID costs nothing, and together they give you a flexible, expandable media pool with real protection against drive failure.

It won't replace a proper backup (SnapRAID is not a backup — it only protects against drive failure, not accidental deletion or ransomware). But for a media library that's sourced from a seedbox and rebuilt from scratch if the worst happens, this stack is genuinely excellent. Set it up once, automate the sync, and stop worrying about which drive has space.

#mergerfs#snapraid#storage#self-hosting#media server#jellyfin#plex#seedbox