--- title: "SnapRAID & MergerFS Storage Setup" domain: linux category: storage tags: [snapraid, mergerfs, storage, parity, raid, majorraid] status: published created: 2026-04-02 updated: 2026-04-02 --- # SnapRAID & MergerFS Storage Setup ## Problem Managing a collection of mismatched hard drives as a single pool while maintaining data redundancy (parity) without the overhead or risk of a traditional RAID 5/6 array. ## Solution A combination of **MergerFS** for pooling and **SnapRAID** for parity. This is ideal for "mostly static" media storage (like MajorRAID) where files aren't changing every second. ### 1. Concepts - **MergerFS:** A FUSE-based union filesystem. It takes multiple drives/folders and presents them as a single mount point. It does NOT provide redundancy. - **SnapRAID:** A backup/parity tool for disk arrays. It creates parity information on a dedicated drive. It is NOT real-time (you must run `snapraid sync`). ### 2. Implementation Strategy 1. **Clean the Pool:** Use `rmlint` to clear duplicates and reclaim space. 2. **Identify the Parity Drive:** Choose your largest drive (or one equal to the largest data drive) to hold the parity information. 3. **Configure MergerFS:** Pool the data drives into a single mount point. 4. **Configure SnapRAID:** Point SnapRAID to the data drives and the parity drive. ### 3. MergerFS Config (/etc/fstab) On majorhome, the pool mounts three ext4 drives to `/majorRAID`: ```fstab /mnt/disk1:/mnt/disk2:/mnt/disk3 /majorRAID fuse.mergerfs defaults,allow_other,cache.files=off,use_ino,category.create=mfs,minfreespace=20G,fsname=mergerfsPool 0 0 ``` Adjust the source paths and mount point to match your setup. Each `/mnt/diskN` is an individual ext4 drive mounted separately — MergerFS unions them into the single `/majorRAID` path. ### 4. SnapRAID Config (/etc/snapraid.conf) > **Note:** SnapRAID is not yet active on majorhome — a 12TB parity drive purchase is deferred. The config below is the planned setup. ```conf # Parity file location parity /mnt/parity/snapraid.parity # Data drives content /var/snapraid/snapraid.content content /mnt/disk1/.snapraid.content content /mnt/disk2/.snapraid.content content /mnt/disk3/.snapraid.content data d1 /mnt/disk1/ data d2 /mnt/disk2/ data d3 /mnt/disk3/ # Exclusions exclude /lost+found/ exclude /tmp/ exclude .DS_Store ``` --- ## Maintenance ### SnapRAID Sync Run this daily (via cron) or after adding large amounts of data: ```bash snapraid sync ``` ### SnapRAID Scrub Run this weekly to check for bitrot: ```bash snapraid scrub ``` ---