I’ve dabbled with FreeNAS in the past and had such a great experience with pfSense (a similar FreeBSD-based project) that I jumped in with both feet on my home office server build. But my initial impressions were, frankly, terrible. I’ve got the system running and stable now, but I’m finding it difficult to recommend FreeNAS at this point.
What Is FreeNAS?
It’s important to use the right tool for the job. So what’s the job FreeNAS was designed to solve?
From my perspective, FreeNAS is a free “prosumer” storage platform. It’s not intended for simple home storage since it requires real UNIX/storage/networking administrative skills as well as some pricey hardware.1 And although FreeNAS proprietor iXsystems sells storage for businesses, FreeNAS is simply too limited to compete with even basic enterprise storage arrays.2
This is not a condemnation of FreeNAS, however. FreeNAS is like a Ford F-150 pickup trick: It’s designed for light-duty work, can also be used in the home, but won’t take the place of a serious purpose-built business device. And like the pickup trucks of old, although the veneer of user-friendliness is only skin-deep, that’s just fine with the people it was designed to serve.
The general vibe of the community is that folks shouldn’t bother with FreeNAS unless they’re willing to meet the following criteria:
- Get decent hardware, including at least 8 GB of ECC memory and four or more quality hard disks – this will cost about $1,000
- Be willing to invest a month or so learning about ZFS, FreeBSD, and FreeNAS3
- Be ready to manually configure things according to various guides and forums, especially when it comes to interactions between “plugins”4
Again, this is not criticism of FreeNAS per se. Rather, I am attempting to clarify what it takes to make FreeNAS work. This stands in stark contrast to another FreeBSD-based project I use, pfSense, which works pretty well out of the box and can be entirely configured and managed from the GUI, including “packages”.
Note that FreeNAS 10 promises a complete revamp, with container-based applications rather than jailed plugins and complete configurability using a brand-new user interface (UI) or command-line interface (CLI). It’s really a complete re-write of the whole project!
What Best Practices?
I began my install using the latest “stable” release of FreeNAS, 9.10. The initial install went pretty well, but I began experiencing instability almost immediately. After 9 crashes, two serious bugs (still not fixed but worked around), and many hours of effort, I have a running system. But this was not at all a pleasant experience!
Let’s start with the install, though. Like many similar projects, FreeNAS installs from a USB drive. But FreeNAS should be installed onto another flash drive or Disk on Module (DOM) device rather than the disks to be used for data. This is well-documented but the install process doesn’t make it easy: You have to pick the right target from a list of arcane device identifiers that could presumably be quite long. Happily, if you pick more than one from the list, it will mirror your boot volume across them.
I was going to go into more detail about the janky FreeNAS wizard, but the next version (FreNAS 10) has a totally new UI, so hopefully they’re addressing a lot of this! What I will say is that, although the wizard can configure shares if you use it right, it’s awful at configuring pools, which is a critical early configuration step.5 And it’s bizarre that you have to re-run the complete install wizard whenever adding a share in the future! This point is definitely addressed in FreeNAS 10…
I will also point out another “best practices” lapse apparent in FreeNAS. After some very-basic setup (timezone, keyboard type) it asks you to create your first “pool”. But it is very easy to get this critical step wrong: Most simple FreeNAS setups should have a single RAID 1+0 or RAID-Z pool of all disks, but the wizard is perfectly happy building a single-disk pool with no redundancy! Since this can’t be changed afterwards, this is a critical failure right off the bat. The wizard simply shouldn’t allow this!6
Then there’s the infernal “Volume Manager”, where RAID configurations go to die.7 The bizarre drag-right-and-down interface probably seemed like a good idea but it’s not at all intuitive or easy to use. Again, I prefer clicking “Manual setup” and doing it myself. Yet even that didn’t always work! I was forced to use the command line to manually create my vdevs (RAID sets) after the UI refused to let me add the correct disks in the correct configuration.
Storage stuff should be good at storage. Frankly, FreeNAS needs solid “best practices” logic that recommends what to do with your disk drives. The wizard has something like this but it doesn’t work with different-sized disks and thus defaults to creating too-small vdevs and pools instead of just using all the disks and being done with it. And the Volume Manager is just bizarrely non-functional. There’s lots of straightforward wisdom in the forums – how about bringing some of that to the UI?
Note: What you see in these illustrations is not my production FreeNAS environment of course. It’s just an Intel NUC with some USB drives I had laying around so I could take screen shots. My actual build is documented in excruciating detail in other posts on my blog. Start here: My FreeNAS Build: Supermicro X10SL7, Intel Haswell Xeon, ECC RAM
Bugs and Crashes
This brings me to the most uncomfortable part of my discussion of FreeNAS: It was totally unstable for the first week or so and the latest update made the system un-bootable. And these bugs haven’t yet been fixed. This is totally unacceptable for a “mature” project like FreeNAS!
Let’s start with the instability. It appears that I got bit by two bugs:
- Sometimes, when adding a plugin creates or modifies a “jail”, the entire system crashes. It doesn’t happen all the time, but I noticed this happen at least twice. And there are scattered comments in the forum of similar issues.
- Other times, the system encounters an error and dies, with a repeating loop of error messages. Again, this is documented in the forum but it’s not at all clear what’s causing it.
Initial response to both these issues was what you’d expect: “Sounds like bad hardware.” But my hardware is solid, and others have reported the same issues. Alas, it’s not clear how to debug failures like this, so I’m just hoping they don’t happen again.
Then there are the 9.10.1 upgrade issues. I’m shy of using beta software so I like to stick to the recommended “stable” builds of software. I initially installed “9.10-STABLE” (their caps) and encountered the above issues. So when a “stable” update to 9.10.1 appeared, I applied it. I should have waited.
- The automatic 9.10.1 update corrupts the Grub boot configuration, resulting in an un-bootable system. The fix is simply to create a new install USB drive from the 9.10 or 9.10.1 iso and “upgrading” that way. Happily, the configuration is preserved. This issue is affecting many people with all sorts of different hardware and hasn’t been fixed yet.
- When running 9.10.1, the console blanks out just after booting and remains black. This makes it awfully difficult to debug crashes and remotely manage the system. Again, this issue affects people with many different hardware configurations and hasn’t even been acknowledged that I can see.
Problems happen, but the offending update should have been pulled back, there should be some communication from the developers, and a fix for such simple bugs should be here by now. I imagine someone simply tweaked the Grub parameters, causing both issues. But it’s not clear that anyone even cares to fix these serious bugs, since version 10 is being aggressively updated and behind schedule.
At this point, I simply cannot recommend using FreeNAS. Although ZFS is simply the best filesystem available today, my experience getting FreeNAS up and running has been frustrating in the extreme. Once it’s working, it seems to be a solid product. But unless you have serious time to devote learning, configuring, and debugging a system, I recommend looking to a commercial product (Synology, QNAP, Drobo) instead of FreeNAS. Hopefully this recommendation will change with the release of FreeNAS 10.
Here’s my entire FreeNAS series so far:
- It’s hard to imagine putting together a proper FreeNAS system for under $500, especially since so many user questions are answered with “you need at least 8 GB of ECC RAM”. ↩
- I know I’m going to catch flack for saying FreeNAS isn’t as good as enterprise arrays, but anyone who spends a few minutes working with anything from EMC, Nimble, NetApp, and the like would surely agree. ↩
- I’ve been a professional UNIX and storage admin for over 20 years and it took me dozens of hours to get comfortable with how FreeNAS works! I imagine the ramp would be faster for someone with FreeBSD and ZFS experience. ↩
- Some FreeNAS configuration is possible in the GUI, but getting plugins like Transmission and Couchpotato to work requires the UNIX shell, which many will find confusing or off-putting. ↩
- The wizard doesn’t let you skip an unformatted drive (say, a spare) and get to share creation; you have to add it to a pool. It will happily configure a totally messed-up pool. And when it comes to shares, the critical step of creating accounts and assigning disk ownership is relegated to skippable submenu, defaulting to “root:wheel” which is just horrible! ↩
- Fixing the “single disk pool” issue requires migrating data and building another pool, which is not at all easy. Most users would have to back up all the data (especially System Pool data like home directories and jail configurations), blow away and rebuild the entire pool, and restore everything. ↩
- The FreeNAS Volume Manager is a UI, and like ZFS itself, it is definitely not a volume manager! ↩