When you’re a beginner, choosing a file system for your storage pools may not seem like a huge decision. But once you’ve sunk your fangs into the NAS servers, you’ll realize that picking the ideal file system is as important as selecting the OS (and even the underlying hardware). Armed with a plethora of cool features, ZFS tends to be the file system of choice for many data hoarders, including yours truly.
That said, I’ve started to find some aspects of ZFS rather annoying after spending ages with my TrueNAS server. Don’t get me wrong, I’d always recommend going for this powerful file system for hardcore NAS setups. But if you’re someone with a low-spec NAS or a casual home labber who doesn’t want to spend a lot of time with their storage server, there are several reasons why you might want to ditch ZFS and go for a different file system instead.
ZFS pools aren’t very flexible
Good luck shrinking your existing storage pools
If you haven’t dabbled in NAS servers, you might not be concerned about formulating a detailed plan for your storage drives. Unfortunately, ZFS pools aren't very flexible, so you'll have to plan your setup in advance. Otherwise, you'll have to resilver your pools when you need to switch configurations. Sure, you could extend your existing ZFS pools to accommodate new drives, but you'll also have to deal with certain restrictions.
For starters, adding a drive with higher storage capacity than the ones in your existing pool is far from ideal, as you won’t be able to use its excess storage unless you upgrade every SSD or HDD. Likewise, removing a drive from an existing ZFS pool is a huge pain, so you can’t shrink them either. As such, you’ll want to have a firm storage plan before you go about deploying ZFS pools.
High memory consumption
ZFS and RAM-starved systems are a terrible combo
NAS servers have become a lot more inexpensive over the last couple of years, and there are plenty of affordable options for newcomers. Unfortunately, budget-friendly rigs tend to skimp out on RAM, and that’s a huge problem when you’re looking to build a ZFS-powered storage server. ZFS uses Adaptive Replacement Cache to temporarily store data and metadata inside the memory, and its aggressive caching methods are a real pain when you’ve only got 4GB of soldered RAM.
To put ZFS’ memory requirements into numbers, you’ll want to start off with at least 8GB of RAM. For the ideal performance, you’ll want to add 1GB extra memory for every terabyte of storage. Let’s say the max capacity of your ZFS array is 8TB. You’ll want to go with at least 16GB memory if you don’t set up L2ARC caches. Otherwise, you’ll have to add another 1GB of RAM per 50GB of L2ARC cache. Couple that with the limited upgradability in ZFS pools, and your initial investment will be rather high if you go with this file system.
Difficult to configure
The ideal ZFS setup requires some elbow grease
A steep difficulty curve is another disadvantage of choosing ZFS, especially when you’re a beginner. Of course, the web UI on Unraid, TrueNAS, XigmaNAS, and other NAS-centric distros make it easy to deploy ZFS pools, and you can even get them up and running with a couple of CLI commands. But if you want to optimize performance, ZFS requires a lot more fine-tuning than its rivals – and that’s mostly due to the sheer number of features offered by this powerful file system.
For example, you’ll want to configure scrub tasks to detect (and even fix) data corruptions. If you’ve got SSDs in your NAS, trim tasks can help reduce disk space, while sVDEVs can improve speeds, though you’ll want to deploy them in a mirror setup for better protection. There are also snapshots to automate, block sizes to configure, and system attributes to modify. For a newcomer, this can get rather confusing, and you’ll have to read pages upon pages of documentation to get the hang of ZFS’ intricacies.
Write amplification can be a problem
Especially if you have cheap SSDs in your NAS
For folks with SSD-powered NAS (and even home server) setups, ZFS introduces an additional problem. Since SSDs use NAND cells to store data, they are susceptible to write amplification, which causes file-transfer operations to write data multiple times. This can end up degrading your SSD’s lifespan, and ZFS can further exacerbate this issue by increasing the write operations on your drive.
Don’t get me wrong, ZFS won’t outright kill your SSD. But the synchronous write handling facility of ZFS can reduce its lifespan, meaning you’ll have to invest in a SLOG device to avoid excessive write operations on your high-speed drive.
Still, ZFS has enough perks to make it worth your while
Although I’ve been rather harsh on ZFS in this article, let me add that it’s my favorite file system and I wouldn’t swap it for anything else, including Btrfs. While both ZFS and Btrfs provide solid self-healing and snapshot provisions, the former has superior RAID support and better performance – making it the obvious choice for my data-hoarding antics.
