FreeNAS limitations

It’s been about a month since I re-setup my FreeNAS box. The first iteration was really just a test deployment since the chassis it was originally installed in, only supported two HDDs.

While this particular chassis of mine supports up to 8 drives, the motherboard only has built in support for 4 and I’ll likely need to find a SAS HBA and perhaps some power connectors to hook up additional drives. A SATA card will do normally for SATA drives but I actually have an enterprise SAS SSD that could be used to help with the performance.

I’ve discovered some limitations with FreeNAS. While it is a good platform for home use, it is making a foray into the enterprise space. However without support for the following features I don’t know how well it will do.

Erasure Coding

Instead of striping the RAID parity across physical volumes, erasure coding divides the PVs into chunks and stripes the parity across chunks. The main benefit to this is RAID rebuild times are cut down significantly, esp with the large capacity SATA drives these days, as the empty spaces are skipped in the RAID rebuild. Without this, the re-silver process for FreeNAS can take hours/days depending on the size of the physical volumes. It is because of this, the internet forums are littered with RAIDZ2 (RAID6) or die comments.

This hasn’t been a concern for major vendors like HPE/Lenovo/Dell for close to, if not over, a decade.

Online RAID expansion & Dynamic RAID Migration

Some small NAS deployments may have started with 2 large capacity drives, setup in a RAID 1 mirror for redundancy. As storage requirements grow, it makes sense to add drives to the array and maybe even change to a RAID 5 or RAID 6 for better efficiency. (You only lose 1 drive for RAID5 for parity, and 2 for RAID6, but RAID1/10 you lose half of the capacity of your drives). Without the ability to dynamically change the RAID type after the pool has been set up, the only way around this is to backup the data, rebuild the pool, and restore the data. That, or migrate/replicate the data to a new pool with the new RAID already setup. While inconvenient, this is not likely to be an everyday challenge as you’re not likely to change RAID types often.

As mentioned above, storage requirements are growing constantly. Without any support to add drives to an existing RAID array, FreeNAS requires you to increase your storage a vdev at a time. Meaning if you had 4x 4TB drives in a RAID6, you’re going to need 4x 4TB in another RAID 6, and put them into a RAID 60 to grow the storage pool. You’re not going to be able to expand it into a 5x or 6x or even 8x 4TB RAID 6.

Both of these are features I’ve seen in the enterprise space literally 2 decades ago.

Workaround?

The only real workaround is to plan ahead so you don’t get yourself into a situation where you need to grow your pool or change the RAID type. Some people recommend throwing as many drives as you can into a RAIDZ2 and pray you won’t run out. Others suggest building 4x drive vdevs as a time and adding them to the pool in a stripe and hope you don’t have two drive failures in one vdev.

The good news is that FreeNAS is actually based on ZFS and I’ve seen documentation pointing towards support for dRAID but reviews have been spotty? Still need to do some more research and reading into this area.

Have to admit though lack of these two features are enough to make me keep looking for another NAS OS/FS.