Register for the iXsystems Community to get an ad-free experience and exclusive discounts in our eBay Store.
Resource icon

ZFS Feature Flags in FreeNAS

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:

The Feature Flag is not used by the pool. The pool can be imported on systems that do not support this feature flag.

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.

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)
For details on these features, consult the manual page ( man zpool-features).

The following Feature Flags are introduced in FreeNAS 11.0:
  • skein
  • sha512
Both of these features are optional checksums, of interest to those running deduplication or ZFS native encryption, as they are faster than the default cryptographically-secure sha256. In both cases, the feature is active if any datasets use it. It will return to the enabled state after the dataset is destroyed (data can be preserved by using 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
Device removal allows for vdevs to be removed from a pool, subject to limitations. This feature flag becomes active when a vdev is removed using the 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.
First release
Last update
5.00 star(s) 8 ratings

More resources from Ericloewe

Latest updates

  1. More selective feature enabling fun

    It turns out that selectively enabling features on import is even less fun than it sounds when...
  2. Selectively enabling features

    Going through the man page for the zpool command, I noticed that there is an option to...

Latest reviews

This is a great resource to help users determine if they can roll back to the previous version of FreeNAS
I am one of those people that don't update unless an update offers a solution for a problem or offers a new/altered feature that I wan't. Don't fix it if it ain't broken. The ZFS Feature flags where a bit of a problem for me as I was not enable to judge if I should update or not. Now I can act informed and that is great.
Excellent - Concise/Understandable and very comprehensive for such a short article! I posted a question regarding interoperability of ZFS Linux/FreeNAS, and was having trouble understanding the answers - this made it all come together!
Excellent/current information without excessive words.
Great reference for which version supports which feature flags.
I was looking for this information. This told me exactly what I wanted to know in simple and concise format!
It explains the feature flag status, and what the flags are. What more could you want from a feature flags resource?
Apart from an earlier from posting by Ericloewe we didn't have an explanation of the disabled/enabled/active states of ZFS feature flags here in this forum, at least nothing that I'm aware of. Extra Bonus: Feature Flags introduced in 11.2.
Running the nightlies, I noticed the new feature flags had arrived. That was what pushed me to write this stuff down and keep track of new feature flags from now on.