The Ars NAS distribution shootout: FreeNAS vs NAS4Free

One is pleasantly functional; the other continues devolving during a journey of pain.

Diagnostics / Reporting

Any good admin or power user is going to want tools at his or her fingertips to figure out how well the system is running. NAS4Free and FreeNAS both have fairly extensive capabilities in this regard. As usual, how they implement them varies pretty significantly.

NAS4Free

A lot of what you likely need to know is right on the System Information page, which is the default "home" page of NAS4Free.

When you need more, it's easy enough to find. The output of the exact same command line tools that a heavily experienced BSD admin would use to troubleshoot and/or report on the various aspects of the system is right there under Diagnostics|Information, easy to access and read. It isn't fancy—don't expect any snazzy graphics (or graphs), just plain workaday text—but there's something great to be said for the fact that, again, this is the unvarnished output of the same tools experienced admins use on the command line. Here are a few examples:

Whether you're an experienced admin yourself or a tremulous user asking for help on forums or IRC, it's nice to be able to get technical info this easily.

FreeNAS

FreeNAS' approach to reporting is basically the exact opposite: lots of bling, not as much actual utility. You can get some of the same info on FreeNAS' home page as NAS4Free's offers, but it's missing some of the best parts.

Enlarge/ FreeNAS' default System page doesn't have much utility OR shiny.

For more detailed information, on FreeNAS you navigate to Reporting from either the sidebar or top bar. Heavily experienced admins will readily recognize this as the output of some of the basic Munin plugins. You have nice shiny graphs available for CPU usage, system load, disk I/O, memory utilization, network traffic, and disk space over (recent) time.

Enlarge/ More useful for performance monitoring than for troubleshooting.

After heavy Munin experience, it's far more useful for troubleshooting performance issues than for troubleshooting "this isn't working" issues. Munin is the kind of tool you use to monitor, say, a really high-performance website that's having issues during peak traffic times of the day. When you're having an issue more along the lines of "my users can't get to this share" or "why isn't FTP working?" or "what's the exact status of my zpool?", this isn't so helpful.

I was also really, really disappointed that FreeNAS's munin-based Reporting can't give me statistics on Jails or Plugins, the one area they'd unquestionably be the most helpful. "Oh, I see that my FreeNAS install is so slow because my Owncloud plugin is using all the CPU doing transcoding of videos" would be fabulous information to have. But since jails don't report individually to Reporting, all you'll really be able to see is "hmm, my CPU is at 100 percent" with no obvious indication as to why. I'd love to see this addressed in a future release.

Preliminary conclusions

We've reached NAS4Free's endpoint in this shootout. Everything we're going to test from here on out is available in FreeNAS and only available in FreeNAS. Before that, consider a couple of cautionary notes.

Export and import

First, do you remember when I said FreeNAS tended to be pretty far out on the bleeding edge? That's nowhere more apparent than in the feature flags enabled in its version of ZFS. One of the attractions of ZFS is that, in general, you should expect to be able to export a zpool from one machine and import it to another.

The problem here is that FreeNAS will automatically activate and enable several feature flags which are only supported in FreeNAS itself and in upstream Delphix versions. The current release of FreeBSD doesn't support them, NAS4Free doesn't support them, and ZFS on Linux doesn't support them either. So if you create a zpool directly in FreeNAS from the WebUI, you need to realize that you are locked in to FreeNAS pretty hardcore at that point.

In order to get your data out, you'll have to copy it off manually, file by file, with a tool like rsync or FTP or what have you. By contrast, NAS4Free doesn't enable or use any feature flags not supported in FreeNAS, FreeBSD, or ZFS on Linux. If you ever decide you want to switch from NAS4Free to FreeNAS or to vanilla FreeBSD or Linux, you won't have any problems. The pool as a whole will cheerfully import right on in. (One caveat: don't expect Active Directory ownership and permissions to come through properly on a different system. If you're joined to a domain, you'll need to fix permissions after you change systems.)

If you really, really want to use FreeNAS but aren't willing to commit to your data being unreadable anywhere else, unfortunately there seems to only be one way around it—create your zpool under some other distribution (NAS4Free, vanilla FreeBSD, or ZFS on Linux) and then import it into FreeNAS. (And then hope something in FreeNAS doesn't automatically upgrade the zpool without asking at a later date.) I tried just creating the zpool with -o feature@hole_birth=disabled from FreeNAS' shell, but, unfortunately, this throws an error telling you that hole_birth can ONLY be enabled.

Backing up your data

Yes, you're using ZFS; yes, you're using multiple disks with parity or redundancy; yes, this is awesome. Maybe you're even using ECC RAM and a UPS. Even better! But you should still back up your data. As we covered earlier, NAS4Free unfortunately doesn't address this. That doesn't mean you can't do it yourself, but it means you do need to do it yourself.

As endlessly frustrating as I found FreeNAS' interface, and as unnerving as I find the bleeding-edge feature flags enabled there and nowhere else, the lack of built-in automated replication should be considered a dealkiller for anyone who isn't either daft enough not to bother with backups or solid enough on the command line to manage it themselves with a script and a cron job. Seriously, if you want your data to survive for decades, back it up.

Process separation

Despite all the headaches it's caused, FreeNAS' unique offerings are way cool. The relatively easy setup of jails to run processes above and beyond the standard NAS functionality is awesome, and it can save your butt if there ends up being a nasty issue (security or otherwise) with one of your plugins. Ultimately, you're still dedicating resources—potentially a lot of resources—to shiny stuff that could end up impacting the performance or reliability of your NAS.

There's a fairly frothy rant on the NAS4Free page from a user on why you shouldn't be running anything but NAS services on your NAS, and why you should set up a separate machine to do other things like bittorrent clients, media servers, transcoding servers, or what have you. That user has a very real point, especially for those of you who are setting up business services, not just nifty things at home.

With that said, a lot of you are home users and just don't have the money, or the inclination, or the space to run multiple servers for multiple services. That's OK, too, as long as you understand the "every additional thing you do is an additional thing you can do wrong" conundrum. For these folks, it's difficult if not impossible to find another solution that does everything that FreeNAS does. Buckle up and read along.