Getting older, not necessarily wiser!
In this post I am going to be discussing the ZFS file system. I have wanted to touch on this subject for a while now, and decided to do it now because of another series of posts I am working on.
Most people today are aware of file systems like FAT32 or NTFS in the Windows World, or EXT4 in Linux. However the Zettabyte file system (ZFS) is somewhat of a mystery to many people. This is mainly because it has its own set of tools, and does not rely on external ones. For example, on a Linux system, FAT32, even though a Windows file system, can be manipulated with standard tools like fdisk. ZFS does not use the standard tools, but has its own.
ZFS had its start with Sun Microsystems OS back in 2001. It was also published as open source (2005 to 2010). When Oracle acquired Sun Microsystems, it was switched to closed source. While open source, the system was ported to BSD, Linux, and MAC-OS X. In 2013 OpenZFS was founded to continue development of the Open Source version of ZFS.
What makes ZFS interesting is that it includes both a file system and a volume manager. As an example, on a Linux system, this would be similar to setting up your hard drives with Logical Volume manager (LVM), then creating your partitions within the LVM.
A basic bottom up representation of a ZFS file system would be as follows.
Physical Drive → Virtual Device → Zpool → Dataset
In general you do not work with physical devices or Virtual Devices (VDEV). Instead you work at the Zpool and Dataset level. The VDEV created will depend on how they are added to the Zpool.
Once your Zpool is created you can go about creating and mounting Datasets (actual file system).
Because of the way ZFS works, for anything but the simplest of setups you need to sit down and plan out your implementation.
There are several general advantages to using ZFS, over the more traditional file systems/volume managers on arrays of multiple drives. These are data integrity, scalability, performance, and administration.
Data Integrity and scalability are what I consider the main advantage on any type of drive array. However performance and administration only become real advantages on newer systems with larger size drive arrays.
One of the main disadvantages to ZFS is physical memory requirements. The increased overhead and feature set uses lots of main memory. If you have less than 4 GB of memory, then you are probably not going to be wanting to run ZFS,
Because of the increased overhead, you will also need a multi core 64 bit CPU, which is not really a problem for current computers. This only becomes an issue with older hardware.
I you are running a small number of drives, or one drive, I personally have not seen any administrative advantages. This is not really a disadvantage, it is just not an advantage on smaller drive pools.
Because ZFS runs its own tools, there is an initial learning curve to contend with.
ZFS is a great file system for modern servers running redundant arrays of drives. Once the commands are learned it makes management much easier.
However, depending on the age and type of your hardware, you could see a performance hit as compared to other file systems.
As long as you do good backups, I do not really see any advantage at this point in time to running ZFS on a home system with only one or two drives. There are not any disadvantages either, but I would not run out and switch to ZFS if my system is running okay. If I was doing an extensive upgrade/rebuild, then maybe I would consider switching.