In this post on the saga of my Netgear ReadyNAS 526X, I’m going to cover the two main platforms that I’m exploring: Unraid and TrueNAS. Previously, I already noted that I was able to boot Unraid, but now that my data is uploaded to the cloud, I’m doing actual experimentation.
Running From USB
The ReadyNAS 526X doesn’t have the ability to run internal storage. This means my options for booting are going to be USB. I’m not sure if it will boot from one of the 3.5" bays, but if I’m interpretting information correctly, it will not.
There’s various options for USB storage available to me. In fact, I have access to the 3 main types just with stuff I have already.
- Mechanical external hard drive
- Portable SSD
- USB thumb drive (flash)
Mechanical drives are probably going to provide the most longevity while portable SSDs are going to provide the best performance. USB thumb drives are kinda the worst of both worlds, with poor performance and poor longevity.
You see, flash storage has a pretty limited number of writes before it starts failing. SSDs get around this with wear leveling algorithms. They will have a rating called TerraBytes Written (TBW) and if you pay attention, you’ll notice this value tends to be higher as you go up in capacity. USB thumb drives tend to not have any such wear leveling, and due to the tendency towards lower capacity, even if they did, the TBW would be very low.
There’s actually a fourth option, which is the one that I’m working with at the moment for TrueNAS: MicroSD card. This is similar to running a USB thumb drive (in fact, I’ve taken apart thumb drives to find MicroSD cards inside, glued in place) so there’s similar problems. However, there exists a class of cards designed for use in cameras with continuous recording. Samsung and SanDisk both make such “high endurance” cards. They’re not super fast, but they’re designed to run for years at a time, though maybe not as a server boot drive.
As the name implies, this platform just takes a bunch of disks and manages them independently, with their own magic sauce for parity so that you get some level of redundancy. This does two things for the end user:
- The user doesn’t need to understand RAID
- The user can use any mix of drives without regard to size matching, performance, etc
This makes it a great platform for someone who just wants to throw a bunch of drives into a computer and expose it to their home network or run VMs from it.
The thing that really attracted me to it, though, was the fact that it’s designed to run from a USB flash drive. It loads itself into memory and runs there in order to minimize writes to the USB drive so that it doesn’t wear out quickly.
Unraid is a pretty intuitive system. I was using link aggregation under ReadyNAS OS with the LACP protocol to help with network performance, and this is supported by Unraid. Getting everything up and running took some effort as it’s a new environment for me, but I managed to get my shares configured and start loading data.
However, I decided I don’t really like it’s…unraid-ness.
It balances data at the file level. So in my 6 bay NAS box, I have 5 drives where it might store data (6th drive is parity), and I gain no advantage distributing data across all of the drives.
Here’s the thing: I’m a user that understands RAID, and I have a box with 6 drives that match in size and performance. This is an environment designed for a RAID deployment. And being as technical as I am, I’m looking at Unraid’s redundancy implementation and I don’t really trust it. It’s probably fine, but I don’t like it.
Let me make this clear, though: Unraid is not a bad platform. It was super easy to get up and running and I can see far less technical people getting something out of it. I think it’s great, in that regard.
TrueNAS is a platform that is built as an enterprise grade NAS appliance OS and implements actual software RAID via ZFS. Initially, I avoided it because when searching for something to boot and run from USB, the response from iX people is to not do it because it’ll kill your flash drive. There have been several people requesting this, and the answer is no, the priority is to support enterprise deployments and the way they do things.
Which is fair, I guess. That’s their bread and butter, after all.
The other problem I had with it is that it does the traditional install from your installation media kind of thing, like most operating systems. So I can write the image downloaded from their site to a USB drive, and I can boot to it, but it’s not going to be useful. I need a running system on that drive, not the installer.
So I used my old laptop. I had it boot the installer and install onto the MicroSD card I planned to use.
This actually works!
So TrueNAS has a couple of options for platforms:
- TrueNAS CORE
- TrueNAS SCALE
CORE is based on FreeBSD and is their most supported platform. SCALE is built on Linux and I believe it came about primarily for Docker support.
I can say that TrueNAS is pretty much what I’m looking for. ZFS RAID-Z is a good replacement for what ReadyNAS OS did. And much like Unraid, I had to spend some effort figuring things out.
The only real major problem I’ve encountered is getting link aggregation working. I was able to get Failover link aggregation going in CORE, but nothing seems to work in SCALE. I’ve run into other bugs in SCALE as well that also weren’t small, like the release candidate not being able to install onto the MicroSD card (fixed by RELEASE).
Netgear did quite a bit of customization of the hardware platform and their Linux environment. It appears they did their fan control pretty much entirely in the OS through their customizations. As a result, these other platforms don’t seem to be able to control the fan.
On boot, the fan spins up, then eventually spins down to a zero state, so it’s not spinning at all. The CPU has just a heatsink. There’s no air flowing through the chassis. This is causing the drives to run a bit warm, as well as the CPU.
Thankfully, not to critical temperatures. For now. The environment around it is still fairly cool.
This has, actually, prompted me to avoid FreeBSD for now. I’m much less familiar with it and based on my searching around, there’s no easy way to deal with this.
For Linux, though, you just need to load a module: it87. Once this is loaded, fan control starts working.