Building upon a solid Linux core, Unraid is a network-attached storage (NAS) product that excels at serving media, particularly handy for home users. It allows growth by adding mismatched hard-drives over time. Docker containers offer all the required media services.
As this storage device is not a gaming PC, you’re better to run Unraid on many CPU cores with lots of drives, neither of which need to be blazing fast. In my case, I had a spare tower with dual CPUs (12 cores with 24 threads).
To allow for many Docker containers and a few VMs, its got 48 GB of ECC RAM:
I added a UPS to deal with brown-outs and black-outs, monitored by Unraid:
It also has an old Quadro GPU, but that’s another story.
Unraid itself runs in RAM, booting off a USB thumb-drive. After updating the BIOS settings to ignore disks in the boot order, I was able to access the Unraid GUI via web browser. With a 30 day trial, I started to test with a new 8 TB shucked drive for parity, a single 2 TB hard disk, and a small 240 GB SSD for cache.
As testing progressed, I continued to add hard-drives, pre-clearing them first, then rolling them into the array:
As shown above, I’m now up to 27 TB in the array, with data redundancy provided by the 8 TB parity disk. The oldest drive is a WD Green 1 TB from 2008!
While Unraid excels at growing a heterogenous storage array over time, these mismatched disks will not handle writes as fast as a homogenous array of fast ZFS disks on FreeNAS for example. To make up for this, Unraid uses a cache pool of SSD drives. I started with a single Kingston SSD, but added a 2nd to make a redundant pair.
As a storage array, Unraid comes with a few file shares already setup:
- appdata: resides solely on the Cache and is used by Docker containers for databases etc.
- domains: also on the fast Cache, holds the disks of virtual machines
- isos: good spot for holding ISO images
- system: used by Unraid itself, though most of Unraid runs in RAM for speed.
I added a couple more:
- data: My general storage share, which is set to write to Cache for speed, but Mover pushes changes to the full sized array overnight. Available via both SMB and NFS to my network.
- backups: Used to hold Urbackup data, writes slowly to the array as needed. Not shared via SMB/NFS to prevent ransomware from encrypting my backups.
Unraid makes it really easy to run and update all sorts of Docker containers. For basic media server, I’m following this guide:
Overall, I’m really impressed with Unraid. It’s been on my list to try for years, but I kept putting it off. We’ll see how it holds up in the coming months and years, but for the price, it seems to offer a lot of value. It’s done an excellent job of taking over as my media server. I hope to explore additional projects my adding more containers and VMs in the future.
More in this series…
- Unraid GPU Passthru - what not to do