Difference between revisions of "FAQ"

From OpenZFS
Jump to navigation Jump to search
(Removed "draft" statement)
 
(44 intermediate revisions by 7 users not shown)
Line 1: Line 1:
=== Where is the source code? ===
== General ==


There is no central source repository for OpenZFS. Each supported operating system has it's own repository.
=== Does OpenZFS have a Code of Conduct? ===
Yes, the OpenZFS community has a code of conduct. See the [[Code of Conduct]] for details.
 
=== Who contributes to OpenZFS? ===
 
OpenZFS brings together developers from multiple open-source forks of the original ZFS project from OpenSolaris to help ensure the compatibility and quality of all of our implementations.


{| class="wikitable"
{| class="wikitable"
| '''illumos'''
| '''illumos'''
|[http://wiki.illumos.org/display/illumos/ZFS Webpage]
|[http://wiki.illumos.org/display/illumos/ZFS Webpage]
|[https://github.com/illumos/illumos-gate/ Github]
|[https://github.com/illumos/illumos-gate/ GitHub]
|-
|-
| '''FreeBSD'''
| '''FreeBSD'''
|[https://wiki.freebsd.org/ZFS Webpage]
|[https://wiki.freebsd.org/ZFS Webpage]
|[https://github.com/freebsd/freebsd/ Github]  
|[https://github.com/freebsd/freebsd/ GitHub]  
|-
|-
| '''ZFS on Linux'''
| '''ZFS on Linux'''
|[http://zfsonlinux.org/ Webpage]
|[http://zfsonlinux.org/ Webpage]
|[https://github.com/zfsonlinux/zfs/commit/ Github]
|[https://github.com/zfsonlinux/zfs/ GitHub]
|-
|-
| '''Mac ZFS'''
| '''ZFS-OSX'''
|[https://code.google.com/p/maczfs/ Webpage]
|[http://maczfs.org MacZFS]
|[https://github.com/zfs-osx/zfs/ Github]
|[https://github.com/zfs-osx/ GitHub]
|}
|}


Even though the core of OpenZFS is platform independent, separate repositories are necessary because significant platform-specific changes need to be maintained for the parts of ZFS which interact with the rest of the operating system (VFS, memory management, disk i/o, etc.). Platform-independent changes are regularly ported between the different operating systems. One of our goals is to more clearly separate the platform-dependent from platform-independent parts of OpenZFS to make porting changes easier.
== Development Model ==
 
=== Why are there four different repositories? ===
 
Each repository supports a different operating system. Even though the core of OpenZFS is platform-independent, there are a significant number of platform-specific changes need to be maintained for the parts of ZFS which interact with the rest of the operating system (VFS, memory management, disk i/o, etc.).
 
=== Are new features and improvements shared between the different repositories? ===
 
Yes. Each implementation regularly ports [[Features|platform-independent changes]] from the other implementations. One of the goals of OpenZFS is to simplify this porting process.
 
=== Are there plans to merge the different repositories? ===
 
Not exactly. We want to simplify the sharing of code between implementations by having a platform-independent central repository that runs as a userland process on any operating system. Developers from any implementation could then easily install and test platform-independent changes in that central repository. Every implementation would port changes from this central repository instead of searching the commit history of the other implementations.
 
There are several reasons we do not want a single repository to support all operating systems:
* Every developer would have the burden of testing changes for four different operating systems. Most developers are only familiar with kernel development on their operating system of choice, so this would be a huge hurdle to development.
* Each implementation has its own process for integrating changes, some of which cannot be changed. For example OpenZFS on illumos must follow the [[illumos integration process]] because it is part of the larger illumos operating system repository. Most developers are only familiar with the integration process for their operating system of choice. Learning other processes and interacting with multiple communities would be a hurdle to development.
 
== Compatibility ==


=== Are storage pools created by OpenZFS portable between operating systems? ===
=== Are storage pools created by OpenZFS portable between operating systems? ===


Yes. Storage pools can be moved freely between the different implementations of OpenZFS as long as all implementations involved support the same [[Features#Feature Flags|feature flags]]. New feature flags are usually ported to all operating systems very quickly to maintain compatibility. Storage pools can also be created with certain feature flags disabled to maintain compatibility.
Pools can be moved freely between different implementations of OpenZFS wherever the implementations support the same [[Features#Feature Flags | feature flags]].  
 
You can disable a feature flag for a pool when the pool is created. This may be appropriate if you expect to use the pool with a different implementation that does not support the feature.
 
To maintain compatibility, new feature flags are usually ported to all operating systems very quickly.
 
Just one pool version is associated with feature flags: version 5000. Versions less than 5000 can not use feature flags.
 
=== Are storage pools created by OpenZFS compatible with ZEVO and with Oracle® Solaris? ===
 
Yes, if you specify a pool version at the time of creation of the pool:
 
* 28 or less.
 
GreenBytes ZEVO Community Edition 1.1.1 is [http://zevo.getgreenbytes.com/wiki/pmwiki.php?n=Site.ZFSPoolAndFilesystemVersions based on ZFS pool version 28 and ZFS file system (zpl) version 5]. Its use of a standard ZFS on-disk format is therefore binary compatible with ZFS on other platforms that support version 28 or greater.
 
Whilst ZEVO CE 1.1.1 was not intended to support ''direct interchange'' with other platforms, there are [http://zevo.getgreenbytes.com/forum/viewtopic.php?t=13 reports of success].
 
=== Are pools created by Solaris compatible with OpenZFS? ===
 
Yes, if created with pool version 28 or earlier and only used on older versions of Oracle Solaris.
 
Oracle's [https://github.com/zfsonlinux/zfs/issues/1225#issuecomment-12576515 closed source uses of pool versions 29–35 are not compatible].
 
Oracle [https://github.com/zfsonlinux/zfs/issues/7552 also broke on-disk compatibility of v28 and older pools], [https://zfs-discuss.zfsonlinux.narkive.com/LMp4Yqys/heads-up-solaris-10-update-11-zfs-send-incompatible and send/receive].
 
=== Can disks that use ZFS be used with Microsoft® Windows®? ===
 
An OpenZFS port of code to Windows is not likely in the foreseeable future. The [http://hardware.slashdot.org/comments.pl?sid=4226771&cid=44880285 ''OpenZFS launch'' discussion on Slashdot] touches upon some of the issues.
 
In Stack Exchange, [http://superuser.com/q/289189/84988 Access a ZFS volume in Windows?] includes approaches to using the disks with alternative operating systems, and accessing that data from Windows.
 
During the [[OpenZFS_Developer_Summit_2017]] [[User:Lundman|Jorgen Lundman]] gave a live demo showing a 'proof of concept' port to Windows® 10, showing such a port could be feasible in the future.
 
== Licensing ==
 
=== Do you plan to release OpenZFS under a license other than the CDDL? ===


=== Is this a re-implementation of ZFS? ===
No. We do not have the power to change the license of OpenZFS. No single entity holds the copyright to all of the OpenZFS code and all contributors to OpenZFS maintain copyright to their changes. Changing the license would require the consent of each one whose changes are part of the current codebase. That is basically everyone who has contributed since 2001.


No. See [[#How is OpenZFS related to ZFS on Solaris?|How is OpenZFS related to ZFS on Solaris?]]
=== What about the Linux port? ===


=== How is OpenZFS related to ZFS on Solaris? ===
The ZFS on Linux project maintains its own [http://zfsonlinux.org/faq.html#WhatAboutTheLicensingIssue FAQ entry] on this.


OpenZFS is a fork of ZFS on Solaris based on the last release of OpenSolaris from 2010. Source code changes to Solaris [[History|have not been released since 2010]], so development of OpenZFS has continued completely separately from ZFS on Solaris. Each now has features the other does not. The on-disk formats of ZFS on Solaris and OpenZFS have also diverged, unless you explicitly create storage pools with format version 28 (the last version released with OpenSolaris) ZFS pools cannot be moved between OpenZFS distributions and ZFS on Solaris.
== Configuration ==


=== Will OpenZFS ever be released under a licence other than the CDDL? ===
=== What are the tradeoffs involved in using RAIDZ? ===


No single entity holds the copyright to all of the OpenZFS code, every individual contributor to OpenZFS maintains copyright to his or her changes. This means that changing the license would require participation from all contributors which makes it highly unlikely.
[https://www.delphix.com/blog/delphix-engineering/zfs-raidz-stripe-width-or-how-i-learned-stop-worrying-and-love-raidz mahrens has written a good explanation of this, with color-coded spreadsheets]

Latest revision as of 17:55, 30 April 2019

General

Does OpenZFS have a Code of Conduct?

Yes, the OpenZFS community has a code of conduct. See the Code of Conduct for details.

Who contributes to OpenZFS?

OpenZFS brings together developers from multiple open-source forks of the original ZFS project from OpenSolaris to help ensure the compatibility and quality of all of our implementations.

illumos Webpage GitHub
FreeBSD Webpage GitHub
ZFS on Linux Webpage GitHub
ZFS-OSX MacZFS GitHub

Development Model

Why are there four different repositories?

Each repository supports a different operating system. Even though the core of OpenZFS is platform-independent, there are a significant number of platform-specific changes need to be maintained for the parts of ZFS which interact with the rest of the operating system (VFS, memory management, disk i/o, etc.).

Are new features and improvements shared between the different repositories?

Yes. Each implementation regularly ports platform-independent changes from the other implementations. One of the goals of OpenZFS is to simplify this porting process.

Are there plans to merge the different repositories?

Not exactly. We want to simplify the sharing of code between implementations by having a platform-independent central repository that runs as a userland process on any operating system. Developers from any implementation could then easily install and test platform-independent changes in that central repository. Every implementation would port changes from this central repository instead of searching the commit history of the other implementations.

There are several reasons we do not want a single repository to support all operating systems:

  • Every developer would have the burden of testing changes for four different operating systems. Most developers are only familiar with kernel development on their operating system of choice, so this would be a huge hurdle to development.
  • Each implementation has its own process for integrating changes, some of which cannot be changed. For example OpenZFS on illumos must follow the illumos integration process because it is part of the larger illumos operating system repository. Most developers are only familiar with the integration process for their operating system of choice. Learning other processes and interacting with multiple communities would be a hurdle to development.

Compatibility

Are storage pools created by OpenZFS portable between operating systems?

Pools can be moved freely between different implementations of OpenZFS wherever the implementations support the same feature flags.

You can disable a feature flag for a pool when the pool is created. This may be appropriate if you expect to use the pool with a different implementation that does not support the feature.

To maintain compatibility, new feature flags are usually ported to all operating systems very quickly.

Just one pool version is associated with feature flags: version 5000. Versions less than 5000 can not use feature flags.

Are storage pools created by OpenZFS compatible with ZEVO and with Oracle® Solaris?

Yes, if you specify a pool version at the time of creation of the pool:

  • 28 or less.

GreenBytes ZEVO Community Edition 1.1.1 is based on ZFS pool version 28 and ZFS file system (zpl) version 5. Its use of a standard ZFS on-disk format is therefore binary compatible with ZFS on other platforms that support version 28 or greater.

Whilst ZEVO CE 1.1.1 was not intended to support direct interchange with other platforms, there are reports of success.

Are pools created by Solaris compatible with OpenZFS?

Yes, if created with pool version 28 or earlier and only used on older versions of Oracle Solaris.

Oracle's closed source uses of pool versions 29–35 are not compatible.

Oracle also broke on-disk compatibility of v28 and older pools, and send/receive.

Can disks that use ZFS be used with Microsoft® Windows®?

An OpenZFS port of code to Windows is not likely in the foreseeable future. The OpenZFS launch discussion on Slashdot touches upon some of the issues.

In Stack Exchange, Access a ZFS volume in Windows? includes approaches to using the disks with alternative operating systems, and accessing that data from Windows.

During the OpenZFS_Developer_Summit_2017 Jorgen Lundman gave a live demo showing a 'proof of concept' port to Windows® 10, showing such a port could be feasible in the future.

Licensing

Do you plan to release OpenZFS under a license other than the CDDL?

No. We do not have the power to change the license of OpenZFS. No single entity holds the copyright to all of the OpenZFS code and all contributors to OpenZFS maintain copyright to their changes. Changing the license would require the consent of each one whose changes are part of the current codebase. That is basically everyone who has contributed since 2001.

What about the Linux port?

The ZFS on Linux project maintains its own FAQ entry on this.

Configuration

What are the tradeoffs involved in using RAIDZ?

mahrens has written a good explanation of this, with color-coded spreadsheets