ZFS also offers optional compression of selected storage pools. This can improve performance, since the time taken to compress a pool is faster than the time to read and write uncompressed data to disk. Compression is a natural fit for storage pools with lots of text files, such as logs.
The drawbacks with using ZFS are minor, and might not even be considered drawbacks in many cases. First, because ZFS owes much of its performance to caching, it's best installed on servers with lots of RAM. While 6GB will suffice in theory, in practice ZFS systems should have more - lots more. The system iXsystems supplied had 48GB of RAM, though we've also run FreeNAS in systems with 16G and 24GB of RAM with good results. In general, though, the more ZFS can cache, the faster its I/O performance.
If available RAM is really an issue, FreeNAS also can be installed using FreeBSD's regular UFS file system with as little as 2GB of RAM.
Second, due to licensing issues ZFS works only on BSD systems, and never on Linux or Windows. The choice of operating system is a nonissue with FreeNAS, which is a turnkey distribution built on FreeBSD. Even users unfamiliar with FreeBSD should be fine with FreeNAS, since it's managed through an intuitive and powerful Web interface.
Licensing is really only an issue for developers. ZFS' Common Development and Distribution License (CDDL) license allows free re-use of source code (including the right to convert to closed-source code), while the GNU 2.0 and 3.0 licenses in the Linux world require changes to be committed back into open-source distributions.
Storage performance benchmarking is a complex topic, with many variables involved. To determine how FreeNAS would handle the most common types of operations, we set up a 10-gigabit test bed and used the open-source iozone benchmarking tool.
The key variables in I/O performance involve the kinds of operations a storage device will handle. Devices may move data in small or large blocks - think of a database handling small transactions, vs. a file manager moving large virtual machine images around. The type of operation also is important; writing to a disk tends to take longer than reading from it. Due to caching, an initial read or write operation probably will take longer than a re-read or re-write. And operations that use sequential blocks on a disk will outperform random reads and writes, since in the latter case, the disk head moves around a lot.
We configured the iozone tool to measure I/O performance for six test cases, each with the FreeNAS appliance acting as a Network File System (NFS) server for two NFS clients, also equipped with 10-gigabit Ethernet adapters. We ran all six sets of tests twice, using small and large record sizes.