OpenZFS' distributed development led to the introduction of Feature Flags. Instead of incrementing version numbers, support for OpenZFS features is indicated by Feature Flags.
Feature Flag states
Feature flags exist in one of three states:
disabled
The Feature Flag is not used by the pool. The pool can be imported on systems that do not support this feature flag.
enabled
The feature has been enabled for use in this pool, but no changes are in effect. The pool can be imported on systems that do not support this feature flag.
active
The on-disk format of the pool includes the changes needed for this feature. Some features may allow for the pool to be imported read-only, while others make the pool completely incompatible with systems that do not support the Feature Flag in question.
Note that many ZFS features, such as compressed ARC or sequential scrub/resilver, do not require on-disk format changes. They do not introduce feature flags and pools used with these features are compatible with systems lacking them.
Feature Flags support in FreeNAS
The following Feature Flags are supported in FreeNAS 9.10.2:
The following Feature Flags are introduced in FreeNAS 11.0:
As such, pools can be upgraded while preserving backward compatibility.
The following Feature Flags are introduced in FreeNAS 11.2:
Zpool checkpoint provides the
Overview of commands
To see the Feature Flags supported by the version of ZFS you're running, use
To view the status of Feature Flags on a pool, use
To view available Feature Flags, use
Feature flags can be selectively enabled at import time with
Feature Flag states
Feature flags exist in one of three states:
disabled
The Feature Flag is not used by the pool. The pool can be imported on systems that do not support this feature flag.
enabled
The feature has been enabled for use in this pool, but no changes are in effect. The pool can be imported on systems that do not support this feature flag.
active
The on-disk format of the pool includes the changes needed for this feature. Some features may allow for the pool to be imported read-only, while others make the pool completely incompatible with systems that do not support the Feature Flag in question.
Note that many ZFS features, such as compressed ARC or sequential scrub/resilver, do not require on-disk format changes. They do not introduce feature flags and pools used with these features are compatible with systems lacking them.
Feature Flags support in FreeNAS
The following Feature Flags are supported in FreeNAS 9.10.2:
- Asynchronous Destroy
- Empty Block Pointer Objects
- LZ4 compression
- Multi-vdev crash dumps
- Spacemap histogram
- Enabled TXG (not user-facing)
- Hole Birth
- Extensible dataset (not user-facing)
- Embedded data in Block Pointers
- Bookmarks
- Filesystem Limits
- Large Blocks (>128KB)
man zpool-features
).The following Feature Flags are introduced in FreeNAS 11.0:
- skein
- sha512
zfs send | zfs recv
to replicate to a dataset which does not use these checksums).As such, pools can be upgraded while preserving backward compatibility.
The following Feature Flags are introduced in FreeNAS 11.2:
- Device removal
- Obsolete counts
- Zpool checkpoint
zpool remove
subcommand and will never return to enabled. Obsolete counts is an optimization of Device removal and behaves identically.Zpool checkpoint provides the
zpool checkpoint
subcommand, which allows for a checkpoint - a sort of super-snapshot of the whole pool capable of reverting even dataset creation and deletion - to be made, subject to significant limitations. The Feature Flag is active while a checkpoint exists and returns to the enabled state after the checkpoint is deleted or the pool is rewound to the checkpoint.Overview of commands
To see the Feature Flags supported by the version of ZFS you're running, use
man zpool-features
.To view the status of Feature Flags on a pool, use
zpool get all poolname | grep feature
.To view available Feature Flags, use
zpool upgrade
. Feature Flags can be enabled using zpool upgrade poolname
.Feature flags can be selectively enabled at import time with
zpool import -o feature@feature_name=enabled poolname
. To enable multiple features at once, specify -o feature@feature1=enabled -o feature@feature2=enabled ...
for each feature.