OpenZFS#macOS
{{Short description|Open-source implementation of ZFS file system}}
{{Use mdy dates|date=August 2014}}
{{Infobox software
| name = OpenZFS
| logo = OpenZFS logo.svg
| logo alt = Logo of the OpenZFS project
| programming language = C
| author = Sun Microsystems
| developer = OpenZFS Project
| released = Ported to various systems between 2006 and 2010. Forked from OpenSolaris {{Start date and age|2010|08}}
| latest release version = {{wikidata|property|preferred|references|edit|Q17073228|P348|P548=Q2804309}}
| latest release date = {{Start date and age|{{wikidata|qualifier|preferred|single|Q17073228|P348|P548=Q2804309|P577}}}}
| latest preview version = 2.3.0-rc5{{GitHub |openzfs/zfs/releases |Releases · openzfs/zfs}}
| latest preview date = {{Start date and age|2025|01|06}}
| operating system = OpenSolaris, illumos, OpenIndiana, FreeBSD, NetBSD, macOS, Linux, OSv
| license = Common Development and Distribution License
| website = {{URL|https://openzfs.org/}}
| repo = {{URL|https://github.com/openzfs/zfs}}
}}
OpenZFS is an open-source implementation of the ZFS file system and volume manager initially developed by Sun Microsystems 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, data deduplication, copy-on-write 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 environments, as well as consumer devices like network-attached storage (NAS) devices, where data reliability and safety is essential. While initially designed for Solaris, development has since focused on Linux, while ports exist for various BSD distributions and macOS. 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.{{Cite web |date=September 23, 2013 |title=OpenZFS – Communities co-operating on ZFS code and features |url=http://www.freebsdnews.net/2013/09/23/openzfs-communities-co-operating-on-zfs-code-and-features/ |url-status=live |archive-url=https://web.archive.org/web/20131014000145/http://www.freebsdnews.net/2013/09/23/openzfs-communities-co-operating-on-zfs-code-and-features/ |archive-date=October 14, 2013 |access-date=March 14, 2014 |website=freebsdnews.net}} 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.{{Cite web |date=March 5, 2020 |title=FreeNAS and TrueNAS are Unifying |url=https://www.ixsystems.com/blog/freenas-truenas-unification |url-status=live |archive-url=https://web.archive.org/web/20200604013042/https://www.ixsystems.com/blog/freenas-truenas-unification/ |archive-date=June 4, 2020 |access-date=June 7, 2020}}{{Cite web |title=OpenZFS 2.0 · openzfs/ZFS |url=https://github.com/openzfs/zfs/projects/25 |url-status=live |archive-url=https://web.archive.org/web/20200417085650/https://github.com/openzfs/zfs/projects/25 |archive-date=April 17, 2020 |access-date=June 7, 2020 |website=GitHub}}
History
{{See also|History and implementations of ZFS}}
The ZFS file system was originally developed by Sun Microsystems 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 operating system, and it was later ported to other operating systems and environments.{{Cite web
| url = http://open-zfs.org/wiki/History
| title = OpenZFS History
| access-date = September 24, 2013
| website = open-zfs.org
| archive-date = December 24, 2013
| archive-url = https://web.archive.org/web/20131224105247/http://open-zfs.org/wiki/History
| url-status = live
The following is a list of key events in the development of ZFS and its various implementations:{{Cite web
| url = https://events.linuxfoundation.org/sites/events/files/slides/OpenZFS%20-%20LinuxCon_0.pdf
| title = LinuxCon 2013: OpenZFS
| date = September 17, 2013
| access-date = November 13, 2013
| first1 = Matt
| last1 = Ahrens
| first2 = Brian
| last2 = Behlendorf
| publisher = Linux Foundation
| archive-date = November 13, 2013
| archive-url = https://web.archive.org/web/20131113204955/http://events.linuxfoundation.org/sites/events/files/slides/OpenZFS%20-%20LinuxCon_0.pdf
| url-status = live
}}
- 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.
- 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 was formed and forked OpenSolaris to continue open-source development,{{Cite web
| url = http://www.slideshare.net/bcantrill/fork-yeah-the-rise-and-development-of-illumos
| title = Fork Yeah! The Rise and Development of illumos
| date = December 8, 2011
| access-date = September 24, 2013
| first = Bryan
| last = Cantrill
| publisher = SlideShare
| archive-date = September 27, 2013
| archive-url = https://web.archive.org/web/20130927190448/http://www.slideshare.net/bcantrill/fork-yeah-the-rise-and-development-of-illumos
| url-status = live
| url = http://wiki.illumos.org/display/illumos/illumos+FAQs
| title = illumos FAQs
| access-date = September 24, 2013
| website = illumos.org
| archive-date = December 24, 2013
| archive-url = https://web.archive.org/web/20131224103149/http://wiki.illumos.org/display/illumos/illumos+FAQs
| url-status = live
}} ZFS included. Ports of ZFS to other platforms continued by pulling in upstream changes from illumos.
- 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.{{Cite web
| url = http://code.google.com/p/maczfs/
| title = MacZFS: Official Site for the Free ZFS for Mac OS
| access-date = March 2, 2014
| website = code.google.com
| archive-date = February 11, 2014
| archive-url = https://web.archive.org/web/20140211021646/http://code.google.com/p/maczfs/
| url-status = live
| url = https://openzfsonosx.org/wiki/Main_Page
| title = OpenZFS on OS X
| date = November 15, 2014
| access-date = November 23, 2014
| website = openzfsonosx.org
| archive-date = November 29, 2014
| archive-url = https://web.archive.org/web/20141129042747/https://openzfsonosx.org/wiki/Main_Page
| url-status = live
}}
- 2013: The first stable release of ZFS on Linux.{{Cite web
| url = https://lwn.net/Articles/545163/
| title = ZFS on Linux 0.6.1
| date = March 29, 2013
| access-date = July 4, 2016
| first = Jonathan
| last = Corbet
| publisher = LWN.net
| archive-date = July 30, 2016
| archive-url = https://web.archive.org/web/20160730051437/http://lwn.net/Articles/545163/
| url-status = live
}}
- 2013: Official announcement of the OpenZFS Project as an organization for maintaining OpenZFS.{{Cite web |date=September 17, 2013 |title=The OpenZFS project launches |url=https://lwn.net/Articles/567090/ |url-status=live |archive-url=https://web.archive.org/web/20161011141200/https://lwn.net/Articles/567090/ |archive-date=October 11, 2016 |access-date=October 1, 2013 |publisher=LWN.net}}{{Cite web |date=September 17, 2013 |title=OpenZFS Announcement |url=http://open-zfs.org/wiki/Announcement |url-status=live |archive-url=https://web.archive.org/web/20180402091425/http://open-zfs.org/wiki/Announcement |archive-date=April 2, 2018 |access-date=September 19, 2013 |website=open-zfs.org}} 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.{{Cite web |title=Release OpenZFS 2.0.0 · openzfs/zfs |url=https://github.com/openzfs/zfs/releases/tag/zfs-2.0.0 |access-date=2024-03-11 |website=GitHub |language=en}}
= 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, couldn't be merged into the mainline Linux kernel, and Linux distributions generally did not include it as a precompiled kernel module.{{cite web
| url = https://www.softwarefreedom.org/resources/2016/linux-kernel-cddl.html
| title = The Linux Kernel, CDDL and Related Issues
| date = February 26, 2016
| access-date = March 30, 2016
| first1 = Eben
| last1 = Moglen
| first2 = Mishi
| last2 = Choudharyl
| website = softwarefreedom.org
| archive-date = April 1, 2016
| archive-url = https://web.archive.org/web/20160401205722/http://softwarefreedom.org/resources/2016/linux-kernel-cddl.html
| url-status = live
| url = https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/
| title = GPL Violations Related to Combining ZFS and Linux
| date = February 25, 2016
| access-date = March 30, 2016
| first1 = Bradley M.
| last1 = Kuhn
| first2 = Karen M.
| last2 = Sandler
| website = sfconservancy.org
| archive-date = April 3, 2016
| archive-url = https://web.archive.org/web/20160403231244/http://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/
| url-status = live
| url = http://blog.hansenpartnership.com/are-gplv2-and-cddl-incompatible/
| title = Are GPLv2 and CDDL incompatible?
| date = February 23, 2016
| access-date = July 3, 2016
| first = James
| last = Bottomley
| website = hansenpartnership.com
| archive-date = March 1, 2016
| archive-url = https://web.archive.org/web/20160301044941/http://blog.hansenpartnership.com/are-gplv2-and-cddl-incompatible/
| url-status = live
}} 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.{{cite magazine
| url = http://www.linuxjournal.com/content/zfs-finding-its-way-linux-near-you
| title = ZFS: Finding Its Way to a Linux Near You?
| date = June 1, 2016
| access-date = July 4, 2016
| first = Petros
| last = Koutoupis
| magazine = Linux Journal
| archive-date = June 27, 2016
| archive-url = https://web.archive.org/web/20160627221356/http://www.linuxjournal.com/content/zfs-finding-its-way-linux-near-you
| url-status = live
| url = https://arstechnica.com/information-technology/2010/06/uptake-of-native-linux-zfs-port-hampered-by-license-conflict/
| title = Uptake of native Linux ZFS port hampered by license conflict
| date = June 9, 2010
| access-date = July 1, 2014
| first = Ryan
| last = Paul
| website = Ars Technica
| archive-date = July 14, 2014
| archive-url = https://web.archive.org/web/20140714170107/http://arstechnica.com/information-technology/2010/06/uptake-of-native-linux-zfs-port-hampered-by-license-conflict/
| url-status = live
}} However, the April 2016 release of Ubuntu 16.04 LTS includes ZFS as a kernel module.{{cite web
| url = https://www.theregister.co.uk/2016/04/21/ubuntu_16_04_lts_launched/
| title = Ubuntu 16.04 LTS arrives today complete with forbidden ZFS
| date = April 21, 2016
| access-date = July 3, 2016
| first = Simon
| last = Sharwood
| website = The Register
| archive-date = July 8, 2016
| archive-url = https://web.archive.org/web/20160708231237/http://www.theregister.co.uk/2016/04/21/ubuntu_16_04_lts_launched
| url-status = live
| url = https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-ZFS-Standard-Plans
| title = Ubuntu is Planning to Make The ZFS Filesystem a "Standard" Offering
| date = October 6, 2015
| access-date = July 3, 2016
| first = Michael
| last = Larabel
| publisher = Phoronix
| archive-date = June 30, 2016
| archive-url = https://web.archive.org/web/20160630114359/https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-ZFS-Standard-Plans
| url-status = live
}}
= 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.{{cite web | url=http://www.macnn.com/articles/07/06/12/leopard.uses.hfs.not.zfs/ | title=Apple: Leopard offers limited ZFS read-only | work=MacNN | date=June 12, 2007 | access-date=June 23, 2007 | archive-url=https://web.archive.org/web/20070619171212/http://www.macnn.com/articles/07/06/12/leopard.uses.hfs.not.zfs/ | archive-date=June 19, 2007 | url-status=live}} Before the 10.5 release, Apple released the "ZFS Beta Seed v1.1", which allowed read-write access and the creation of z-pools;{{cite web | url=https://arstechnica.com/journals/apple.ars/2007/10/07/apple-delivers-zfs-readwrite-developer-preview-1-1-for-leopard | title=Apple delivers ZFS Read/Write Developer Preview 1.1 for Leopard | work=Ars Technica | date=October 7, 2007 | access-date=October 7, 2007 | archive-url=https://web.archive.org/web/20071010082428/http://arstechnica.com/journals/apple.ars/2007/10/07/apple-delivers-zfs-readwrite-developer-preview-1-1-for-leopard | archive-date=October 10, 2007 | url-status=live}} 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.{{cite web|url=http://synesius.wordpress.com/2007/11/18/zfs-beta-seed-v11-will-not-install-on-leopard1-1051/ |title=ZFS Beta Seed v1.1 will not install on Leopard.1 (10.5.1) " ideas are free |first=Ché |last=Kristo |date=November 18, 2007 |access-date=December 30, 2007 |archive-url=https://web.archive.org/web/20071224112557/http://synesius.wordpress.com/2007/11/18/zfs-beta-seed-v11-will-not-install-on-leopard1-1051/ |archive-date=December 24, 2007}} 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,{{Cite web |date=2009-11-02 |title=ZFS |url=http://zfs.macosforge.org/ |access-date=2024-09-19 |archive-url=https://web.archive.org/web/20091102050530/http://zfs.macosforge.org/ |archive-date=November 2, 2009 }} but without an installer.http://alblue.blogspot.com/2008/11/zfs-119-on-mac-os-x.html {{Webarchive|url=https://web.archive.org/web/20120220074105/http://alblue.blogspot.com/2008/11/zfs-119-on-mac-os-x.html |date=February 20, 2012}} |title=Alblue.blogspot.com 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,{{cite web | url = https://www.apple.com/server/macosx/snowleopard/ | archive-url = https://web.archive.org/web/20080721031014/http://www.apple.com/server/macosx/snowleopard/ | archive-date = 2008-07-21 | title = Snow Leopard (archive.org cache) | date =July 21, 2008}} but by the time the operating system was released all references to this feature had been removed from its features page.{{cite web | url = https://www.apple.com/server/macosx/snowleopard/ | title = Snow Leopard | date =June 9, 2009 | access-date =June 10, 2008 | archive-url = https://web.archive.org/web/20080721031014/http://www.apple.com/server/macosx/snowleopard/ | archive-date =July 21, 2008 | url-status = live}}
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{{cite web |url=https://groups.google.com/group/zfs-macos/?pli=1 |title=zfs-macos | Google Groups |access-date=November 4, 2011 |archive-url=https://web.archive.org/web/20121108014127/http://groups.google.com/group/zfs-macos/?pli=1 |archive-date=November 8, 2012 |url-status=live}}{{cite web |url=http://maczfs.org/ |title=maczfs – Official Site for the Free ZFS for Mac OS – Google Project Hosting |access-date=July 30, 2012 |archive-url=https://web.archive.org/web/20160729211102/http://maczfs.org/ |archive-date=July 29, 2016 |url-status=live}}{{Citation |last=Sallings |first=Dustin |title=dustin/mac-zfs |date=2024-05-31 |url=https://github.com/dustin/mac-zfs |access-date=2024-09-19}} 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.[https://code.google.com/p/maczfs/wiki/FAQ Frequently Asked Questions page] {{Webarchive|url=https://web.archive.org/web/20150319135415/http://code.google.com/p/maczfs/wiki/FAQ |date=March 19, 2015}} on code.google.com/p/maczfs However, the project ceased development in mid 2013 with a message asking users to switch to Open ZFS on OSX (abbreviated to O3X).{{Cite web |title=Google Code Archive - Long-term storage for Google Code Project Hosting. |url=https://code.google.com/archive/p/maczfs/ |access-date=2024-09-19 |website=code.google.com}}
Implementations
{{see also|Oracle ZFS#Implementations}}
=OpenSolaris=
- OpenSolaris 2008.05, 2008.11 and 2009.06 use ZFS as their default filesystem.
==OpenIndiana==
- OpenIndiana uses OpenZFS with feature flags as implemented in Illumos. ZFS version 28 used up to version 151a3.{{cite web|url=http://wiki.openindiana.org/oi/oi_151a_prestable5+Release+Notes|title=oi_151a_prestable5 Release Notes|access-date=May 23, 2016|archive-url=https://web.archive.org/web/20160517204530/http://wiki.openindiana.org/oi/oi_151a_prestable5+Release+Notes|archive-date=May 17, 2016|url-status=live}}
- 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.{{cite web|url=http://wiki.openindiana.org/oi/Upgrading+from+OpenSolaris|title=Upgrading from OpenSolaris|access-date=September 24, 2011|archive-url=https://web.archive.org/web/20110926154800/http://wiki.openindiana.org/oi/Upgrading+from+OpenSolaris|archive-date=September 26, 2011|url-status=live}}
= macOS =
- Open ZFS on OSX (abbreviated to O3X) is an implementation of ZFS for macOS.{{cite web |date=2014-09-29 |title=OpenZFS on OS X |url=https://openzfsonosx.org/wiki/OpenZFS_on_OS_X |url-status=live |archive-url=https://web.archive.org/web/20141129042839/https://openzfsonosx.org/wiki/OpenZFS_on_OS_X |archive-date=November 29, 2014 |access-date=2014-11-23 |website=openzfsonosx.org}} 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.{{Citation needed|date=November 2014}}
- MacZFS 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.{{cite web |title=Features – OpenZFS – Feature flags |url=http://open-zfs.org/wiki/Features#Feature_Flags |url-status=live |archive-url=https://web.archive.org/web/20130922041052/http://www.open-zfs.org/wiki/Features#Feature_Flags |archive-date=September 22, 2013 |access-date=September 22, 2013 |publisher=OpenZFS}}{{cite web |title=MacZFS: Official Site for the Free ZFS for Mac OS |url=https://code.google.com/p/maczfs/ |url-status=live |archive-url=https://web.archive.org/web/20150319165431/http://code.google.com/p/maczfs/ |archive-date=March 19, 2015 |access-date=2014-03-02 |work=code.google.com |publisher=MacZFS}}
- 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.{{cite web |date=2012-09-15 |title=ZEVO Wiki Site/ZFS Pool And Filesystem Versions |url=http://zevo.getgreenbytes.com/wiki/pmwiki.php?n=Site.ZFSPoolAndFilesystemVersions |url-status=live |archive-url=https://web.archive.org/web/20140810064726/http://zevo.getgreenbytes.com/wiki/pmwiki.php?n=Site.ZFSPoolAndFilesystemVersions |archive-date=August 10, 2014 |access-date=September 22, 2013 |publisher=GreenBytes, Inc.}} Zevo offered a limited ZFS feature set, pending further commercial development; it was sold to Oracle in 2014, with unknown future plans.{{Citation needed|date=November 2014}}
=BSD=
==DragonFlyBSD==
- Edward O'Callaghan started the initial port of ZFS to DragonFlyBSD.{{cite web | url = https://github.com/victoredwardocallaghan/DragonFlyBSD/tree/zfs-port | title = Github zfs-port branch | website = GitHub | access-date =October 5, 2014 | archive-url = https://web.archive.org/web/20160109150222/https://github.com/victoredwardocallaghan/DragonFlyBSD/tree/zfs-port | archive-date =January 9, 2016 | url-status = live | date =September 23, 2014}}
==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's source tree.{{cite web | url = http://www.netbsd.org/contrib/soc-projects.html#zfs-port | title = NetBSD Google Summer of Code projects: ZFS | access-date =September 5, 2007 | archive-url = https://web.archive.org/web/20071011015826/http://netbsd.org/contrib/soc-projects.html#zfs-port | archive-date =October 11, 2007 | url-status = live}}
==FreeBSD==
- Paweł Jakub Dawidek ported ZFS to FreeBSD, and it has been part of FreeBSD since version 7.0.{{cite web | url = http://lists.freebsd.org/pipermail/freebsd-current/2007-April/070544.html | title = ZFS committed to the FreeBSD base | first = Paweł | last = Dawidek | access-date =April 6, 2007 | date =April 6, 2007 | archive-url = https://web.archive.org/web/20120622050730/http://lists.freebsd.org/pipermail/freebsd-current/2007-April/070544.html | archive-date =June 22, 2012 | url-status = live}} This includes zfsboot, which allows booting FreeBSD directly from a ZFS dataset.{{cite web | url = http://svn.freebsd.org/viewvc/base?view=revision&revision=192498 | title = Revision 192498 |access-date=May 22, 2009 |date=May 20, 2009}}{{cite web|url=http://ivoras.sharanet.org/blog/tree/2009-05-21.zfs-v13-in-7-stable.html |title=ZFS v13 in 7-STABLE |access-date=May 22, 2009 |date=May 21, 2009 |archive-url=https://web.archive.org/web/20090527011500/http://ivoras.sharanet.org/blog/tree/2009-05-21.zfs-v13-in-7-stable.html |archive-date=May 27, 2009}}
- FreeBSD's ZFS implementation is fully functional; the only missing features are kernel CIFS server and iSCSI, but the latter can be added using externally available packages.{{cite web|url=http://shell.peach.ne.jp/aoyama/|title=iSCSI target for FreeBSD|access-date=August 6, 2011|archive-url=https://web.archive.org/web/20110714005700/http://shell.peach.ne.jp/aoyama/|archive-date=July 14, 2011}} Samba 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.{{cite web |title=FreeBSD 13.0-RELEASE Release Notes |url=https://www.freebsd.org/releases/13.0R/relnotes/ |website=FreeBSD |publisher=The FreeBSD Project |access-date=2021-07-10}} This change allows FreeBSD to receive OpenZFS improvements much quicker.{{cite web |first1=Matt |last1=Macy |title=commit 9e5787d2284e187abb5b654d924394a65772e004 Merge OpenZFS support in to HEAD. |url=https://cgit.freebsd.org/src/commit/?id=9e5787d2284e |website=src - FreeBSD source tree |access-date=2021-07-10 |date=2020-08-25}}
==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 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.{{citation needed|date=April 2018}}
==TrueOS (formerly PC-BSD)==
- TrueOS (formerly known as PC-BSD, now defunct{{Cite web
| url = https://www.truenas.com/trueos-discontinuation/
| title = TrueOS discontinuation
| access-date = 2021-04-09
| website = trueos.com
| date = August 19, 2020
| archive-date = 2021-01-24
| archive-url = https://web.archive.org/web/20210124125445/https://www.truenas.com/trueos-discontinuation/
| url-status = live
}}) was a desktop-oriented distribution of FreeBSD, which inherited its ZFS support.{{Citation needed|date=January 2017}}
== TrueNAS Core, (formerly FreeNAS) ==
- TrueNAS Core, an embedded open source network-attached storage (NAS) distribution based on FreeBSD, has the same ZFS support as FreeBSD and PC-BSD.{{cite web|url=https://www.ixsystems.com/blog/truenas-12-0-is-released/|title=TrueNAS 12.0 is Released!|date=October 21, 2020 |access-date=April 9, 2021}}
==pfSense==
==OPNsense==
==XigmaNAS==
- XigmaNAS (formerly NAS4Free), an embedded open source network-attached storage (NAS) distribution based on FreeBSD, has the same ZFS support as FreeBSD, ZFS storage pool version 5000. This project is a continuation of FreeNAS 7 series project.{{cite web |title= NAS4Free: Features |url= http://www.nas4free.org/index.php?id=3 |access-date=January 13, 2015 |archive-url= https://web.archive.org/web/20150206032723/http://www.nas4free.org/index.php?id=3 |archive-date=February 6, 2015 |url-status= live}}
==Debian GNU/kFreeBSD==
- Being based on the FreeBSD kernel, Debian GNU/kFreeBSD has ZFS support from the kernel. However, additional userland tools are required,{{cite web
| title = Debian GNU/kFreeBSD FAQ
| work = Is there ZFS support?
| url = http://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._Is_there_ZFS_support.3F
| access-date = 2013-09-24
| archive-url = https://web.archive.org/web/20130927182446/https://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._Is_there_ZFS_support.3F
| archive-date =September 27, 2013
| url-status = live
}} while it is possible to have ZFS as root or /boot file system{{cite web
| title = Debian GNU/kFreeBSD FAQ
| work = Can I use ZFS as root or /boot file system?
| url = https://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._Can_I_use_ZFS_as_root_or_.2Fboot_file_system.3F
| access-date = 2013-09-24
| archive-url = https://web.archive.org/web/20190118051541/https://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._Can_I_use_ZFS_as_root_or_.2Fboot_file_system.3F
| archive-date =January 18, 2019
| url-status = live
}} in which case required GRUB configuration is performed by the Debian installer since the Wheezy release.{{cite web
| title = Debian GNU/kFreeBSD FAQ
| work = What grub commands are necessary to boot Debian/kFreeBSD from a zfs root?
| url = https://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._What_grub_commands_are_necessary_to_boot_Debian.2FkFreeBSD_from_a_zfs_root.3F
| access-date = 2013-09-24
| archive-url = https://web.archive.org/web/20190118051541/https://wiki.debian.org/Debian_GNU/kFreeBSD_FAQ#Q._What_grub_commands_are_necessary_to_boot_Debian.2FkFreeBSD_from_a_zfs_root.3F
| archive-date =January 18, 2019
| url-status = live
}}
- As of January 31, 2013, the ZPool version available is 14 for the Squeeze release, and 28 for the Wheezy-9 release.{{cite web
| title = Debian GNU/kFreeBSD Becomes More Interesting
| url = https://www.phoronix.com/scan.php?page=news_item&px=ODU4Ng
| date = 2010-09-10
| access-date = 2013-09-24
| first = Michael
| last = Larabel
| publisher = Phoronix
| archive-url = https://web.archive.org/web/20161129111815/https://www.phoronix.com/scan.php?page=news_item&px=ODU4Ng
| archive-date =November 29, 2016
| url-status = live
}}
=Linux=
Although the ZFS filesystem supports Linux-based operating systems, difficulties arise for Linux distribution 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 containing the CDDL-licensed ZFS code must be compiled and loaded into the kernel. According to the Free Software Foundation, the wording of the GPL license legally prohibits redistribution of the resulting product as a derivative work,{{cite web
| url = https://www.softwarefreedom.org/resources/2016/linux-kernel-cddl.html
| title = The Linux Kernel, CDDL and Related Issues
| date = February 26, 2016
| access-date = March 30, 2016
| first1 = Eben
| last1 = Moglen
| first2 = Mishi
| last2 = Choudharyl
| website = softwarefreedom.org
| archive-url = https://web.archive.org/web/20160401205722/http://softwarefreedom.org/resources/2016/linux-kernel-cddl.html
| archive-date =April 1, 2016
| url-status = live
| url = https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/
| title = GPL Violations Related to Combining ZFS and Linux
| date = February 25, 2016
| access-date = March 30, 2016
| first1 = Bradley M.
| last1 = Kuhn
| first2 = Karen M.
| last2 = Sandler
| website = sfconservancy.org
| archive-url = https://web.archive.org/web/20160403231244/http://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/
| archive-date =April 3, 2016
| url-status = live
}} though this viewpoint has caused some controversy.{{cite web |url=https://lwn.net/Articles/237905/ |title=Linus on GPLv3 and ZFS |publisher=Lwn.net |date=June 12, 2007 |access-date=November 4, 2011 |archive-url=https://web.archive.org/web/20110723194715/http://lwn.net/Articles/237905/ |archive-date=July 23, 2011 |url-status=live}}{{cite web
| url = https://arstechnica.com/information-technology/2010/06/uptake-of-native-linux-zfs-port-hampered-by-license-conflict/
| title = Uptake of native Linux ZFS port hampered by license conflict
| date = June 9, 2010
| access-date = July 1, 2014
| first = Ryan
| last = Paul
| publisher = Ars Technica
| archive-url = https://web.archive.org/web/20140714170107/http://arstechnica.com/information-technology/2010/06/uptake-of-native-linux-zfs-port-hampered-by-license-conflict/
| archive-date =July 14, 2014
| url-status = live
}}
==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.{{cite web |url=http://www.csl.sri.com/users/gehani/papers/SAC-2010.FUSE.pdf |title=Performance and Extension of User Space File Systems |first1=Aditya |last1=Rajgarhia |first2=Ashish |last2=Gehani |name-list-style=amp |date=November 23, 2012 |access-date=November 23, 2012 |archive-url=https://web.archive.org/web/20140907030210/http://www.csl.sri.com/users/gehani/papers/SAC-2010.FUSE.pdf |archive-date=September 7, 2014 |url-status=live}} 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 (LLNL) was released in March 2013,{{cite web
| url = https://groups.google.com/a/zfsonlinux.org/forum/?fromgroups=#!topic/zfs-announce/ZXADhyOwFfA
| last = Behlendorf
| first = Brian
| title = spl/zfs-0.6.1 released
| work = zfs-announce mailing list
| date = 2013-05-28
| access-date = 2013-10-09
| archive-url = https://web.archive.org/web/20130608034401/https://groups.google.com/a/zfsonlinux.org/forum/?fromgroups=#!topic/zfs-announce/ZXADhyOwFfA
| archive-date =June 8, 2013
| url-status = live
| title = ZFS on Linux
| url = http://zfsonlinux.org/
| access-date =August 29, 2013
| archive-url = https://web.archive.org/web/20190522092146/https://zfsonlinux.org/
| archive-date =May 22, 2019
| url-status = live
}} following these key events:{{cite web
| url = https://events.static.linuxfound.org/sites/events/files/slides/OpenZFS%20-%20LinuxCon_0.pdf
| title = LinuxCon 2013: OpenZFS
| date = 2013-09-17
| access-date = 2013-11-13
| first1 = Matt
| last1 = Ahrens
| first2 = Brian
| last2 = Behlendorf
| website = linuxfoundation.org
| archive-date = June 7, 2020
| archive-url = https://web.archive.org/web/20200607152335/https://events.static.linuxfound.org/sites/events/files/slides/OpenZFS%20-%20LinuxCon_0.pdf
| url-status = live
}}
- 2008: prototype to determine viability
- 2009: initial ZVOL and Lustre support
- 2010: development moved to GitHub
- 2011: POSIX layer added
- 2011: community of early adopters
- 2012: production usage of ZFS
- 2013: stable GA release
{{As of|2014|8}}, ZFS on Linux 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.{{cite web
| url = http://zfsonlinux.org
| title = ZFS on Linux
| access-date = 2014-08-13
| website = zfsonlinux.org
| archive-url = https://web.archive.org/web/20190522092146/https://zfsonlinux.org/
| archive-date =May 22, 2019
| url-status = live
}}
==KQ InfoTech==
Another native port for Linux was developed by KQ InfoTech in 2010.{{cite web |url = http://www.linuxforums.co.uk/viewtopic.php?f=16&t=3 |archive-url = https://web.archive.org/web/20120311011657/http://linuxforums.co.uk/viewtopic.php?f=16&t=3 |archive-date =March 11, 2012 | title = ZFS Port to Linux (all versions) | author = Darshin | access-date =August 31, 2010| date =August 24, 2010}}{{cite web | url= http://www.stec-inc.com/press/kqi/supportfaq.php | title =Where can I get the ZFS for Linux source code? |archive-url= https://web.archive.org/web/20111008110651/http://www.stec-inc.com/press/kqi/supportfaq.php |archive-date=October 8, 2011 |access-date=August 29, 2013}} 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.{{cite web |url=https://www.phoronix.com/scan.php?page=article&item=linux_kqzfs_benchmarks&num=1 | title=Running The Native ZFS Linux Kernel Module, Plus Benchmarks | author=Phoronix | access-date=December 7, 2010 | date=November 22, 2010 | archive-url=https://web.archive.org/web/20101211202554/http://www.phoronix.com/scan.php?page=article&item=linux_kqzfs_benchmarks&num=1 | archive-date=December 11, 2010 | url-status=live}} In April 2011, KQ Infotech was acquired by sTec, Inc., and their work on ZFS ceased.{{cite web | url=https://www.phoronix.com/scan.php?page=news_item&px=OTU1NQ | title=KQ ZFS Linux Is No Longer Actively Being Worked On | date=June 10, 2011 | access-date=September 14, 2016 | archive-url=https://web.archive.org/web/20161129051936/https://www.phoronix.com/scan.php?page=news_item&px=OTU1NQ | archive-date=November 29, 2016 | url-status=live}} Source code of this port can be found on GitHub.{{cite web | url=https://github.com/zfs-linux/zfs | title=zfs-linux / zfs | website=GitHub | access-date=September 15, 2011 | archive-url=https://web.archive.org/web/20110516114938/https://github.com/zfs-linux/zfs | archive-date=May 16, 2011 | url-status=live}}
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, configuring a ZFS root filesystem is well documented and the required packages can be installed from its package repository.{{cite web
| url = http://wiki.gentoo.org/wiki/ZFS
| title = ZFS – Gentoo documentation
| access-date = 2013-10-09
| website = gentoo.org
| archive-url = https://web.archive.org/web/20131003040801/http://wiki.gentoo.org/wiki/ZFS
| archive-date =October 3, 2013
| url-status = live
}} Slackware also provides documentation on supporting ZFS, both as a kernel module and built into the kernel.{{cite web | url = http://slackwiki.com/ZFS_root | title = ZFS root | work = Slackware ZFS root | access-date = 2014-08-13 | publisher = SlackWiki.com | archive-url = https://web.archive.org/web/20140814082700/http://slackwiki.com/ZFS_root | archive-date =August 14, 2014 | url-status = live}}{{cite web | url = http://slackwiki.com/ZFS_root_%28builtin%29 | title = ZFS root (builtin) | work = Slackware ZFS root (builtin) | access-date = 2014-08-13 | publisher = SlackWiki.com | archive-url = https://web.archive.org/web/20140814232836/http://slackwiki.com/ZFS_root_%28builtin%29 | archive-date =August 14, 2014 | url-status = live}}
==Ubuntu integration==
The question of the CDDL license's compatibility with the GPL license resurfaced in 2015, when the Linux distribution Ubuntu announced that it intended to make precompiled OpenZFS binary kernel modules available to end-users directly from the distribution's official package repositories.{{cite web |url=https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-ZFS-Standard-Plans |title=Ubuntu Is Planning To Make The ZFS File-System A "Standard" Offering |publisher=Phoronix |date=October 6, 2015 |author=Michael Larabel |access-date=June 30, 2016 |archive-url=https://web.archive.org/web/20160630114359/https://www.phoronix.com/scan.php?page=news_item&px=Ubuntu-ZFS-Standard-Plans |archive-date=June 30, 2016 |url-status=live}} 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.{{cite web|url=https://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/|title=ZFS Licensing and Linux|author=Dustin Kirkland |publisher=Canonical|work=Ubuntu Insights|date=February 18, 2016|access-date=June 30, 2016|archive-url=https://web.archive.org/web/20160729004422/http://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/|archive-date=July 29, 2016|url-status=live}} Other organizations such as the Software Freedom Law Center followed Ubuntu's conclusion,{{cite web |url=https://softwarefreedom.org/resources/2016/linux-kernel-cddl.html |title=The Linux Kernel, CDDL and Related Issues |date=February 26, 2016 |first1=Eben |last1=Moglen |first2=Mishi |last2=Choudhary |author-link=Eben Moglen |access-date=June 30, 2016 |archive-url=https://web.archive.org/web/20160714132240/http://softwarefreedom.org/resources/2016/linux-kernel-cddl.html |archive-date=July 14, 2016 |url-status=live}} while the FSF and SFC reiterated their opposing views.{{Cite web |title=GPL Violations Related to Combining ZFS and Linux |url=https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/ |access-date=2024-09-19 |website=Software Freedom Conservancy |language=en}}
Ubuntu 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.{{cite web|last1=Larabel|first1=Michael|title=Taking ZFS For A Test Drive On Ubuntu 16.04 LTS|url=https://www.phoronix.com/scan.php?page=article&item=ubuntu-xenial-zfs&num=1|website=phoronix|publisher=Phoronix Media|access-date=April 25, 2016|archive-url=https://web.archive.org/web/20160919090252/http://www.phoronix.com/scan.php?page=article&item=ubuntu-xenial-zfs&num=1|archive-date=September 19, 2016|url-status=live}} {{As of|2024|df=|since=}}, 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.{{cite web |url=https://didrocks.fr/2019/08/06/ubuntu-zfs-support-in-19.10-introduction/ |title=Ubuntu ZFS support in 19.10: Introduction |access-date=October 23, 2019 |archive-url=https://web.archive.org/web/20191023090713/https://didrocks.fr/2019/08/06/ubuntu-zfs-support-in-19.10-introduction/ |archive-date=October 23, 2019 |url-status=live |date=August 6, 2019}}{{cite web|url=https://arstechnica.com/information-technology/2019/10/a-detailed-look-at-ubuntus-new-experimental-zfs-installer/|title=A detailed look at Ubuntu's new experimental ZFS installer|last=Salter|first=Jim|date=2019-10-10|website=Ars Technica|language=en-us|access-date=2020-01-14|archive-url=https://web.archive.org/web/20191231181013/https://arstechnica.com/information-technology/2019/10/a-detailed-look-at-ubuntus-new-experimental-zfs-installer/|archive-date=December 31, 2019|url-status=live}}
== 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. Information about the current release can be found at the iXsystems [https://www.truenas.com/software-status/ Software Status] page.{{cite web |title=Software Status |url=https://www.truenas.com/software-status/ |website=www.truenas.com |date=August 8, 2022 |access-date=7 January 2024}}
= Microsoft Windows =
A port of open source ZFS was attempted in 2010 but after a hiatus of over one year development ceased in 2012.{{cite web|url=https://code.google.com/archive/p/zfs-win/source/default/commits|title=zfs-win|work=Google Search|publisher=Google Code Archive|access-date=December 11, 2017|archive-url=https://web.archive.org/web/20161230213832/https://code.google.com/archive/p/zfs-win/source/default/commits|archive-date=December 30, 2016|url-status=live}} In October 2017, a new port of OpenZFS was announced by Jörgen Lundman at OpenZFS Developer Summit.{{cite web|url=https://www.phoronix.com/scan.php?page=news_item&px=OpenZFS-Windows|title=Open ZFS File-System Running On Windows|work=Phoronix|access-date=December 11, 2017|archive-url=https://web.archive.org/web/20171211213532/https://www.phoronix.com/scan.php?page=news_item&px=OpenZFS-Windows|archive-date=December 11, 2017|url-status=live}}{{cite web|url=https://github.com/openzfsonwindows/ZFSin|title=OpenZFS on Windows|work=GitHub|access-date=December 11, 2017|archive-url=https://web.archive.org/web/20171120033145/https://github.com/openzfsonwindows/ZFSin|archive-date=November 20, 2017|url-status=live}}
A newer open source port of ZFS which is considered a BETA release, can be found also on GitHub.{{Citation |title=openzfsonwindows/openzfs |date=2024-10-13 |url=https://github.com/openzfsonwindows/openzfs |access-date=2024-10-15 |publisher=openzfsonwindows}}
Version history
{{for|earlier history|ZFS#Version history}}
class="wikitable"
|+ Legend: | {{Free|Latest FOSS stable release}} |
class="wikitable" |
ZFS Pool Version Number
! Release date ! Significant changes |
---|
{{Free|5000}}
| style="white-space:nowrap;" | OpenZFS | Unchanging pool version to signify that the pool indicates new features after pool version 28 using ZFS feature flags rather than by incrementing the pool version |
= Pool versions and feature flags =
{{See also|ZFS#Version history}}
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 Solaris.{{Cite web
| url = http://download.oracle.com/docs/cd/E19253-01/819-5461/appendixa-1/index.html
| title = Solaris ZFS Administration Guide, Appendix A ZFS Version Descriptions
| year = 2010
| access-date = February 11, 2011
| publisher = Oracle Corporation
| archive-date = April 6, 2011
| archive-url = https://web.archive.org/web/20110406181614/http://download.oracle.com/docs/cd/E19253-01/819-5461/appendixa-1/index.html
| url-status = live
| url = http://docs.oracle.com/cd/E26502_01/html/E29007/appendixa-1.html#scrolltoc
| title = Oracle Solaris ZFS Version Descriptions
| access-date = September 23, 2013
| publisher = Oracle Corporation
| archive-date = October 7, 2013
| archive-url = https://web.archive.org/web/20131007113906/http://docs.oracle.com/cd/E26502_01/html/E29007/appendixa-1.html#scrolltoc
| url-status = live
}}
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.{{Rp|20,26–27}}{{Cite web
| url = http://blog.delphix.com/csiden/files/2012/01/ZFS_Feature_Flags.pdf
| title = ZFS Feature Flags (Illumos Meetup)
| date = January 11, 2012
| access-date = July 4, 2016
| first = Christopher
| last = Siden
| website = delphix.com
| archive-url = https://web.archive.org/web/20130403114800/http://blog.delphix.com/csiden/files/2012/01/ZFS_Feature_Flags.pdf
| archive-date = April 3, 2013
}}{{Rp|2–3}}{{Cite web
| title = OpenZFS Features – Feature flags
| url = http://open-zfs.org/wiki/Features#Feature_Flags
| access-date = September 23, 2013
| website = open-zfs.org
| archive-date = September 22, 2013
| archive-url = https://web.archive.org/web/20130922041052/http://www.open-zfs.org/wiki/Features#Feature_Flags
| url-status = live
}}
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. Legacy version numbers still exist for pool versions 1–28.{{cite web
| url = http://blog.delphix.com/csiden/files/2012/01/ZFS_Feature_Flags.pdf
| title = ZFS Feature Flags
| series = Illumos Meetup
| page = 4
| date =January 2012
| access-date = 2013-09-22
| first = Christopher
| last = Siden
| publisher = Delphix
| archive-url = https://web.archive.org/web/20130403114800/http://blog.delphix.com/csiden/files/2012/01/ZFS_Feature_Flags.pdf
| archive-date = 2013-04-03
| url = https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/sys/fs/zfs.h#L338
| title = /usr/src/uts/common/sys/fs/zfs.h (line 338)
| access-date = 2013-11-16
| publisher = illumos (GitHub)
| archive-date = February 11, 2016
| archive-url = https://web.archive.org/web/20160211205337/https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/sys/fs/zfs.h#L338
| url-status = live
| url = https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/fs/zfs/zfeature.c#L89
| title = /usr/src/uts/common/fs/zfs/zfeature.c (line 89)
| access-date = 2013-11-16
| publisher = illumos (GitHub)
| archive-date = February 11, 2016
| archive-url = https://web.archive.org/web/20160211205337/https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/fs/zfs/zfeature.c#L89
| url-status = live
}} 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;{{Cite web
| url = http://open-zfs.org/wiki/FAQ#Are_storage_pools_created_by_OpenZFS_portable_between_operating_systems.3F
| title = OpenZFS FAQ: Are storage pools created by OpenZFS portable between operating systems?
| date = September 26, 2013
| access-date = October 30, 2015
| website = open-zfs.org
| archive-date = January 3, 2016
| archive-url = https://web.archive.org/web/20160103105216/http://open-zfs.org/wiki/FAQ#Are_storage_pools_created_by_OpenZFS_portable_between_operating_systems.3F
| url-status = live
}} the initial proposal was to use 1000 as the pool version.{{Rp|4}} 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:{{Rp|4}}
- Format of the property name is {{Mono|feature@
}}: - {{Mono|
}} is the reverse DNS name of the organization that developed the feature, ensuring unique property names. - Property names can be shortened to {{Mono|feature@
}} when they remain unambiguous.
For example, {{Mono|feature@com.foocompany:async_destroy}} is a valid property name, and it could be shortened to {{Mono|feature@async_destroy}}.{{Rp|4}}
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.{{Rp|5}}
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.{{Rp|5,9}}
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.{{Rp|7}}
For example, {{Mono|async_destroy}} 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.{{Rp|7–8}}
A list of feature flags and which operating systems support them is available from the OpenZFS documentation Web site{{Cite web |title=Feature Flags — OpenZFS documentation |url=https://openzfs.github.io/openzfs-docs/Basic%20Concepts/Feature%20Flags.html |access-date=2024-01-04 |website=openzfs.github.io}} (here the old Open-ZFS.org Web site{{Cite web|url=http://open-zfs.org/wiki/Feature_Flags#Feature_flags_implementation|title=Feature Flags – OpenZFS|website=open-zfs.org|access-date=August 28, 2017|archive-date=August 29, 2017|archive-url=https://web.archive.org/web/20170829041828/http://open-zfs.org/wiki/Feature_Flags#Feature_flags_implementation|url-status=live}})
==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 to Linux. These new features and fixes then had to be backported to Illumos before they could be re-ported for FreeBSD. 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.{{Cite web |url=https://papers.freebsd.org/2019/BSDCan/jude-The_Future_of_OpenZFS_and_FreeBSD.files/jude-The_Future_of_OpenZFS_and_FreeBSD.pdf |title=Archived copy |access-date=June 7, 2020 |archive-date=August 6, 2020 |archive-url=https://web.archive.org/web/20200806005715/https://papers.freebsd.org/2019/BSDCan/jude-The_Future_of_OpenZFS_and_FreeBSD.files/jude-The_Future_of_OpenZFS_and_FreeBSD.pdf |url-status=live }} 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){{Cite web |title=OpenZFS 2.0 · openzfs/ZFS |url=https://github.com/openzfs/zfs/projects/25 |url-status=live |archive-url=https://web.archive.org/web/20200417085650/https://github.com/openzfs/zfs/projects/25 |archive-date=April 17, 2020 |access-date=June 7, 2020 |website=GitHub}}
- 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 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{{Cite web |url=https://docs.google.com/document/d/1w2jv2XVYFmBVvG1EGf-9A5HBVsjAYoLIFZAnWHhV-BM/edit |title=OpenZFS Leadership Team - Meeting Agenda and Notes |access-date=June 7, 2020 |archive-date=June 7, 2020 |archive-url=https://web.archive.org/web/20200607152333/https://docs.google.com/document/d/1w2jv2XVYFmBVvG1EGf-9A5HBVsjAYoLIFZAnWHhV-BM/edit |url-status=live }}
See also
{{Portal|Free and open-source software}}
- Comparison of file systems
- Btrfs—a copy-on-write file system for Linux
- HAMMER—a high-availability file system for DragonFly BSD
- Write Anywhere File Layout (WAFL)—NetApp's proprietary file layout
References
{{Reflist|30em}}
External links
{{Commons category|OpenZFS}}
- [http://www.open-zfs.org/ The OpenZFS Project]: {{Official website|http://open-zfs.org/wiki/Main_Page|website}} and list of {{Official website|http://open-zfs.org/wiki/Distributions|OpenZFS distributions}}
- FreeBSD: [https://zfsonfreebsd.github.io/ZoF/ Webpage] [https://github.com/zfsonfreebsd/ZoF GitHub] [https://wiki.freebsd.org/ZFS wiki]
- illumos: [https://illumos.org/docs/about/features/ Webpage] [https://github.com/illumos/illumos-gate/ GitHub]
- Linux: [http://zfsonlinux.org/ Webpage] [https://github.com/zfsonlinux/zfs/ GitHub]
- macOS: [https://openzfsonosx.org/ Webpage] [https://github.com/openzfsonosx/ GitHub] [http://code.google.com/p/maczfs/ Google]
- Windows: [https://openzfsonwindows.org/ Webpage] [https://github.com/openzfsonwindows/ GitHub]
- {{YouTube|id=G2vIdPmsnTI&list=PLaUVvul17xSegxJjny2Gz85IgIyq9wu8n|title=OpenZFS Office Hours}}, October 11, 2013, by Matt Ahrens
- [http://blog.delphix.com/alex/2015/01/15/openzfs-device-removal/ OpenZFS Device Removal] {{Webarchive|url=https://web.archive.org/web/20150512214041/http://blog.delphix.com/alex/2015/01/15/openzfs-device-removal/ |date=May 12, 2015 }}, January 15, 2015, by Alex Reece
{{File systems}}
{{Unix}}
{{FreeBSD}}
{{MacOS}}
Category:Compression file systems
Category:File systems supported by the Linux kernel
Category:Software using Common Development and Distribution License