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.
2017 Update: I’m still running FreeNAS but I still kind of hate it. It’s the best open source SOHO NAS OS, but there are lots of things to dislike, especially for “outsiders.” 2017 saw a total debacle, with the release of an entirely new version, “Corral” which was quickly pulled and retired with extremely poor communication and support from iXsystems and the FreeNAS community as a whole. Although updates to the old FreeNAS since then have been substantial, it retains much of what I disliked in my initial install. My advice: Run it, but don’t expect to love it.
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.
Stephen’s Stance
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! ↩
disqus_1vXHs4L8Fq says
You might be sightly misled about the history of this project. FreeNAS is a commercial implementation of ZFS with a GUI. You should consider NAS4Free, which was sort of forked from the original, non-commercial FreeNAS. (See the FreeNAS Wikipedia page for more info.)
NAS4Free wouldn’t let me create RAIDZ1 vdev’s with an even number of drives, so I suspect you’ll prefer its “I Know Better Than You” approach. Which, for the record, it did know better than me in that case, though I don’t feel it did a great job of explaining why. 🙂
Dan says
There’s a lot here that just doesn’t make sense as a criticism of FreeNAS. This is going to be in a somewhat random order, I’m afraid, but better than not addressing them at all…
* Choosing the install target. What’s difficult about this? The screen gives you the disk identifiers, the model information, and the capacity. Unless you have a bunch of, say, 16 GB USB sticks in your machine, it should be pretty obvious which device(s) you want to use. Hit the spacebar to select each device you want to install to. Sure, it isn’t pretty and GUI, but not everything needs a GUI.
* The wizard. Using the wizard at all is completely optional, you know. You don’t have to use it at all, and you certainly don’t need to re-launch it every time you want to create a share. And you think it shouldn’t permit you to create a perfectly valid configuration of a single-disk pool?
* Automatic volume layout. When you give it one 750 GB disk, one 250 GB disk, three 8.1 GB disks, and one 8.0 GB disk, what do you expect it to suggest? You can’t make a sensible RAIDZ configuration using all those devices. You can’t make a sensible mirrored configuration using all those devices. The only you could put all those devices into a single pool without being ridiculously wasteful would be to stripe them all–but of course that’s quite dangerous to your data.
* The 9.10.1 update. Yes, it borked Grub for some users. It did not bork Grub for other users. I’d wager that the latter group is much larger than the former, but that’s just a guess. I’m in the latter group. If you’re following along, you’ll note that 9.10.1-U1 was released yesterday–yes, they are still working on the 9.x branch and actively addressing bugs.
* The Volume Manager. If you have a reasonable collection of disks, it usually does a reasonable job both putting them into a pool, and keeping you from doing something stupid (like striping a single disk into your pool, forcing you to destroy and recreate it). If you want to do something weird like put disks of different sizes into the same vdev, you’ll need to use manual mode. I can’t imagine what you were trying to do that required you to use the CLI, but it probably wasn’t pretty.
* Memory/hardware requirements. The documented minimum memory for a FreeNAS 9.x system is 8 GB, and that is truly a minimum. If you’re going to be running plugins (especially Plex) or VMs, figure at least 16 GB. It is what it is. Forum users have seen too many incidents of system instability and data corruption with less than that. If you come with a problem and less than 8 GB, we’re (“we” being I and other users on the forum–I’m not an iXSystems employee and don’t speak for them) going to tell you to upgrade to at least that much. If you can’t, we’re going to tell you that FreeNAS is not the OS for you, and usually suggest some alternatives. But it’s actually quite easy to put together a decent smaller FreeNAS system for under US$500 plus disks–buy a Dell T20 or Lenovo TS140, each under US$300 as of this writing, and get a 8 GB stick of RAM for it. Under US$350, not including your disks. Compares quite favorably to any of the off-the-shelf diskless NAS units.
I think you’re fundamentally right on plugins, and Jordan has admitted that they never really did work as they’d hoped they would. Getting any one of them up and running is pretty straightforward, but when you have a half-dozen of them that need to work together (as is often the case–Plex, CouchPotato, Sickrage/Sonarr, Headphones, SABnzbd, Transmission, for example), it just doesn’t happen. It certainly can be made to work, but it’s going to take a fair bit of CLI work.
Dan says
…and of course, the 9.10.1-U1 update seems to be hosing some users too.
I’ve used FreeNAS since the 0.7 days (what’s now NAS4Free), and was fairly quick to update to something in the 8.x train, which is the codebase that’s grown into the current product. I’m very impressed with the product, its capabilities, and its ease of use (and for context, I’m an attorney, not a technical professional of any kind). I’m also impressed with the quality of information you can get on the forums, and the documentation is among the best I’ve seen in the Free Software world. But their release management decisions often baffle me.
In most of the rest of the software world, I expect “beta” to mean “feature-complete, but with bugs we hope you’ll find so we can fix.” I’m not sure exactly what “beta” means to iXSystems, but it clearly isn’t that; the FreeNAS 10 beta (which I’m running) isn’t close to feature-complete. In the rest of the software world, I understand a minor software version (e.g., 9.2) to be effectively a code freeze, with only bug fixes for the point releases–I wouldn’t at all expect, for example, replacing the iSCSI target stack with something completely new between 9.2.1.6 and 9.2.1.7 (I can’t promise those numbers are accurate, but it was from one sub-point release to the next).
Another point. You say, ‘Fixing the “single disk pool” issue requires migrating data and building another pool, which is not at all easy.’ This isn’t true. You can add a second disk as a mirror of the first, giving your pool redundancy (and for that matter, you can add a third, fourth, or any number of disks as mirrors of that one disk). This can’t be done through the GUI (at least, not yet; hopefully it’ll make it into FN10), but it can certainly be done at the command line. It’s the one exception to the general rule that you can’t change a vdev once it’s been created.
Jan says
Try OpenMediaVault – a Debian based NAS OS. It gives you all the nice features like ext4 FS (that you can access with a pendrive Ubuntu if something goes wrong). ZFS is not the solution for home use, the overhead is just terrible and FreeBSD is just a pain in the…
Alan Milewczyk says
Four months or so after you wrote this article, can you update us on your current thoughts and what direction you’ll be taking?
Stoned Entity says
I get the impression there is a lot of people who simply don’t bother reading manuals.
FreeNAS is very reliable and stable, I’ve got servers with over a petabyte running in production and have been up for months.
I’ve made high performance FreeNAS servers for VFX artists running intense particle/destruction simulations (lots of RAM and NVMe drives)
FreeNAS isn’t perfect, but in terms of a NAS system that you can build out yourself and customize for performance it is great.
Rob Fern says
We need an update on what you decided to go with. Sounds like you left FreeNAS
Brandon Edwards says
Freenas is a real pain to use. I can’t seem to get permissions right for access from a windows 10 machine. Most of the setup was pretty easy. I thought there were way too many actions to get iscsi setup. seems like the UI was not planned out and just thrown together, most things require multiple actions. I am coming from synology dsm and their setup is much easier. If I wanted all the work of freenas UI I could have just used the command line easier. It will never be a real contender for most unless it just works.