UNRAID: The Flexible NAS Solution
Network attached storage devices are awesome.
The ability to have a secondary device to store data allows individuals and organizations to have increased flexibility, resilience, and controlled access to their data. It's something you don’t appreciate until you try it for the first time, get used to it, then when you move and don't have a NAS set up anymore, it sucks. Leaving your data on scattered hard disks creates a significant risk of data loss, it's not a good practice.
The problem (for me) is that hard drives tend to be expensive, even for refurbished drives. This used to be a bottleneck as I had various hard drives from over the years laying around, and I was unable to use them in a traditional RAID format with something like TrueNAS. Don't get me wrong, TrueNAS is great, but it really likes the same specifications of hard drives which is out of my budget. Same with Synology, it's a hefty investment of around $600 or so for a device that doesn't include disks.
UNRAID was relatively easy to set up with some spare drives I had laying around, and with six refurbished 6 TB drives I bought from ServerMonkey.com.
With this, I had acquired a solid supply of parity and data drives.
For my other hardware, I used spare parts I had laying around. There are no EPYC processors, 4090 graphics cards, or Sound Blaster cards in my PC case I got in my freshman year of high school. My current specs are listed below.
Motherboard: ASRock H77M
CPU: Intel Core i5-3570 @ 3.4 GHz
Memory: 16 GB DDR3
This post won't be getting into the specifics of how UNRAID functions, that information can be found here. https://docs.unraid.net/unraid-os/overview/what-is-unraid/. I definitely don't use this system to its full potential, there's a lot of options and configurations that can match various use cases.
I am using UNRAID solely as a SMB file share with 3 data disks, and 2 parity disks.
There are various systems within UNRAID that use SMART to check for disk errors as well, it's important to set alerts for this so you don't run the risk of losing any data. There are also overviews under the dashboard tab that give us an indication on the status of all the current drives.
The only real qualm I have with UNRAID are the slow writing speeds to the data disks. This is required as part of the design of the calculation of parity drives, and can be alleviated with cache disks, but the data needs to get written and calculated sometime.
As a rule of thumb, you are going to be looking at these speeds for writing.
Without a cache drive: Unraid 4.5.3 - average 20-30 MB/s, peak reported 40 MB/s*
With a cache drive: Unraid 4.5.3 - average 50-60 MB/s, peak reported 101 MB/s*
Source: https://docs.unraid.net/legacy/FAQ/cache-disk/
Sure enough, here's a screenshot of some writing I was doing to my array.
These are not incredible mind bending statistics by any means, but it's usable for me. If speed is a concern for you, another NAS solution might be a better option. Reading data is as fast as your hardware / networking allows.
That aside though, there are also virtualization and containerization options available. You can host any number of applications, websites, automations, services, and whatever else you can think of. If you find it difficult to think of something to self-host, this website can give you endless options.
https://selfh.st/apps/
Additionally, there are a plethora of community applications that can be downloaded natively on the UNRAID server.
I am partial to two different plugins, Tailscale and Unassigned Devices.
Tailscale, on a very brief level, allows me to access my UNRAID server remotely over the internet without the requirement of port forwarding. It's free for simple home lab uses, which is a win for me.
Unassigned devices is also a useful tool that I use to manipulate disks that I don't want to add to the array. My use case for this is backing up my whole array to another hard disk that I store at a different location as a backup. My array isn't huge, so it all fits on one hard disk.
This rsync command is what I use to do this, it's nothing special, but hey.
rsync -avh --no-links /mnt/user/<UnraidShare>/ /mnt/disks/<BackupDisk>
Ultimately, I like using UNRAID for my use case. If I had bundles of cash to spend recklessly I would be making a sweet TrueNAS setup with endless terabytes of data, but that's not something I have at the moment.