<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Snapraid on rHomelab</title><link>https://rhomelab.com/tags/snapraid/</link><description>Recent content in Snapraid on rHomelab</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Thu, 17 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://rhomelab.com/tags/snapraid/index.xml" rel="self" type="application/rss+xml"/><item><title>SnapRAID and mergerfs: Pooling Mismatched Drives Without Real RAID</title><link>https://rhomelab.com/data-hoarding/snapraid-mergerfs-guide/</link><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid>https://rhomelab.com/data-hoarding/snapraid-mergerfs-guide/</guid><description>SnapRAID and mergerfs let you pool a shelf of mismatched drives into one filesystem with parity protection, without RAID&amp;#39;s same-size-drive requirement. Here&amp;#39;s what each tool actually does, how they fit together, and where this setup stops making sense.</description><content:encoded><![CDATA[<p>Most data hoarders don&rsquo;t start with a matched set of drives. They start with whatever was on sale, whatever got shucked (see the <a href="/data-hoarding/hard-drive-shucking-guide/">hard drive shucking guide</a> if that&rsquo;s new to you), and whatever got inherited from an old build, added one or two at a time over a couple of years. The <a href="/data-hoarding/raid-redundancy-guide/">RAID redundancy guide</a> on this site, and ZFS along with it, both assume something that mismatched-drive hoarders usually don&rsquo;t have: drives that are the same size, ideally bought in a batch, treated as one block device. Buy a 4TB, then an 8TB eighteen months later, then a random 6TB that came out of a NAS somebody was tossing, and a real RAID array either wastes most of the bigger drives down to the smallest one&rsquo;s capacity, or just won&rsquo;t build at all.</p>
<p>SnapRAID and mergerfs are the answer the DIY side of the data hoarding community reaches for instead. They&rsquo;re two separate, unrelated tools that happen to solve complementary halves of the same problem, and understanding that they&rsquo;re separate is the first thing to get straight before touching either one.</p>
<h2 id="two-different-jobs-not-one-tool">Two different jobs, not one tool</h2>
<p><strong>mergerfs</strong> is a union filesystem. It takes several separate drives, each with their own independent filesystem (ext4, XFS, whatever), and presents them to the rest of the system as one merged mount point. Copy a file into <code>/mnt/pool/movies/</code>, and mergerfs decides which underlying drive actually gets the write based on a policy you configure (most free space, least used, and so on). Nothing is striped or split. Every file lives whole on exactly one physical drive. That last part matters a lot for the recovery story later.</p>
<p><strong>SnapRAID</strong> is a parity tool. It doesn&rsquo;t pool anything and doesn&rsquo;t know or care that mergerfs exists. Point it at a set of data drives and one or more dedicated parity drives, and on a schedule you control, it computes parity data across the pool and writes it to the parity drive(s). If a data drive dies, SnapRAID uses the parity data plus whatever&rsquo;s left on the surviving drives to reconstruct the dead drive&rsquo;s contents onto a replacement.</p>
<p>Run them together and you get what looks, from the outside, like a single large redundant volume: one mount point (from mergerfs) that survives a drive failure (thanks to SnapRAID), built entirely out of mismatched drives you bought at different times for different prices. That&rsquo;s the whole appeal, and it&rsquo;s a real one for exactly the audience this site is written for.</p>
<h2 id="why-this-isnt-raid-and-the-tradeoff-that-follows-from-it">Why this isn&rsquo;t RAID, and the tradeoff that follows from it</h2>
<p>Real RAID (and ZFS) computes and writes parity synchronously, on every write, in real time. The moment data hits disk, it&rsquo;s protected. SnapRAID computes parity on a schedule, usually a nightly cron job (<code>snapraid sync</code>), which means there&rsquo;s a window between &ldquo;I wrote a new file&rdquo; and &ldquo;that file is actually covered by parity.&rdquo; Anything written since the last sync and lost before the next one, an accidental deletion, a drive dying mid-session, isn&rsquo;t recoverable from parity. It&rsquo;s the difference between a smoke detector that&rsquo;s always listening and one you have to manually arm once a day.</p>
<p>This is a deliberate, acceptable tradeoff for the workload SnapRAID is built for: large, mostly-static files that get written once and then sit there. Media libraries are the canonical case (this pairs naturally with the folder conventions in the <a href="/data-hoarding/media-library-folder-structure/">media library structure guide</a> and feeds straight into the <a href="/data-hoarding/arr-stack-sonarr-radarr-prowlarr/">*arr stack</a> if that&rsquo;s how content lands on the pool). It is a bad fit for anything with constant small writes: databases, VM disk images, a Nextcloud data directory syncing every few minutes, an actively-recording security camera NVR. Point SnapRAID at that kind of workload and you&rsquo;ll either sync constantly (defeating the point, since sync itself is I/O-heavy and reads every changed block) or accept a rolling window of genuinely unprotected data. If most of what you&rsquo;re storing changes constantly, this isn&rsquo;t the setup for you, look at ZFS or a real RAID array instead.</p>
<h2 id="mismatched-drives-but-not-unlimited-mismatch">Mismatched drives, but not unlimited mismatch</h2>
<p>SnapRAID&rsquo;s one hard requirement: every parity drive must be at least as large as the single largest data drive in the array. Data drives themselves can be any size, any mix of manufacturers, any mix of ages, that&rsquo;s the entire point. But if your biggest data drive is 16TB, your parity drive needs to be 16TB or larger, because parity data for the largest possible file set has to fit on it. People who add a new, bigger drive to the array every year or two eventually hit the point where their old parity drive is now smaller than the newest data drive, and have to upgrade parity storage to keep pace. Plan for that when you buy your first parity drive: buying one a size class above your current largest data drive buys headroom before you&rsquo;re forced into an unplanned parity upgrade.</p>
<p>You can run more than one parity drive (SnapRAID supports up to six), which buys protection against multiple simultaneous drive failures, the same idea as RAID 6&rsquo;s dual parity, at the cost of a second (or third) drive doing nothing but holding parity data. Most home setups run single parity and accept the risk of a second drive dying during a rebuild window, the same bet most RAID 5 users make.</p>
<h2 id="what-sync-and-scrub-actually-do">What sync and scrub actually do</h2>
<p>Day to day, this setup runs on two commands, both meant to be cron jobs, not something you run by hand each time:</p>
<p><strong><code>snapraid sync</code></strong> compares the current state of the data drives against SnapRAID&rsquo;s last-known state, recomputes parity for anything that changed, and writes the updated parity plus a content file (a manifest of what&rsquo;s where, stored redundantly across drives so losing one drive doesn&rsquo;t lose the map). This is the step that closes the &ldquo;just wrote a file&rdquo; protection gap, run it nightly at minimum, more often if you can tolerate the I/O.</p>
<p><strong><code>snapraid scrub</code></strong> is the corruption-detection half, conceptually similar to the ZFS scrub covered in the <a href="/data-hoarding/bit-rot-checksums-scrubbing/">bit rot guide</a>, except SnapRAID does it by re-reading a percentage of the array each run and checking data against stored hashes, rather than continuously like ZFS&rsquo;s checksumming does on every read. Run it on a rolling schedule (SnapRAID&rsquo;s own defaults scrub roughly the oldest 10% of data each run) so the whole array gets checked periodically without one giant read pass hammering every drive at once.</p>
<p>Neither command touches mergerfs. The pooling layer and the parity layer are genuinely independent, which is also why recovery is straightforward to reason about: because every file lives whole on one physical drive (mergerfs never splits or stripes a file across drives), losing one drive only ever costs you the files that were on that specific drive, and SnapRAID reconstructs exactly those files onto a replacement. You&rsquo;re never staring at a fully unreadable pool the way a failed RAID 0 or a badly degraded RAID 5 can leave you.</p>
<h2 id="setting-it-up-the-practical-shape-of-it">Setting it up, the practical shape of it</h2>
<p>The full step-by-step is beyond one article, but the shape of a working setup looks like this:</p>
<ol>
<li>Format each data drive and the parity drive(s) independently, normal filesystems (most people use XFS or ext4), no special RAID-aware formatting needed since none of these drives are actually in a RAID.</li>
<li>Mount each drive somewhere predictable (<code>/mnt/disk1</code>, <code>/mnt/disk2</code>, <code>/mnt/parity</code>, that convention).</li>
<li>Configure <code>snapraid.conf</code> pointing at each data disk and parity disk, plus exclusion patterns for things you don&rsquo;t want covered (temp files, thumbnail caches, anything mergerfs itself might generate).</li>
<li>Run an initial <code>snapraid sync</code> to build the first full parity set, expect this to take hours on a large existing library since it has to hash and parity-compute everything, not just new files.</li>
<li>Configure mergerfs to pool the same data disks (not the parity disk, parity is never part of the pooled mount) at a single mount point, with a branch policy that suits how you write data, most people run <code>mfs</code> (most free space) or <code>epmfs</code> (existing path, most free space) so new files land on whichever drive has room rather than always hammering one disk.</li>
<li>Point your applications (Plex, Jellyfin, the *arr stack, whatever&rsquo;s writing to the pool) at the mergerfs mount, not at the individual drives directly.</li>
<li>Cron both <code>snapraid sync</code> and <code>snapraid scrub</code> on a schedule and actually check the logs, a parity setup nobody monitors is a parity setup that silently stops protecting anything the day a cron job starts failing.</li>
</ol>
<h2 id="where-truenas-or-unraid-still-make-more-sense">Where TrueNAS or Unraid still make more sense</h2>
<p>The <a href="/data-hoarding/truenas-vs-unraid-vs-diy/">TrueNAS vs Unraid vs bare Linux guide</a> on this site already covers the OS-level decision, but it&rsquo;s worth being direct about where SnapRAID plus mergerfs specifically fits versus those platforms. Unraid&rsquo;s built-in array does something conceptually similar (mismatched drives, per-file storage, parity protection) with a polished UI and none of the manual config file editing, at the cost of its license fee. TrueNAS with ZFS gives up the mismatched-drive flexibility entirely in exchange for real-time protection, continuous checksumming on every read, and no sync-window gap at all. SnapRAID and mergerfs sit in between: free, genuinely flexible on drive sizes, and honest about trading real-time protection for that flexibility. If you&rsquo;re the kind of hoarder who buys whatever drive is cheapest per TB this month rather than planning a matched pool in advance, and your data is mostly write-once media rather than constantly-mutating working files, this is the setup built for exactly that habit.</p>
]]></content:encoded></item></channel></rss>