OpenZFS is an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
implementation of the
ZFS
ZFS (previously Zettabyte File System) is a file system with Volume manager, volume management capabilities. It began as part of the Sun Microsystems Solaris (operating system), Solaris operating system in 2001. Large parts of Solaris, includin ...
file system and
volume manager
In computer storage, logical volume management or LVM provides a method of allocating space on mass-storage devices that is more flexible than conventional partitioning schemes to store volumes. In particular, a volume manager can concatenate, ...
initially developed by
Sun Microsystems
Sun Microsystems, Inc., often known as Sun for short, was an American technology company that existed from 1982 to 2010 which developed and sold computers, computer components, software, and information technology services. Sun contributed sig ...
for the
Solaris operating system, and is now maintained by the OpenZFS Project. Similar to the original ZFS, the implementation supports features like
data compression
In information theory, data compression, source coding, or bit-rate reduction is the process of encoding information using fewer bits than the original representation. Any particular compression is either lossy or lossless. Lossless compressi ...
,
data deduplication
In computing, data deduplication is a technique for eliminating duplicate copies of repeating data. Successful implementation of the technique can improve storage utilization, which may in turn lower capital expenditure by reducing the overall amou ...
,
copy-on-write
Copy-on-write (COW), also called implicit sharing or shadowing, is a resource-management technique used in programming to manage shared data efficiently. Instead of copying data right away when multiple programs use it, the same data is shared ...
clones,
snapshots,
RAID-Z, and
virtual devices that can create filesystems that span multiple disks.
One of the main capabilities of OpenZFS is self-healing. The file system can detect and correct errors while in use, without the need for a dedicated file system checker. This feature makes it suitable for mission-critical applications that require high availability.
OpenZFS is mainly used in enterprise and
data center
A data center is a building, a dedicated space within a building, or a group of buildings used to house computer systems and associated components, such as telecommunications and storage systems.
Since IT operations are crucial for busines ...
environments, as well as consumer devices like
network-attached storage
Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a Heterogeneous computing, heterogeneous group of clients. In this context, the term "NAS" can refer to both th ...
(NAS) devices, where data reliability and safety is essential. While initially designed for Solaris, development has since focused on
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, while ports exist for various
BSD
The Berkeley Software Distribution (BSD), also known as Berkeley Unix or BSD Unix, is a discontinued Unix operating system developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkeley, beginni ...
distributions and
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
. Unlike
Oracle ZFS, OpenZFS is licensed under the
Common Development and Distribution License (CDDL), enabling both open-source and commercial use of the file system.
Founding members of OpenZFS include Matt Ahrens, one of the main architects of ZFS.
In 2020, the codebases of OpenZFS and ZFS on Linux, a
kernel module allowing ZFS to be used on Linux, were merged and released as OpenZFS 2.0, allowing other non-Linux operating systems to receive the various improvements that the Linux driver had incorporated over time.
History
The
ZFS
ZFS (previously Zettabyte File System) is a file system with Volume manager, volume management capabilities. It began as part of the Sun Microsystems Solaris (operating system), Solaris operating system in 2001. Large parts of Solaris, includin ...
file system was originally developed by
Sun Microsystems
Sun Microsystems, Inc., often known as Sun for short, was an American technology company that existed from 1982 to 2010 which developed and sold computers, computer components, software, and information technology services. Sun contributed sig ...
for the
Solaris operating system. The ZFS source code was released in 2005 under the
Common Development and Distribution License as part of the
OpenSolaris
OpenSolaris () is a discontinued open-source computer operating system for SPARC and x86 based systems, created by Sun Microsystems and based on Solaris. Its development began in the mid 2000s and ended in 2010.
OpenSolaris was developed as ...
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
, and it was later ported to other operating systems and environments.
The following is a list of key events in the development of ZFS and its various implementations:
* 2001: Closed-source development of ZFS began with two engineers at Sun.
* 2005: ZFS source code was released as part of the OpenSolaris project.
* 2006: Development of a ZFS port to
FUSE for Linux started.
* 2007: Apple began a project to port ZFS to
Mac OS X
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
.
* 2008: A port to FreeBSD was released as part of FreeBSD 7.0.
* 2008: Development of a native ZFS Linux port started, known as ZFS on Linux.
* 2009: Apple's ZFS project closed, and the MacZFS project took over development of the driver. (It has since also been discontinued; it was current through
Mac OS X 10.9).
* 2010: OpenSolaris was discontinued following the
acquisition of Sun Microsystems by Oracle, resulting in the further development of ZFS on Solaris being no longer open-source.
* 2010: Following the discontinuation, a project named
illumos
Illumos (stylized as "illumos") is a partly free and open-source Unix operating system. It has been developed since 2010 and is based on OpenSolaris, after the discontinuation of that product by Oracle. It comprises a kernel, device driver ...
was formed and
forked OpenSolaris to continue open-source development, ZFS included. Ports of ZFS to other platforms continued by pulling in upstream changes from
illumos
Illumos (stylized as "illumos") is a partly free and open-source Unix operating system. It has been developed since 2010 and is based on OpenSolaris, after the discontinuation of that product by Oracle. It comprises a kernel, device driver ...
.
* 2012: Feature flags were introduced to replace legacy on-disk version numbers, enabling easier development of the ZFS on-disk format to support new features.
* 2013: Coexisting with the stable version of MacZFS, its prototype generation (known as OpenZFS on OS X or O3X) uses ZFS on Linux as the new upstream codebase.
* 2013: The first stable release of ZFS on Linux.
* 2013: Official announcement of the OpenZFS Project as an organization for maintaining OpenZFS.
New features and fixes are regularly pulled into OpenZFS from illumos and pushed into all ports to other platforms, and vice versa.
* 2016:
Ubuntu 16.04 includes the open-source ZFS file system variant by default.
* 2020: ZFS on Linux was merged into OpenZFS and added FreeBSD support, unifying the codebase for both platforms.
Ports
As the
FSF (Free Software Foundation) claimed that there was a
legal incompatibility between the CDDL and the GPL in 2005, Sun's implementation of the ZFS file system couldn't be used as a basis for the development of a
module in the
Linux kernel
The Linux kernel is a Free and open-source software, free and open source Unix-like kernel (operating system), kernel that is used in many computer systems worldwide. The kernel was created by Linus Torvalds in 1991 and was soon adopted as the k ...
, couldn't be merged into the
mainline Linux kernel, and
Linux distribution
A Linux distribution, often abbreviated as distro, is an operating system that includes the Linux kernel for its kernel functionality. Although the name does not imply product distribution per se, a distro—if distributed on its own—is oft ...
s generally did not include it as a precompiled kernel module. As a workaround,
FUSE, a framework that allows file systems to run in
userspace, was used on Linux as a separation layer for which the licensing issues did not apply, although with a set of its own issues that includes a performance penalty.
However, the April 2016 release of
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed primarily of free and open-source software. Developed by the British company Canonical (company), Canonical and a community of contributors under a Meritocracy, meritocratic gover ...
16.04
LTS includes ZFS as a kernel module.
Apple and OS X
In the release version of
Mac OS X 10.5, ZFS was available in read-only mode from the command line, which lacks the possibility to create z-pools or write to them. Before the 10.5 release,
Apple
An apple is a round, edible fruit produced by an apple tree (''Malus'' spp.). Fruit trees of the orchard or domestic apple (''Malus domestica''), the most widely grown in the genus, are agriculture, cultivated worldwide. The tree originated ...
released the "ZFS Beta Seed v1.1", which allowed read-write access and the creation of z-pools; however, the installer for the "ZFS Beta Seed v1.1" has been reported to only work on version 10.5.0, and has not been updated for version 10.5.1 and above. In August 2007, Apple opened a ZFS project on their Mac OS Forge web site. On that site, Apple provided the source code and binaries of their port of ZFS which includes read-write access, but without an installer. In October 2009, Apple discontinued development of the ZFS project on Mac OS Forge with no explanation. Apple removed everything but the CDDL-licensed portion of the source code for their final build of the ZFS project, code named "10a286". Complete ZFS support was originally advertised as a feature of
Snow Leopard Server before launch, but by the time the operating system was released all references to this feature had been removed from its features page.
Apple's "10a286" source code release, and versions of the previously released source and binaries, have been preserved and new development had been adopted by the MacZFS project
to continue development outside of Apple. As of July 2012, Mac ZFS implements z-pool version 8 and ZFS version 2, released with the October 2008 release of
Solaris. Additional historical information and commentary can be found on the Mac ZFS web site and
FAQ. However, the project ceased development in mid 2013 with a message asking users to switch to ''Open ZFS on OSX'' (abbreviated to ''O3X'').
Implementations
OpenSolaris
*
OpenSolaris
OpenSolaris () is a discontinued open-source computer operating system for SPARC and x86 based systems, created by Sun Microsystems and based on Solaris. Its development began in the mid 2000s and ended in 2010.
OpenSolaris was developed as ...
2008.05, 2008.11 and 2009.06 use ZFS as their default filesystem.
OpenIndiana
*
OpenIndiana uses OpenZFS with feature flags as implemented in
Illumos
Illumos (stylized as "illumos") is a partly free and open-source Unix operating system. It has been developed since 2010 and is based on OpenSolaris, after the discontinuation of that product by Oracle. It comprises a kernel, device driver ...
. ZFS version 28 used up to version 151a3.
* By upgrading from OpenSolaris snv_134 to both OpenIndiana and Solaris 11 Express, one also has the ability to upgrade and separately boot Solaris 11 Express on the same ZFS pool.
macOS
* ''Open ZFS on OSX'' (abbreviated to ''O3X'') is an implementation of ZFS for
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
. O3X is under active development, with close relation to ZFS on Linux and illumos' ZFS implementation, while maintaining feature flag compatibility with ZFS on Linux. O3X implements z-pool version 5000, and includes the Solaris Porting Layer (SPL) originally written for Mac ZFS, which has been further enhanced to include a memory management layer based on the illumos kmem and vmem allocators. O3X is fully featured, supporting LZ4 compression, deduplication, ARC,
L2ARC, and SLOG.
*
MacZFS
OpenZFS is an open-source implementation of the ZFS file system and volume manager initially developed by Sun Microsystems for the Oracle Solaris, Solaris operating system, and is now maintained by the OpenZFS Project. Similar to the original ZF ...
is free software providing support for ZFS on macOS. The stable legacy branch provides up to ZFS pool version 8 and ZFS filesystem version 2. The development branch, based on ZFS on Linux and OpenZFS, provides updated ZFS functionality, such as up to ZFS zpool version 5000 and feature flags. This implementation is no longer supported, and developers have advised users to switch to O3X.
* A proprietary implementation of ZFS (Zevo) was available at no cost from
GreenBytes, Inc., implementing up to ZFS file system version 5 and ZFS pool version 28. Zevo offered a limited ZFS feature set, pending further commercial development; it was sold to
Oracle
An oracle is a person or thing considered to provide insight, wise counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. If done through occultic means, it is a form of divination.
Descript ...
in 2014, with unknown future plans.
BSD
DragonFlyBSD
* Edward O'Callaghan started the initial port of ZFS to
DragonFlyBSD.
NetBSD
* The NetBSD ZFS port was started as a part of the 2007
Google Summer of Code and in August 2009, the code was merged into
NetBSD
NetBSD is a free and open-source Unix-like operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was fork (software development), forked. It continues to ...
's source tree.
FreeBSD
* Paweł Jakub Dawidek ported ZFS to
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
, and it has been part of FreeBSD since version 7.0.
This includes zfsboot, which allows booting FreeBSD directly from a ZFS dataset.
* FreeBSD's ZFS implementation is fully functional; the only missing features are kernel
CIFS server and
iSCSI
Internet Small Computer Systems Interface or iSCSI ( ) is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP ...
, but the latter can be added using externally available packages.
Samba
Samba () is a broad term for many of the rhythms that compose the better known Brazilian music genres that originated in the Afro-Brazilians, Afro Brazilian communities of Bahia in the late 19th century and early 20th century, It is a name or ...
can be used to provide a userspace CIFS server.
* FreeBSD 13.0-RELEASE switches ZFS implementation from illumos-based code base to the unified OpenZFS 2 code base. This change allows FreeBSD to receive OpenZFS improvements much quicker.
MidnightBSD
*
MidnightBSD, a desktop operating system derived from FreeBSD, supports ZFS storage pool version 6 as of 0.3-RELEASE. This was derived from code included in
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
7.0-RELEASE. An update to storage pool 28 is in progress in 0.4-CURRENT and based on 9-STABLE sources around FreeBSD 9.1-RELEASE code.
TrueOS (formerly PC-BSD)
*
TrueOS (formerly known as PC-BSD, now defunct
) was a desktop-oriented distribution of FreeBSD, which inherited its ZFS support.
TrueNAS Core, (formerly FreeNAS)
*
TrueNAS Core, an embedded open source
network-attached storage
Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a Heterogeneous computing, heterogeneous group of clients. In this context, the term "NAS" can refer to both th ...
(NAS) distribution based on
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
, has the same ZFS support as FreeBSD and
PC-BSD.
pfSense
*
pfSense
pfSense is a firewall/ router computer software distribution based on FreeBSD. The open source pfSense Community Edition (CE) and pfSense Plus is installed on a physical computer or a virtual machine
In computing, a virtual machine (VM) is ...
, an open source BSD based
router, supports ZFS, including installation and booting to ZFS pools, as of version 2.4.
OPNsense
*
OPNsense, an open source
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
based
firewall and
router distribution, supports ZFS, including installation and booting.
XigmaNAS
*
XigmaNAS (formerly NAS4Free), an embedded open source
network-attached storage
Network-attached storage (NAS) is a file-level computer data storage server connected to a computer network providing data access to a Heterogeneous computing, heterogeneous group of clients. In this context, the term "NAS" can refer to both th ...
(NAS) distribution based on
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
, has the same ZFS support as FreeBSD, ZFS storage pool version 5000. This project is a continuation of FreeNAS 7 series project.
Debian GNU/kFreeBSD
* Being based on the FreeBSD kernel,
Debian GNU/kFreeBSD has ZFS support from the kernel. However, additional userland tools are required, while it is possible to have ZFS as root or /boot file system in which case required
GRUB configuration is performed by the Debian installer since the ''Wheezy'' release.
* As of January 31, 2013, the ZPool version available is 14 for the ''Squeeze'' release, and 28 for the ''Wheezy-9'' release.
Linux
Although the ZFS filesystem supports
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
-based operating systems, difficulties arise for
Linux distribution
A Linux distribution, often abbreviated as distro, is an operating system that includes the Linux kernel for its kernel functionality. Although the name does not imply product distribution per se, a distro—if distributed on its own—is oft ...
maintainers wishing to provide native support for ZFS in their products due to
legal incompatibilities between the ZFS's CDDL license and the
GPL license used by the Linux kernel. To enable ZFS support within Linux, a
loadable kernel module
A loadable kernel module (LKM) is an executable library that extends the capabilities of a running kernel, or so-called ''base kernel'', of an operating system. LKMs are typically used to add support for new hardware (as device drivers) and/or ...
containing the CDDL-licensed ZFS code must be compiled and loaded into the kernel. According to the
Free Software Foundation
The Free Software Foundation (FSF) is a 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985. The organisation supports the free software movement, with the organization's preference for software being distributed ...
, the wording of the GPL license legally prohibits redistribution of the resulting product as a
derivative work
In copyright law, a derivative work is an expressive creation that includes major copyrightable elements of a first, previously created original work (the underlying work). The derivative work becomes a second, separate work independent from ...
, though this viewpoint has caused some controversy.
ZFS on FUSE
One potential workaround to licensing incompatibility was trialed in 2006, with an experimental port of the ZFS code to Linux's
FUSE system. The
filesystem ran entirely in
userspace instead of being integrated into the Linux kernel, and was therefore not considered a derivative work of the kernel. This approach was functional, but suffered from significant performance penalties when compared with integrating the filesystem as a native kernel module running in
kernel space
A modern computer operating system usually uses virtual memory to provide separate address spaces or regions of a single address space, called user space and kernel space. This separation primarily provides memory protection and hardware prote ...
.
As of 2016, the ZFS on FUSE project appears to be defunct, as the ZFS on Linux kernel driver has prevailed over the userspace one.
Native ZFS on Linux
A native port of ZFS for Linux produced by the
Lawrence Livermore National Laboratory
Lawrence Livermore National Laboratory (LLNL) is a Federally funded research and development centers, federally funded research and development center in Livermore, California, United States. Originally established in 1952, the laboratory now i ...
(LLNL) was released in March 2013, following these key events:
* 2008: prototype to determine viability
* 2009: initial ZVOL and
Lustre support
* 2010: development moved to
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
* 2011:
POSIX
The Portable Operating System Interface (POSIX; ) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines application programming interfaces (APIs), along with comm ...
layer added
* 2011: community of early adopters
* 2012: production usage of ZFS
* 2013: stable
GA release
, ZFS on
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
uses the OpenZFS pool version number 5000, which indicates that the features it supports are defined via
feature flags. This pool version is an unchanging number that is expected to never conflict with version numbers given by Oracle.
KQ InfoTech
Another native port for Linux was developed by KQ InfoTech in 2010.
This port used the ''zvol'' implementation from the Lawrence Livermore National Laboratory as a starting point. A release supporting ''zpool'' v28 was announced in January 2011.
In April 2011, KQ Infotech was acquired by
sTec, Inc., and their work on ZFS ceased.
Source code of this port can be found on
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
.
The work of KQ InfoTech was ultimately integrated into the LLNL's native port of ZFS for Linux.
Source code distribution
While license incompatibilities may arise with the distribution of compiled binaries containing ZFS code, it is generally agreed that distribution of the source code itself is not affected by this. In
Gentoo Linux
Gentoo Linux (pronounced ) is a Linux distribution built using the Portage package management system. Unlike a binary software distribution, the source code is compiled locally according to the user's preferences and is often optimized for ...
, configuring a ZFS root filesystem is well documented and the required packages can be installed from its package repository.
Slackware
Slackware is a Linux distribution created by Patrick Volkerding in 1993. Originally based on Softlanding Linux System (SLS), Slackware has been the basis for many other Linux distributions, most notably the first versions of SUSE Linux distr ...
also provides documentation on supporting ZFS, both as a kernel module and built into the
kernel.
Ubuntu integration
The question of the CDDL license's compatibility with the GPL license resurfaced in 2015, when the Linux distribution
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed primarily of free and open-source software. Developed by the British company Canonical (company), Canonical and a community of contributors under a Meritocracy, meritocratic gover ...
announced that it intended to make precompiled OpenZFS binary kernel modules available to end-users directly from the distribution's official package repositories. In 2016, Ubuntu announced that a legal review resulted in the conclusion that providing support for ZFS via a binary
kernel module was not in violation of the provisions of the GPL license. Other organizations such as the
Software Freedom Law Center
The Software Freedom Law Center (SFLC) is an organization that provides ''pro bono'' legal representation and related services to not-for-profit developers of free software/open source software. It was launched in February 2005 with Eben Moglen ...
followed Ubuntu's conclusion, while the FSF and SFC reiterated their opposing views.
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed primarily of free and open-source software. Developed by the British company Canonical (company), Canonical and a community of contributors under a Meritocracy, meritocratic gover ...
16.04 LTS ("
Xenial Xerus"), released on April 21, 2016, allows the user to install the OpenZFS binary packages directly from the Ubuntu software repositories.
, no legal challenge has been brought against
Canonical regarding the distribution of these packages.
As of 2019, Ubuntu supports experimental installation of ZFS as a root filesystem, starting with the 19.10 release ("Eoan Ermine"), to support coexistence of a nearly pure ZFS OS with GRUB and other operating systems on the same disk.
TrueNAS (formerly TrueNAS Scale)
A version of
TrueNAS by
iXsystems, based on
Debian Linux. As with TrueNAS Core (based on FreeBSD), it uses OpenZFS for storage and adds a variety of additional features. These include expanded device driver support, KVM virtual machines, PCIe passthrough and container support via Kubernetes and Docker. Furthermore, it allows clustered Docker and ZFS via
gluster
Gluster Inc. (formerly known as Z RESEARCH) was a software company that provided an open source platform for scale-out public and private cloud storage. The company was privately funded and headquartered in Sunnyvale, California, with an engineer ...
. Information about the current release can be found at the iXsystem
Software Statuspage. The "Scale" branding was officially dropped from the name with the release of TrueNAS 25.04, Fangtooth, which only has a Linux release.
Microsoft Windows
A port of open source ZFS was attempted in 2010 but after a hiatus of over one year development ceased in 2012. In October 2017, a new port of OpenZFS was announced by Jörgen Lundman at OpenZFS Developer Summit.
A newer open source port of ZFS which is considered a BETA release, can be found also on GitHub.
Version history
Pool versions and feature flags
Originally,
version numbers of the pool and file system were incremented as new features were introduced, in order to designate the on-disk file system format and available features. This worked well when a single entity controlled the development of ZFS, and this versioning scheme is still in use with the ZFS in
Oracle
An oracle is a person or thing considered to provide insight, wise counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. If done through occultic means, it is a form of divination.
Descript ...
Solaris.
In a more
distributed development model, having a single version number is far from ideal as all implementations of OpenZFS would need to agree on all changes to the on-disk file system format. The solution selected by OpenZFS was to introduce ''feature flags'' as a new
versioning system that tags on-disk format changes with unique names, and supports both completely independent format changes and format changes that depend on each other. A pool can be moved and used between OpenZFS implementations as long as all feature flags in use by the pool are supported by both implementations.
In OpenZFS, the pool version is permanently set to 5000, signifying that the pool indicates new features by setting or unsetting ZFS feature flags rather than by incrementing the pool version.
The number 5000 was chosen because it is expected to never conflict with version numbers given by
Oracle
An oracle is a person or thing considered to provide insight, wise counsel or prophetic predictions, most notably including precognition of the future, inspired by deities. If done through occultic means, it is a form of divination.
Descript ...
. Legacy version numbers still exist for pool versions 1–28. Future on-disk format changes are enabled / disabled independently via these feature flags.
Legacy version numbers still exist for pool versions 1–28, and are implied by the pool version 5000;
the initial proposal was to use 1000 as the pool version.
Future on-disk format changes are enabled and disabled independently via feature flags.
Feature flags are exposed as pool properties, following these naming scheme rules:
* Format of the property name is
* is the reverse DNS name of the organization that developed the feature, ensuring unique property names.
* Property names can be shortened to when they remain unambiguous.
For example, is a valid property name, and it could be shortened to .
Each pool feature can be in either ''disabled'', ''enabled'', or ''active'' state. Disabled features are those that will not be used, and no on-disk format changes will be made; as a result, such features are
backward-compatible. Enabled features are those that will be used, no on-disk format changes have been made yet, but the software may make the changes at any time; such features are still backward-compatible. Active features are those that have made backward-incompatible on-disk format changes to the pool.
When any pool feature is enabled, legacy version of the pool is automatically upgraded to 5000 and any other prerequisite features are also enabled. By default, new pools are created with all supported features enabled. In general, state of a feature can be changed from ''active'' back to ''enabled'', undoing that way performed on-disk format changes and making the pool compatible again with an older OpenZFS implementation; however, for some features that might not be possible.
On-disk format changes can be associated with either ''features for write'' or ''features for read''. The former are the features that an OpenZFS implementation must support to be capable of writing to the pool, while supporting such features is not mandatory for opening the pool in read-only mode. The latter are the features that an OpenZFS implementation must support to be able to read from the pool or to just open it, because opening a pool is not possible without actually reading from it.
For example, feature adds a new on-disk data structure to keep track of freed datasets, but an OpenZFS implementation does not need to know about this data structure to access the pool in read-only mode. Additionally, writing to a pool that has some features in ''active'' state is not possible by an OpenZFS implementation that does not support the same features.
A list of
feature flags and which operating systems support them is available from the OpenZFS documentation Web site (here the old Open-ZFS.org Web site
)
OpenZFS 2.0
Historically, OpenZFS has been implemented as a core ZFS code, with each operating system's team adapting it to fit into their projects. This led in some cases to feature stagnation and divergence of features and command lines, as different operating systems developed divergent features and bug fixes, often for a single platform rather than across all platforms. Over time, new feature development shifted from
Illumos
Illumos (stylized as "illumos") is a partly free and open-source Unix operating system. It has been developed since 2010 and is based on OpenSolaris, after the discontinuation of that product by Oracle. It comprises a kernel, device driver ...
to
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
.
These new features and fixes then had to be backported to Illumos before they could be re-ported for
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
.
But this was difficult because the Linux version also included many smaller changes, which were hard to disentangle.
In 2018, it was agreed that OpenZFS development would be overhauled to remedy these issues.
Rather than try to import all the Linux changes to other platforms piecemeal, the entire Linux ZFS code would be 'pivoted' as a whole, with other platforms being based on the more actively developed Linux version.
A wide range of ported and new features, including many long-desired enhancements, would also be rolled out or ported across platforms, and future changes would be discussed across platforms before being implemented.
The plans included appropriate porting layers to prevent Linux,
GPL or Linux-KPI
shim code from being introduced to other platform
kernels.
The features in progress or ported for OpenZFS 2.0 is lengthy, and includes:
* Faster rollout of enhancements and new features across platforms
* Command line standardisation
* Improved pool portability (ZFS pools created on one system can be equally used by another)
* Wider cross-platform feature parity and platform independence
* Overlay (union) mounts accepted by default
* Bug fixes and enhancements
* ZTS and various other features working on FreeBSD
*
TRIM and
ACLMODE enhancements
* ZFS holds (from FreeBSD)
* Enhanced native NFSv4
ACLs (FreeBSD)
* Enhanced
AES-GCM performance for encrypted pools
* Redacted send/receive
* Log spacemap and other metaslab management enhancements - a project to re-implement ZFS' management of free space and "metaslabs" for much greater efficiency
* Fast clone deletion
* Zstd data compression as a new option
* Channel program property inheritance
* AltiVec RAID-Z
* Bookmark support and copying
* Direct IO support
* Persistent L2ARC (L2ARC retained across reboots)
* Sequential (high speed) scrub and resilver
* Scrub pause/resume
* Resilver restart
* Device (VDEV) removal
* Zpool initialize and checkpoint
* Channel programs
* Large Dnode
* Allocation classes (allowing specific high speed storage to be designated for
metadata
Metadata (or metainformation) is "data that provides information about other data", but not the content of the data itself, such as the text of a message or the image itself. There are many distinct types of metadata, including:
* Descriptive ...
and deduplication tables)
* Parallel pool mounting
* Per-vdev properties
* Deduplication enhancements – dedup-log (high speed deduplication), dedup table size limits, and deduplication table preloading (loaded fully at one time rather than piecemeal as needed), listed as "nice to have" in 2018, were all stated in April 2020 to be "coming along nicely" or largely complete
See also
*
Comparison of file systems
The following tables compare general and technical information for a number of file systems.
General information
Metadata
All widely used file systems record a last modified time stamp (also known as "mtime"). It is not included i ...
*
Btrfs
Btrfs (pronounced as "better F S", "butter F S", "b-tree F S", or "B.T.R.F.S.") is a computer storage format that combines a file system based on the copy-on-write (COW) principle with a logical volume manager (distinct from Linux's LVM), d ...
—a copy-on-write file system for Linux
*
HAMMER
A hammer is a tool, most often a hand tool, consisting of a weighted "head" fixed to a long handle that is swung to deliver an impact to a small area of an object. This can be, for example, to drive nail (fastener), nails into wood, to sh ...
—a high-availability file system for DragonFly BSD
*
Write Anywhere File Layout (WAFL)—NetApp's proprietary file layout
References
External links
The OpenZFS Project and list of
*FreeBSD
WebpageGitHubwiki
*illumos
WebpageGitHub
*Linux
WebpageGitHub
*macOS
WebpageGitHubGoogle
*Windows
WebpageGitHub
* , October 11, 2013, by Matt Ahrens
OpenZFS Device Removal
, January 15, 2015, by Alex Reece
{{MacOS
Compression file systems
Disk file systems
File systems supported by the Linux kernel
RAID
Software using Common Development and Distribution License
Volume manager
Third-party Linux kernel modules