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
| Tool | Role |
|---|---|
| mergerFS | Presents multiple mount points as a single unified filesystem |
| SnapRAID | Calculates 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 diskminfreespace=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/Jellyfinuse_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.