Open Source Network Attached Storage with FreeNAS…

The FreeNAS distribution is tailor-made for installation in a small office environment. It is an extremely low-resource network storage system that you can administer through a Web browser, but it supports high-end features like automatic backups, replication, LDAP or Active Directory authentication, and seamless file-sharing over NFS, CIFS, AFP, and even FTP and TFTP. The latest release — version 8.0 — is just a few weeks old, and it is the perfect time to take a look.

A Bird’s-Eye View

For those new to FreeNAS, it is important to realize that the system is designed to be lean and mean by eliminating all other server functionality. That is, FreeNAS will give you high-end storage features, but it will not double as a Web server, authentication server, or any other piece of IT infrastructure. However, you can run FreeNAS on older or off-the-shelf PC hardware and attach far more storage per dollar than you would ever get in from a commercial storage appliance. By switching off all of the unnecessary server and OS components, the FreeNAS team manages to get incredible speed out of the operating system, and fit the entire image into a compact package — the latest release fits into 64 MB.

In fact, FreeNAS can run from non-volatile, compact flash storage, so you can save every byte of your hard disks for files. The core of the system is derived from the open source FreeBSD project, heavily customized with the NanoBSD embedded image creator. It can even be configured to run as a read-only system image, so that there is no danger of losing customizations in the event of a power loss.

The preferred filesystem for storage volumes is ZFS, a high-capacity filesystem with built-in support for snapshots, copy-on-write transactions, and logical volume management. It originated in Sun’s OpenSolaris, but has since been ported to other operating systems. ZFS volumes can be fully managed from the Web admin interface, and FreeNAS can manage multiple file sharing protocols concurrently, for compatibility with Unix-like networks, Windows, and Mac OS X. For those not interested in ZFS, the older UFS filesystem is supported as well.

Hardware support is a given; any type of drive will work, from parallel ATA up through FireWire and iSCSI, in heterogeneous combinations. Hardware RAID controllers are also supported, as is software RAID. The current list of RAID levels includes 0, 1, 5, JBOD, 5+0, 5+1, 0+1, 1+0, and even RAID-Z. Disk encryption is also supported, and monitoring is available via SNMP, email reporting, and remote logging.

Installation and Setup

You can download the 8.0 release from the FreeNAS Web site in a variety of formats: ISO images designed to be written to optical discs or USB installation media, compressed raw disk images designed to be copied directly to hard disks, and upgrade packages for users of FreeNAS 7.0 and earlier. Builds are available in 32-bit and 64-bit flavors, for Intel-compatible processors.

FreeNAS GUI

Because FreeNAS is designed to be administered from a Web tool, the system installer is lightweight (not that this is bad; you do not need to select packages or perform many of the other steps common to full-blown installations). The curses-based installer walks you through the process, selecting the destination media and other low-level concerns. Linux users not familiar with the FreeBSD disk-naming conventions might find it worthwhile to connect only the OS media during this process, but in reality it is low-risk.

Installation itself takes only a few seconds, after which you will need to reboot the system (with the install media removed), and walk through the initial configuration step. This is a console-based, text-menu-driven process in which you can specify network and connectivity options. If you are using DHCP on your network, FreeNAS will automatically pick up everything it needs to know, but if you want to manually assign IP addresses and static routes, you can. Advanced uses like Virtual LAN (VLAN) setup are also available from this menu, as are the “factory reset” tools.

By and large, though, you only need to boot up to the console to verify that FreeNAS is running. The console greeting even tells you the current IP address and suggests you visit it to use the GUI configuration tools.

NAS Management

Visit them you should, as every management interface outside of factory reset is exposed in a well-organized GUI served up via Django. There are five top-level management categories: System, Network, Storage, Sharing, and Services. System allows you to configure the machine itself, including SSL for the GUI, email addresses for reporting, time settings, and applying updates. Network controls everything from hostname and domain settings to link aggregation and control of individual NICs.

Storage allows you to add, mount, and adjust your storage volumes, create snapshots, configure replication between multiple FreeNAS hosts, and schedule recurring tasks. You have near absolute control over how FreeNAS manages your storage — you can set up multiple ZFS volumes, split disks or RAID arrays between volumes as you see fit, and create datasets on each volume with their own quotas, compression techniques, and permission settings. You can add unused disks, or import existing volumes and RAID arrays.

The Sharing management category allows you to set up network shares visible to Unix (over NFS), Apple (over AFS), and Windows (over CIFS) systems. You can have multiple shares, split up however you want. A visit to the Services category is required to actually activate the NFS, AFS, and CIFS daemons, and it also controls configuration for the other supported services: authentication with Active Directory or LDAP, management with SNMP or SSH, support services with S.M.A.R.T., UPS, or rsync, and network access with FTP, TFTP, and dynamic DNS. FreeNAS can also serve as an iSCSI storage area network (SAN) device, which is also managed through Services.

The Bottom Line

FreeNAS 8.0 offers several improvements over the previous releases — a rewritten core OS built from FreeBSD 8.2, an entirely new administration GUI, and greatly increased support for advanced ZFS features (such as quotas, adding and “stacking” devices, and managing separate spare, cache, and logging devices) all of which are accessible from the Web interface. The iSCSI support is also substantially improved, as is support for “thin provisioning” and remote replication.

Naturally, any particular office is only going to use a subset of these features. iSCSI typically involves an investment in fibre-channel networking and separate cable runs, and few small offices need to support the full range of sharing and authentication options supported by the OS. Where FreeNAS excels is in presenting all of these options to you in an easy to manage package. You do not need to manually configure NFS and LDAP support; the GUI breaks the options down to a level that is simple to administer, and if you are experimenting, it is easy to roll back your changes.

But on top of the ease-of-use factor, I was impressed at FreeNAS’s ability to log and generate useful reports. That is the sign of a well-thought-out interface: you are not required to set up your own logging and analysis program to track volume or network usage statistics. FreeNAS has you covered. Finally, although it probably goes without saying, the low-overhead and speed of the system as a whole is remarkable. No doubt that is the result of years’ worth of polishing the core OS so that storage throughput is factor number one.

The takeaway is that you do not need to spend an exorbitant amount of money for a custom NAS server; you can use a mid-priced motherboard and CPU, load FreeNAS onto them, and spend the rest of your budget on things that matter: more reliable disks, power supplies and battery backup, or just more storage in general. You certainly can’t have too much.