Some time ago, I was trying to figure out a good way to handle data redundancy across a bunch of mismatched drives, I wanted something simple: use all the drives together like they were one big pool, while still having some kind of protection in case one of them failed. After digging around and trying to figure out what other people were doing, I landed on a combination that ended up working out for me.

Read the other parts:
Part 2: MergerFS + SnapRaid: Installation and Setup
Part 3: Automating SnapRAID Sync Tasks

Part 1: What Exactly am I doing Here?

I wanted to run a NAS at home but just couldn’t get behind the traditional options, TrueNAS or UnRaid just didn’t do it for me, both great options just not what i wanted plus UnRaid is not free, ZimaOS has some bugs to still be worked out although is a promising option (also not free anymore if you want to have more than 4 drives), OMV? nah, everytime i try it I cannot figure it or get to like it, hard pass on that, HexOS? I am not forking $199 to run TrueNAS with a different skin, so what did I do? I went into the rabbit hole of MergerFS + SnapRAID for this set up.

Before I go deep down this rabbit hole let’s get some things out of the way.

What exactly is SnapRAID? It is an alternative to Raid.

  • It creates parity information (IT IS NOT RAID).
  • If one drive fails, SnapRAID can rebuild the lost data using the parity.
  • It works best for files that don’t change often (movies, photos, backups) or cold storage.
  • It does not run in real time.
  • Parity sync needs to be manually triggered (I will automate it).

What about MergerFS? MergerFS is a piece of software to create storage pools.

  • It’s a union filesystem that combines many drives into one big folder.
  • It does not move or modify the data, it just presents multiple drives as one big pool.

They work well together, MergerFS gives you the option to create a big storage pool without the need for all your drives to be of the same size, you can even use disks with existing data in them regardles of filesystem, while SnapRaid provides protection against failures allowing for data recovery, this is as some call it a JBOD box with some advantages (or disadvantages depending on your point of view), althoug parity is not calculated in real time.

Remember: MergerFS and SnapRaid are not Raid and RAID IS NOT A BACKUP!

This will be my main storage at home for my media collection, photos, documents and the sort, the whole package, I can access the NAS via a wireguard connection when away, I travel for work so remote access is essential for troubleshooting when needed.

The essential stuff is also backed up elsewhere for the infamous 3:2:1 strategy goal, essential meaning just family photos and videos and documents, for this I trust Apple and iCloud (you do you and trust who you want), everything else is repleceable to me.

The Software Setup:

Since I alreay run Proxmox for my virtualization needs at home(2 nodes actually), I went with the obvious choice of running a Virtual Machine for this, purist on the internet told me not to, that a NAS should be it’s own device, but this is what i have at hand and works for me, I am not debating if this is right or not, this is what i had available at the time and it works for me, the OS of choice is Ubuntu Server 24.04.4 with a minimal install, although this setup works with other distros, that is my choice.

For the NAS functionality MergersFS gives me th storage pooling ability I needed and SnapRaid gives me the parity protection I wanted, I use samba and NFS for sharing the storage accross my network.

I wanted to have somewhat of a management UI, I went with cockpit for this, I also installed Cockpit Identities to manage user access to the shares and Cockpit File Sharing to setup my folder Shares.

I installed docker in the Virtual Machine and deployed a few containers, FileBrowser for, well, file browsing, syncthing to keep folders in sync between the NAS and a VPS, this very blog runs in that VPS, and others which are not relevant to this setup.

The Hardware Setup:

  • Virtual Machine with 4 Cores and 8 GB of RAM installed in a 128GB SSD passed trough via SATA controller.
  • 2 14TB HDDs for DATA, bulk and/or cold stograge.
  • 1 16TB HDD for parity
  • 1 2TB and 2 1TB SSD drives for a fast data pool that works as a sort of cache.
  • Random Amazon purchased 4 ports SATA PCI expansion Card with ASM1064 ATA Controller passed trough to the VM as a RAW PCI device, 3 HDDs connected to it.
  • Motherboard SATA controller passed trough to VM, SSDs connected to it, 3 for storage and 1 for the OS.
  • 10GB nic port passed trough to the VM for a fast uplink.

Not the best or optimal setup according to some, but a setup that works, I have been running it for 3yrs now with no issues. (well… once i got it working that is).

TIP: use the largest (or larger) drive(s) for parity.

In Part 2: MergerFS + SnapRaid: Installation and Setup I will go more in details in the setup.

References: