:::: MENU ::::

My NAS endgame (for now)

This is a draft for a video I plan on making for my (future) c3n.ro YouTube channel. It is raw but some people might want the content regardless.

I’ll introduce myself later, let me introduce my NAS!
[ Black screen, no music, fast cut]
[ Cut to video of a storage datacenter with loud fast music ]
[ Cut to black, silent ]
Yeah no this isn’t it, I doubt my neighbors would be fine with not having power due to all of it being redirected to my local storage for 10 bit anime.

[ Cut to slow moving exterior image of NZXT case, then video of harddrives, cooler ]
This is it! It’s my former PC that got upgraded to an i7-7700k CPU, 16 gigs of RAM and 12TB of storage in the form of 8 2TB hard drives.

[ Cut to video of computer monitor showing andromeda.lan ]
This isn’t even the best part, the best part is the software making this thing amazing – unRAID! Despite being a huge fan and supporter of FOSS solutions, unRaid isn’t actually free OR open source. It is however – pretty darn good at what it’s supposed to do and quite a bit more than that.

[ Cut to video recorded via OBS browsing their website ]
Visiting their website you’ll find out they describe the software as a “powerful, easy-to-use operating system for self-hosted servers and network-attached storage”, which basically hits home as to the actual capabilities of Unraid as well as my experience in the past year.

[ Cut to mixed video showing the hard drives then andromeda.lan page ]
Let’s talk about the setup for a bit, we’re running 8 2TB drives which in my array (we’ll go over that a bit later) setup translates to 8TB of reliable protected storage. We’re also running a Samsung 980 500GB SSD NVME drive for caching whatever we’re putting on shared storage before it being written to the actual protected array (this is unsafe, anything on the SSD could be lost if it doesn’t get written to the array).

Note that we don’t actually install unRAID on any of the data drives, unRAID runs off of a USB drive which is risky but also can be quickly re-flashed in case of failure, unRAID offers a cloud-backup that you can download and flash whenever s**t hits the fan – I’ve went through that process and it went excellent.

On the power side, I’m running a normal PSU but I’ve added an APC Smart-UPS 750 as a backup as well as a graceful shutdown enforcer, Unraid is based on Slackware so in the end you can install whatever you might need – and apcupsd is a thing so I’ve done a few settings to be sure that the array stops in a nice manner if power ever goes down for longer than a few minutes.

So about the array that I keep mentioning – Unraid has a few modes in which it can operate storage:

The first one is the Parity Protected Array, based on XFS or BTRFS this is the easiest way forward and the most recommended one for most people. It’s easily expandable, has great power efficiency and logically it’s the easiest to understand – you’ll have a maximum of two parity drives and a maximum of 28 data drives, and the rule goes that each parity drive will protect you against one data drive gone bad. Having a dual parity setup like mine should ensure me that I can sustain a failure of one drive with no data loss, then rebuild a new drive while still being protected for another failure. This is one of the reasons for which I already have a physically installed drive in the NAS that’s not actually wired up yet, whenever a drive will fail it’ll be a very quick and easy fix.

The second one would be going for a full ZFS pool – we’re not doing parity drives here and are fully relying on ZFS’s magic which unlike the Parity Drive setup includes self-healing for bitrot, data compression and snapshots apart from the higher throughput inherent with using all of the disks at once. The downsides of this setup (which might not apply to everyone) are mainly the increased resource usage (magic is resource intensive), ZFS is dark magic aaaaand the website does list increased power consumtion which I guess is to be expected when bringing into mind the higher throughput I’ve talked about a bit earlier.

The last one is a mix of sorts in which we don’t actually use a pool but use ZFS drives in an array, but we’re not getting the best of both worlds – self-healing is not available, throughput is the same as a normal parity-drive setup and the resource usage is still up. We’re winning on power consumption and we do get data compression and snapshots.

I’d still recommend going for the parity drive setup as it’s the simplest one and KISS is one of the best things in life, especially when dealing with your life’s savings in terms of data.

The thing is, and a lot of people skip this step – you’re not protected against catastrophic damage (think fires, water damage, lightning straight into a HDD), this is where off-sites come into play, and as the responsible SRE I am – I’m using Backblaze (in a not fully sanctioned way) to constantly backup everything into the cloud so I can sleep sound knowing my data is actually safe regardless of the status of the drives or the server whole.

Let’s move to actual usage – this is a NAS so of course we can create users and shares, with all the combinations you can imagine in regards to permissions, protocols and so on. I’m using quite a few devices for my day-to-day, a Macbook, a Linux laptop (and quite a few other linux devices) and a Windows workstation, all of them should and do have no-fuss access to any of my private shares as well as the public ones.

In terms of speed I think I’m more limited by the networking setup, cable quality and other things since I can pretty much get 110MB/s on the regular between the Windows box and unRAID. I am planning however on letting my autism get the best of me and moving towards a fiber setup between unRAID and a switch, despite it not helping that much given the limitations of HDD speeds – but we’re futureproofing here people.

The unRAID UI is pretty nice, you can get a very good glance at the health of the whole system by going to the homepage, and you’ve also got a nice albeit basic alert view to see if anything went wrong while you were away. One of the things you can see here is a parity check, this is how unRAID ensures your drives are in perfect order, this should ideally run at least once a month but if you’re very mindful of reads/writes on your HDDs you can go with higher values, as long as you’re green you’re good.

Still at a glance away is your usage of storage as well as a S.M.A.R.T. drive status table, for that extra peace of mind seeing more green thumbs up.

Now onto the cooler parts than reliable storage – this thing can run Docker! and not as in “you can drop into a terminal” despite that also being an option, but it treats Docker containers as a first class citizen as well with their “Apps” which is a nice word for XML templates that define the location of Docker images as well as settings for them.

I’m currently running quite a few Docker containers, Jellyfin for my media needs, PostgreSQL, PiHole, Backblaze, Calibre and so on. The best part is – if something isn’t already made into an “app”, you can enable Developer Mode easily and create your own like I did for the OpenWebRX software that I use with my RTL_TCP/RTL_SDRs. You get all of the normal Docker goodies like mounts, network ports, different networks alltogether and so on. You do get a nice prompt to update them all at once whenever needed so it’s taking off quite a bit of work from maintaining a large number of self-hosted apps. One cool part of Docker support is that you can actually pin CPUs for specific apps, so if you’ve got a known resource hog for example you can ensure you’ll always dedicate a certain amount of cores to it.

The Apps tab will have a ton of interesting containers you could run, and I’ve found quite a bit of software I did not know about that I ended up using in my day-to-day.

There’s also a plugin system, plugins mostly add to the unRAID experience, you can easily tell that since my added plugins are unbalanced (which helps balance drives, this is usually done automatically but I screwed up on my initial setup), prometheus because metrics as well as a plugin that will display temperatures on the homepage.

So yeah, this is my current NAS setup and I’m really happy with it one year later, I’ve had so many drives from many years ago that were just waiting to die and now everything is safe and protected and I’m all the calmer for it, if you want to find out more I suggest you give Unraid.net a visit and check them out if you’re in the market for a NAS with an inclination to tinkering (but just a bit).

(Expect this sort of videos on this channel, I’ve got 100 tech-related interests and I decided I’ll make videos of them all.)


So, what do you think ?