ZFS Implementations Across Operating Systems
ZFS (Zettabyte File System) has evolved from its origins in Solaris to become one of the most powerful and versatile filesystems available today. By combining a volume manager and a filesystem into a single system, ZFS provides advanced data integrity and storage management. Over the years, various open-source and proprietary efforts have ported ZFS to a wide array of operating systems, including BSD, Linux, and macOS.
Key Facts
- OpenZFS is the primary unified codebase used by many modern implementations to ensure rapid feature updates.
- FreeBSD provides deep integration, including the ability to boot directly from a ZFS dataset via zfsboot.
- Linux support is primarily achieved through loadable kernel modules due to licensing differences between CDDL and GPL.
- Ubuntu is a notable Linux distribution that provides precompiled OpenZFS binary modules in its official repositories.
- TrueNAS offers both FreeBSD-based (Core) and Debian-based versions to leverage ZFS for network-attached storage.
Solaris and its Derivatives
ZFS was natively integrated into OpenSolaris, serving as the default filesystem for versions 2008.05, 2008.11, and 2009.06. This foundation paved the way for other derivatives.
OpenIndiana utilizes OpenZFS with feature flags as implemented in Illumos. Notably, users upgrading from OpenSolaris snv_134 to OpenIndiana or Solaris 11 Express can upgrade and separately boot Solaris 11 Express on the same ZFS pool.
ZFS on BSD Systems
The BSD family has embraced ZFS extensively, with several distributions offering robust support.
FreeBSD and Derivatives
ZFS has been part of FreeBSD since version 7.0, featuring zfsboot for direct booting. While it lacks a native kernel CIFS server and iSCSI (the latter can be added via packages), it is fully functional. FreeBSD 13.0-RELEASE marked a significant shift by moving from an illumos-based codebase to the unified OpenZFS 2 codebase.
Several specialized distributions build upon this support:
- TrueNAS Core (formerly FreeNAS): An embedded NAS distribution based on FreeBSD.
- XigmaNAS (formerly NAS4Free): A continuation of the FreeNAS 7 series, supporting ZFS pool version 5000.
- pfSense and OPNsense: Open-source router and firewall distributions that support installation and booting to ZFS pools.
- MidnightBSD: A desktop OS derived from FreeBSD; it supported pool version 6 in 0.3-RELEASE and is updating to version 28 in 0.4-CURRENT.
- TrueOS (formerly PC-BSD): A now-defunct desktop distribution that inherited FreeBSD's ZFS support.
Other BSD Ports
NetBSD merged ZFS into its source tree in August 2009 following a 2007 Google Summer of Code project. DragonFlyBSD also received an initial port led by Edward O'Callaghan.
ZFS on Linux
Implementing ZFS on Linux is complex due to legal incompatibilities between the CDDL (Common Development and Distribution License) of ZFS and the GPL (General Public License) of the Linux kernel. Because the Free Software Foundation views the redistribution of a combined product as a derivative work, ZFS is typically implemented as a loadable kernel module.
Evolution of Linux Support
Early attempts included ZFS on FUSE (Filesystem in Userspace), which avoided kernel licensing issues by running in userspace. However, this suffered from significant performance penalties and is now defunct.
The Lawrence Livermore National Laboratory (LLNL) produced a native port that reached a stable General Availability (GA) release in 2013. This implementation eventually integrated work from KQ InfoTech (which was acquired by sTec, Inc. in 2011). By August 2014, ZFS on Linux adopted the OpenZFS pool version 5000, using feature flags to define capabilities.
Distribution Integration
While source code distribution is generally accepted (as seen in Gentoo and Slackware), binary distribution is controversial. Ubuntu challenged this in 2016 by providing precompiled OpenZFS binary modules in Ubuntu 16.04 LTS, concluding that this did not violate the GPL. Since 19.10, Ubuntu has also supported experimental ZFS root filesystem installations.
TrueNAS (formerly TrueNAS Scale) is a Debian-based version that uses OpenZFS and adds features like KVM virtual machines, Kubernetes, and Docker support. The "Scale" branding was dropped with the release of TrueNAS 25.04 (Fangtooth).
ZFS on macOS and Windows
Support for macOS has seen multiple attempts. O3X (Open ZFS on OSX) is currently under active development, maintaining compatibility with ZFS on Linux and implementing z-pool version 5000 via the Solaris Porting Layer (SPL). Earlier projects include MacZFS (now unsupported) and Zevo, a proprietary implementation by GreenBytes, Inc. that was sold to Oracle in 2014.
Windows support has been more sporadic. An early open-source attempt ceased in 2012, but a new OpenZFS port was announced in 2017. A BETA release of an open-source port is currently available on GitHub.
Implementation Summary
| Platform/OS | Implementation Base | Key Status/Version | Notable Feature |
|---|---|---|---|
| FreeBSD | OpenZFS 2 (since 13.0) | Fully Functional | zfsboot |
| Linux (Ubuntu) | OpenZFS (Binary Module) | Stable/Experimental Root | Official Repository Support |
| macOS (O3X) | OpenZFS / SPL | Active Development | z-pool version 5000 |
| TrueNAS Core | FreeBSD | Stable | NAS Optimized |
| TrueNAS | Debian Linux | Stable | KVM & Kubernetes |
Frequently Asked Questions
Why is ZFS not built directly into the Linux kernel?
The primary reason is a licensing conflict between the CDDL license used by ZFS and the GPL license used by the Linux kernel. To avoid legal issues, ZFS is typically loaded as a separate kernel module.
What is the significance of zpool version 5000?
Version 5000 indicates that the implementation uses feature flags to define supported capabilities rather than a sequential version number, preventing conflicts with Oracle's versioning.
Can I boot an operating system directly from ZFS?
Yes, this is possible in FreeBSD (via zfsboot), pfSense, OPNsense, and experimentally in Ubuntu (starting with version 19.10).
What is the difference between TrueNAS Core and TrueNAS?
TrueNAS Core is based on FreeBSD, while the version simply called TrueNAS (formerly TrueNAS Scale) is based on Debian Linux and offers additional features like container support via Docker and Kubernetes.
Is ZFS available for Windows?
While there is no official native support, there is a BETA open-source port available on GitHub, and a new port was announced in 2017.