I’ve been running Btrfs on my Linux PC server for several years, but I haven’t been completely comfortable with the filesystem’s reliability, despite it now being included as options in both CentOS and Ubuntu distributions. ZFS has come on my radar several times, and some time this year I begun to investigate FreeNAS, as well as NAS4Free.
Both FreeNAS and NAS4Free are NAS software appliances built on FreeBSD. They both support ZFS, or more technically provide the user interface to manage ZFS, since the actual ZFS support is built into FreeBSD itself. The two projects are closely related because they were one and the same up to 2009. In 2009, the FreeNAS community development was transferred to iXsystems. It still remained a open source project with a BSD license. The prior FreeNAS continued to be developed under a new name, NAS4Free.
Apart from the web UI changes, several feature differences emerged through subsequent releases. For example, FreeNAS developed a plug-in architecture and support for jails, as well as more recently experimental introduction of the bhyve hypervisor. NAS4Free, on the other hand, went with virtualisation using VirtualBox.
I liked the idea of a NAS appliance with integrated virtualisation features, what is nowadays referred to as a hyper-converged infrastructure. My Linux PC server primarily serves as a NAS 24×7, but I also use it for various stuff I play around with. Migrating hardware, whether because of hardware failures or upgrading, is always a painful chore. A virtualised Linux server would simply things greatly, and running that on top of a reliable and robust storage appliance would be really convenient.
This is what NAS4Free does. NAS4Free can run off a LiveUSB flash drive, where upgrading the appliance software simply means creating another LiveUSB to stick into the PC. Alternatively, NAS4Free can be installed into a USB flash drive, and easily upgraded through the web UI. In this way, the appliance operating system and software doesn’t take up any hard disk drive. Every single hard disk drive in the PC can contribute directly into the storage pool.
In this setup, the software running directly on top of real hardware is easy to upgrade, and similarly, upgrading or replacing hardware is relatively easy. The Linux environment that I still want to use, including other services I want to run, can live in a stable virtual machine environment, relatively impervious to the underlying physical environment.
Virtualisation makes it trivial to spin up and shutdown machine instances for testing and experimentation, things that I expect to do from time to time. Then, with ZFS providing the underlying storage, creating snapshots and rolling back datasets would be trivial too.
NAS4Free itself, being a NAS appliance, provides the SMB and AppleTalk shares that I actively use. I also use ownCloud, and would love for it to be supported directly, but alas I would still have run it out of a Linux virtual machine. It’ll still be an easy-to-manage environment in the long run.
Consumer NASes like those from Synology or QNAP will suffice for most casual home users. For those more power user types, software appliances like NAS4Free will provide plenty of extra features to play around with.