mirror of https://github.com/openzfs/zfs.git
839 lines
28 KiB
Groff
839 lines
28 KiB
Groff
|
.\"
|
|||
|
.\" Copyright (c) 2012, 2018 by Delphix. All rights reserved.
|
|||
|
.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
|
|||
|
.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
|
|||
|
.\" The contents of this file are subject to the terms of the Common Development
|
|||
|
.\" and Distribution License (the "License"). You may not use this file except
|
|||
|
.\" in compliance with the License. You can obtain a copy of the license at
|
|||
|
.\" usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
|
|||
|
.\"
|
|||
|
.\" See the License for the specific language governing permissions and
|
|||
|
.\" limitations under the License. When distributing Covered Code, include this
|
|||
|
.\" CDDL HEADER in each file and include the License file at
|
|||
|
.\" usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this
|
|||
|
.\" CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your
|
|||
|
.\" own identifying information:
|
|||
|
.\" Portions Copyright [yyyy] [name of copyright owner]
|
|||
|
.\" Copyright (c) 2019, Klara Inc.
|
|||
|
.\" Copyright (c) 2019, Allan Jude
|
|||
|
.\" Copyright (c) 2021, Colm Buckley <colm@tuatha.org>
|
|||
|
.\"
|
|||
|
.Dd May 31, 2021
|
|||
|
.Dt ZPOOL-FEATURES 7
|
|||
|
.Os
|
|||
|
.
|
|||
|
.Sh NAME
|
|||
|
.Nm zpool-features
|
|||
|
.Nd description of ZFS pool features
|
|||
|
.
|
|||
|
.Sh DESCRIPTION
|
|||
|
ZFS pool on-disk format versions are specified via "features" which replace
|
|||
|
the old on-disk format numbers (the last supported on-disk format number is 28).
|
|||
|
To enable a feature on a pool use the
|
|||
|
.Nm zpool Cm upgrade ,
|
|||
|
or set the
|
|||
|
.Sy feature Ns @ Ns Ar feature-name
|
|||
|
property to
|
|||
|
.Sy enabled .
|
|||
|
Please also see the
|
|||
|
.Sx Compatibility feature sets
|
|||
|
section for information on how sets of features may be enabled together.
|
|||
|
.Pp
|
|||
|
The pool format does not affect file system version compatibility or the ability
|
|||
|
to send file systems between pools.
|
|||
|
.Pp
|
|||
|
Since most features can be enabled independently of each other, the on-disk
|
|||
|
format of the pool is specified by the set of all features marked as
|
|||
|
.Sy active
|
|||
|
on the pool.
|
|||
|
If the pool was created by another software version
|
|||
|
this set may include unsupported features.
|
|||
|
.
|
|||
|
.Ss Identifying features
|
|||
|
Every feature has a GUID of the form
|
|||
|
.Ar com.example : Ns Ar feature-name .
|
|||
|
The reversed DNS name ensures that the feature's GUID is unique across all ZFS
|
|||
|
implementations.
|
|||
|
When unsupported features are encountered on a pool they will
|
|||
|
be identified by their GUIDs.
|
|||
|
Refer to the documentation for the ZFS
|
|||
|
implementation that created the pool for information about those features.
|
|||
|
.Pp
|
|||
|
Each supported feature also has a short name.
|
|||
|
By convention a feature's short name is the portion of its GUID which follows the
|
|||
|
.Sq \&:
|
|||
|
(i.e.
|
|||
|
.Ar com.example : Ns Ar feature-name
|
|||
|
would have the short name
|
|||
|
.Ar feature-name ) ,
|
|||
|
however a feature's short name may differ across ZFS implementations if
|
|||
|
following the convention would result in name conflicts.
|
|||
|
.
|
|||
|
.Ss Feature states
|
|||
|
Features can be in one of three states:
|
|||
|
.Bl -tag -width "disabled"
|
|||
|
.It Sy active
|
|||
|
This feature's on-disk format changes are in effect on the pool.
|
|||
|
Support for this feature is required to import the pool in read-write mode.
|
|||
|
If this feature is not read-only compatible,
|
|||
|
support is also required to import the pool in read-only mode
|
|||
|
.Pq see Sx Read-only compatibility .
|
|||
|
.It Sy enabled
|
|||
|
An administrator has marked this feature as enabled on the pool, but the
|
|||
|
feature's on-disk format changes have not been made yet.
|
|||
|
The pool can still be imported by software that does not support this feature,
|
|||
|
but changes may be made to the on-disk format at any time
|
|||
|
which will move the feature to the
|
|||
|
.Sy active
|
|||
|
state.
|
|||
|
Some features may support returning to the
|
|||
|
.Sy enabled
|
|||
|
state after becoming
|
|||
|
.Sy active .
|
|||
|
See feature-specific documentation for details.
|
|||
|
.It Sy disabled
|
|||
|
This feature's on-disk format changes have not been made and will not be made
|
|||
|
unless an administrator moves the feature to the
|
|||
|
.Sy enabled
|
|||
|
state.
|
|||
|
Features cannot be disabled once they have been enabled.
|
|||
|
.El
|
|||
|
.Pp
|
|||
|
The state of supported features is exposed through pool properties of the form
|
|||
|
.Sy feature Ns @ Ns Ar short-name .
|
|||
|
.
|
|||
|
.Ss Read-only compatibility
|
|||
|
Some features may make on-disk format changes that do not interfere with other
|
|||
|
software's ability to read from the pool.
|
|||
|
These features are referred to as
|
|||
|
.Dq read-only compatible .
|
|||
|
If all unsupported features on a pool are read-only compatible,
|
|||
|
the pool can be imported in read-only mode by setting the
|
|||
|
.Sy readonly
|
|||
|
property during import (see
|
|||
|
.Xr zpool-import 8
|
|||
|
for details on importing pools).
|
|||
|
.
|
|||
|
.Ss Unsupported features
|
|||
|
For each unsupported feature enabled on an imported pool, a pool property
|
|||
|
named
|
|||
|
.Sy unsupported Ns @ Ns Ar feature-name
|
|||
|
will indicate why the import was allowed despite the unsupported feature.
|
|||
|
Possible values for this property are:
|
|||
|
.Bl -tag -width "readonly"
|
|||
|
.It Sy inactive
|
|||
|
The feature is in the
|
|||
|
.Sy enabled
|
|||
|
state and therefore the pool's on-disk
|
|||
|
format is still compatible with software that does not support this feature.
|
|||
|
.It Sy readonly
|
|||
|
The feature is read-only compatible and the pool has been imported in
|
|||
|
read-only mode.
|
|||
|
.El
|
|||
|
.
|
|||
|
.Ss Feature dependencies
|
|||
|
Some features depend on other features being enabled in order to function.
|
|||
|
Enabling a feature will automatically enable any features it depends on.
|
|||
|
.
|
|||
|
.Ss Compatibility feature sets
|
|||
|
It is sometimes necessary for a pool to maintain compatibility with a
|
|||
|
specific on-disk format, by enabling and disabling particular features.
|
|||
|
The
|
|||
|
.Sy compatibility
|
|||
|
feature facilitates this by allowing feature sets to be read from text files.
|
|||
|
When set to
|
|||
|
.Sy off
|
|||
|
(the default), compatibility feature sets are disabled
|
|||
|
(i.e. all features are enabled); when set to
|
|||
|
.Sy legacy ,
|
|||
|
no features are enabled.
|
|||
|
When set to a comma-separated list of filenames
|
|||
|
(each filename may either be an absolute path, or relative to
|
|||
|
.Pa /etc/zfs/compatibility.d
|
|||
|
or
|
|||
|
.Pa /usr/share/zfs/compatibility.d ) ,
|
|||
|
the lists of requested features are read from those files,
|
|||
|
separated by whitespace and/or commas.
|
|||
|
Only features present in all files are enabled.
|
|||
|
.Pp
|
|||
|
Simple sanity checks are applied to the files:
|
|||
|
they must be between 1B and 16kB in size, and must end with a newline character.
|
|||
|
.Pp
|
|||
|
The requested features are applied when a pool is created using
|
|||
|
.Nm zpool Cm create Fl o Sy compatibility Ns = Ns Ar …
|
|||
|
and controls which features are enabled when using
|
|||
|
.Nm zpool Cm upgrade .
|
|||
|
.Nm zpool Cm status
|
|||
|
will not show a warning about disabled features which are not part
|
|||
|
of the requested feature set.
|
|||
|
.Pp
|
|||
|
The special value
|
|||
|
.Sy legacy
|
|||
|
prevents any features from being enabled, either via
|
|||
|
.Nm zpool Cm upgrade
|
|||
|
or
|
|||
|
.Nm zpool Cm set Sy feature Ns @ Ns Ar feature-name Ns = Ns Sy enabled .
|
|||
|
This setting also prevents pools from being upgraded to newer on-disk versions.
|
|||
|
This is a safety measure to prevent new features from being
|
|||
|
accidentally enabled, breaking compatibility.
|
|||
|
.Pp
|
|||
|
By convention, compatibility files in
|
|||
|
.Pa /usr/share/zfs/compatibility.d
|
|||
|
are provided by the distribution, and include feature sets
|
|||
|
supported by important versions of popular distributions, and feature
|
|||
|
sets commonly supported at the start of each year.
|
|||
|
Compatibility files in
|
|||
|
.Pa /etc/zfs/compatibility.d ,
|
|||
|
if present, will take precedence over files with the same name in
|
|||
|
.Pa /usr/share/zfs/compatibility.d .
|
|||
|
.Pp
|
|||
|
If an unrecognized feature is found in these files, an error message will
|
|||
|
be shown.
|
|||
|
If the unrecognized feature is in a file in
|
|||
|
.Pa /etc/zfs/compatibility.d ,
|
|||
|
this is treated as an error and processing will stop.
|
|||
|
If the unrecognized feature is under
|
|||
|
.Pa /usr/share/zfs/compatibility.d ,
|
|||
|
this is treated as a warning and processing will continue.
|
|||
|
This difference is to allow distributions to include features
|
|||
|
which might not be recognized by the currently-installed binaries.
|
|||
|
.Pp
|
|||
|
Compatibility files may include comments:
|
|||
|
any text from
|
|||
|
.Sq #
|
|||
|
to the end of the line is ignored.
|
|||
|
.Pp
|
|||
|
.Sy Example :
|
|||
|
.Bd -literal -compact -offset 4n
|
|||
|
.No example# Nm cat Pa /usr/share/zfs/compatibility.d/grub2
|
|||
|
# Features which are supported by GRUB2
|
|||
|
async_destroy
|
|||
|
bookmarks
|
|||
|
embedded_data
|
|||
|
empty_bpobj
|
|||
|
enabled_txg
|
|||
|
extensible_dataset
|
|||
|
filesystem_limits
|
|||
|
hole_birth
|
|||
|
large_blocks
|
|||
|
lz4_compress
|
|||
|
spacemap_histogram
|
|||
|
|
|||
|
.No example# Nm zpool Cm create Fl o Sy compatibility Ns = Ns Ar grub2 Ar bootpool Ar vdev
|
|||
|
.Ed
|
|||
|
.Pp
|
|||
|
See
|
|||
|
.Xr zpool-create 8
|
|||
|
and
|
|||
|
.Xr zpool-upgrade 8
|
|||
|
for more information on how these commands are affected by feature sets.
|
|||
|
.
|
|||
|
.de feature
|
|||
|
.It Sy \\$2
|
|||
|
.Bl -tag -compact -width "READ-ONLY COMPATIBLE"
|
|||
|
.It GUID
|
|||
|
.Sy \\$1:\\$2
|
|||
|
.if !"\\$4"" \{\
|
|||
|
.It DEPENDENCIES
|
|||
|
\fB\\$4\fP\c
|
|||
|
.if !"\\$5"" , \fB\\$5\fP\c
|
|||
|
.if !"\\$6"" , \fB\\$6\fP\c
|
|||
|
.if !"\\$7"" , \fB\\$7\fP\c
|
|||
|
.if !"\\$8"" , \fB\\$8\fP\c
|
|||
|
.if !"\\$9"" , \fB\\$9\fP\c
|
|||
|
.\}
|
|||
|
.It READ-ONLY COMPATIBLE
|
|||
|
\\$3
|
|||
|
.El
|
|||
|
.Pp
|
|||
|
..
|
|||
|
.
|
|||
|
.ds instant-never \
|
|||
|
.No This feature becomes Sy active No as soon as it is enabled \
|
|||
|
and will never return to being Sy enabled .
|
|||
|
.
|
|||
|
.ds remount-upgrade \
|
|||
|
.No Each filesystem will be upgraded automatically when remounted, \
|
|||
|
or when a new file is created under that filesystem. \
|
|||
|
The upgrade can also be triggered on filesystems via \
|
|||
|
Nm zfs Cm set Sy version Ns = Ns Sy current Ar fs . \
|
|||
|
No The upgrade process runs in the background and may take a while to complete \
|
|||
|
for filesystems containing large amounts of files.
|
|||
|
.
|
|||
|
.de checksum-spiel
|
|||
|
When the
|
|||
|
.Sy \\$1
|
|||
|
feature is set to
|
|||
|
.Sy enabled ,
|
|||
|
the administrator can turn on the
|
|||
|
.Sy \\$1
|
|||
|
checksum on any dataset using
|
|||
|
.Nm zfs Cm set Sy checksum Ns = Ns Sy \\$1 Ar dset
|
|||
|
.Po see Xr zfs-set 8 Pc .
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
once a
|
|||
|
.Sy checksum
|
|||
|
property has been set to
|
|||
|
.Sy \\$1 ,
|
|||
|
and will return to being
|
|||
|
.Sy enabled
|
|||
|
once all filesystems that have ever had their checksum set to
|
|||
|
.Sy \\$1
|
|||
|
are destroyed.
|
|||
|
..
|
|||
|
.
|
|||
|
.Sh FEATURES
|
|||
|
The following features are supported on this system:
|
|||
|
.Bl -tag -width Ds
|
|||
|
.feature org.zfsonlinux allocation_classes yes
|
|||
|
This feature enables support for separate allocation classes.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when a dedicated allocation class vdev (dedup or special) is created with the
|
|||
|
.Nm zpool Cm create No or Nm zpool Cm add No commands .
|
|||
|
With device removal, it can be returned to the
|
|||
|
.Sy enabled
|
|||
|
state if all the dedicated allocation class vdevs are removed.
|
|||
|
.
|
|||
|
.feature com.delphix async_destroy yes
|
|||
|
Destroying a file system requires traversing all of its data in order to
|
|||
|
return its used space to the pool.
|
|||
|
Without
|
|||
|
.Sy async_destroy ,
|
|||
|
the file system is not fully removed until all space has been reclaimed.
|
|||
|
If the destroy operation is interrupted by a reboot or power outage,
|
|||
|
the next attempt to open the pool will need to complete the destroy
|
|||
|
operation synchronously.
|
|||
|
.Pp
|
|||
|
When
|
|||
|
.Sy async_destroy
|
|||
|
is enabled, the file system's data will be reclaimed by a background process,
|
|||
|
allowing the destroy operation to complete
|
|||
|
without traversing the entire file system.
|
|||
|
The background process is able to resume
|
|||
|
interrupted destroys after the pool has been opened, eliminating the need
|
|||
|
to finish interrupted destroys as part of the open operation.
|
|||
|
The amount of space remaining to be reclaimed by the background process
|
|||
|
is available through the
|
|||
|
.Sy freeing
|
|||
|
property.
|
|||
|
.Pp
|
|||
|
This feature is only
|
|||
|
.Sy active
|
|||
|
while
|
|||
|
.Sy freeing
|
|||
|
is non-zero.
|
|||
|
.
|
|||
|
.feature com.delphix bookmarks yes extensible_dataset
|
|||
|
This feature enables use of the
|
|||
|
.Nm zfs Cm bookmark
|
|||
|
command.
|
|||
|
.Pp
|
|||
|
This feature is
|
|||
|
.Sy active
|
|||
|
while any bookmarks exist in the pool.
|
|||
|
All bookmarks in the pool can be listed by running
|
|||
|
.Nm zfs Cm list Fl t Sy bookmark Fl r Ar poolname .
|
|||
|
.
|
|||
|
.feature com.datto bookmark_v2 no bookmark extensible_dataset
|
|||
|
This feature enables the creation and management of larger bookmarks which are
|
|||
|
needed for other features in ZFS.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when a v2 bookmark is created and will be returned to the
|
|||
|
.Sy enabled
|
|||
|
state when all v2 bookmarks are destroyed.
|
|||
|
.
|
|||
|
.feature com.delphix bookmark_written no bookmark extensible_dataset bookmark_v2
|
|||
|
This feature enables additional bookmark accounting fields, enabling the
|
|||
|
.Sy written Ns # Ns Ar bookmark
|
|||
|
property (space written since a bookmark) and estimates of
|
|||
|
send stream sizes for incrementals from bookmarks.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when a bookmark is created and will be
|
|||
|
returned to the
|
|||
|
.Sy enabled
|
|||
|
state when all bookmarks with these fields are destroyed.
|
|||
|
.
|
|||
|
.feature org.openzfs device_rebuild yes
|
|||
|
This feature enables the ability for the
|
|||
|
.Nm zpool Cm attach
|
|||
|
and
|
|||
|
.Nm zpool Cm replace
|
|||
|
commands to perform sequential reconstruction
|
|||
|
(instead of healing reconstruction) when resilvering.
|
|||
|
.Pp
|
|||
|
Sequential reconstruction resilvers a device in LBA order without immediately
|
|||
|
verifying the checksums.
|
|||
|
Once complete, a scrub is started, which then verifies the checksums.
|
|||
|
This approach allows full redundancy to be restored to the pool
|
|||
|
in the minimum amount of time.
|
|||
|
This two-phase approach will take longer than a healing resilver
|
|||
|
when the time to verify the checksums is included.
|
|||
|
However, unless there is additional pool damage,
|
|||
|
no checksum errors should be reported by the scrub.
|
|||
|
This feature is incompatible with raidz configurations.
|
|||
|
.
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
while a sequential resilver is in progress, and returns to
|
|||
|
.Sy enabled
|
|||
|
when the resilver completes.
|
|||
|
.
|
|||
|
.feature com.delphix device_removal no
|
|||
|
This feature enables the
|
|||
|
.Nm zpool Cm remove
|
|||
|
command to remove top-level vdevs,
|
|||
|
evacuating them to reduce the total size of the pool.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when the
|
|||
|
.Nm zpool Cm remove
|
|||
|
command is used
|
|||
|
on a top-level vdev, and will never return to being
|
|||
|
.Sy enabled .
|
|||
|
.
|
|||
|
.feature org.openzfs draid no
|
|||
|
This feature enables use of the
|
|||
|
.Sy draid
|
|||
|
vdev type.
|
|||
|
dRAID is a variant of raidz which provides integrated distributed
|
|||
|
hot spares that allow faster resilvering while retaining the benefits of raidz.
|
|||
|
Data, parity, and spare space are organized in redundancy groups
|
|||
|
and distributed evenly over all of the devices.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when creating a pool which uses the
|
|||
|
.Sy draid
|
|||
|
vdev type, or when adding a new
|
|||
|
.Sy draid
|
|||
|
vdev to an existing pool.
|
|||
|
.
|
|||
|
.feature org.illumos edonr no extensible_dataset
|
|||
|
This feature enables the use of the Edon-R hash algorithm for checksum,
|
|||
|
including for nopwrite (if compression is also enabled, an overwrite of
|
|||
|
a block whose checksum matches the data being written will be ignored).
|
|||
|
In an abundance of caution, Edon-R requires verification when used with
|
|||
|
dedup:
|
|||
|
.Nm zfs Cm set Sy dedup Ns = Ns Sy edonr , Ns Sy verify
|
|||
|
.Po see Xr zfs-set 8 Pc .
|
|||
|
.Pp
|
|||
|
Edon-R is a very high-performance hash algorithm that was part
|
|||
|
of the NIST SHA-3 competition.
|
|||
|
It provides extremely high hash performance (over 350% faster than SHA-256),
|
|||
|
but was not selected because of its unsuitability
|
|||
|
as a general purpose secure hash algorithm.
|
|||
|
This implementation utilizes the new salted checksumming functionality
|
|||
|
in ZFS, which means that the checksum is pre-seeded with a secret
|
|||
|
256-bit random key (stored on the pool) before being fed the data block
|
|||
|
to be checksummed.
|
|||
|
Thus the produced checksums are unique to a given pool,
|
|||
|
preventing hash collision attacks on systems with dedup.
|
|||
|
.
|
|||
|
.feature com.delphix embedded_data no
|
|||
|
This feature improves the performance and compression ratio of
|
|||
|
highly-compressible blocks.
|
|||
|
Blocks whose contents can compress to 112 bytes
|
|||
|
or smaller can take advantage of this feature.
|
|||
|
.Pp
|
|||
|
When this feature is enabled, the contents of highly-compressible blocks are
|
|||
|
stored in the block "pointer" itself (a misnomer in this case, as it contains
|
|||
|
the compressed data, rather than a pointer to its location on disk).
|
|||
|
Thus the space of the block (one sector, typically 512B or 4kB) is saved,
|
|||
|
and no additional I/O is needed to read and write the data block.
|
|||
|
.
|
|||
|
\*[instant-never]
|
|||
|
.
|
|||
|
.feature com.delphix empty_bpobj yes
|
|||
|
This feature increases the performance of creating and using a large
|
|||
|
number of snapshots of a single filesystem or volume, and also reduces
|
|||
|
the disk space required.
|
|||
|
.Pp
|
|||
|
When there are many snapshots, each snapshot uses many Block Pointer
|
|||
|
Objects (bpobjs) to track blocks associated with that snapshot.
|
|||
|
However, in common use cases, most of these bpobjs are empty.
|
|||
|
This feature allows us to create each bpobj on-demand,
|
|||
|
thus eliminating the empty bpobjs.
|
|||
|
.Pp
|
|||
|
This feature is
|
|||
|
.Sy active
|
|||
|
while there are any filesystems, volumes,
|
|||
|
or snapshots which were created after enabling this feature.
|
|||
|
.
|
|||
|
.feature com.delphix enabled_txg yes
|
|||
|
Once this feature is enabled, ZFS records the transaction group number
|
|||
|
in which new features are enabled.
|
|||
|
This has no user-visible impact, but other features may depend on this feature.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
as soon as it is enabled and will
|
|||
|
never return to being
|
|||
|
.Sy enabled .
|
|||
|
.
|
|||
|
.feature com.datto encryption no bookmark_v2 extensible_dataset
|
|||
|
This feature enables the creation and management of natively encrypted datasets.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when an encrypted dataset is created and will be returned to the
|
|||
|
.Sy enabled
|
|||
|
state when all datasets that use this feature are destroyed.
|
|||
|
.
|
|||
|
.feature com.delphix extensible_dataset no
|
|||
|
This feature allows more flexible use of internal ZFS data structures,
|
|||
|
and exists for other features to depend on.
|
|||
|
.Pp
|
|||
|
This feature will be
|
|||
|
.Sy active
|
|||
|
when the first dependent feature uses it, and will be returned to the
|
|||
|
.Sy enabled
|
|||
|
state when all datasets that use this feature are destroyed.
|
|||
|
.
|
|||
|
.feature com.joyent filesystem_limits yes extensible_dataset
|
|||
|
This feature enables filesystem and snapshot limits.
|
|||
|
These limits can be used to control how many filesystems and/or snapshots
|
|||
|
can be created at the point in the tree on which the limits are set.
|
|||
|
.Pp
|
|||
|
This feature is
|
|||
|
.Sy active
|
|||
|
once either of the limit properties has been set on a dataset.
|
|||
|
Once activated the feature is never deactivated.
|
|||
|
.
|
|||
|
.feature com.delphix hole_birth no enabled_txg
|
|||
|
This feature has/had bugs, the result of which is that, if you do a
|
|||
|
.Nm zfs Cm send Fl i
|
|||
|
.Pq or Fl R , No since it uses Fl i
|
|||
|
from an affected dataset, the receiving party will not see any checksum
|
|||
|
or other errors, but the resulting destination snapshot
|
|||
|
will not match the source.
|
|||
|
Its use by
|
|||
|
.Nm zfs Cm send Fl i
|
|||
|
has been disabled by default
|
|||
|
.Pq see Sy send_holes_without_birth_time No in Xr zfs 4 .
|
|||
|
.Pp
|
|||
|
This feature improves performance of incremental sends
|
|||
|
.Pq Nm zfs Cm send Fl i
|
|||
|
and receives for objects with many holes.
|
|||
|
The most common case of hole-filled objects is zvols.
|
|||
|
.Pp
|
|||
|
An incremental send stream from snapshot
|
|||
|
.Sy A No to snapshot Sy B
|
|||
|
contains information about every block that changed between
|
|||
|
.Sy A No and Sy B .
|
|||
|
Blocks which did not change between those snapshots can be
|
|||
|
identified and omitted from the stream using a piece of metadata called
|
|||
|
the "block birth time", but birth times are not recorded for holes
|
|||
|
(blocks filled only with zeroes).
|
|||
|
Since holes created after
|
|||
|
.Sy A No cannot be distinguished from holes created before Sy A ,
|
|||
|
information about every hole in the entire filesystem or zvol
|
|||
|
is included in the send stream.
|
|||
|
.Pp
|
|||
|
For workloads where holes are rare this is not a problem.
|
|||
|
However, when incrementally replicating filesystems or zvols with many holes
|
|||
|
(for example a zvol formatted with another filesystem) a lot of time will
|
|||
|
be spent sending and receiving unnecessary information about holes that
|
|||
|
already exist on the receiving side.
|
|||
|
.Pp
|
|||
|
Once the
|
|||
|
.Sy hole_birth
|
|||
|
feature has been enabled the block birth times
|
|||
|
of all new holes will be recorded.
|
|||
|
Incremental sends between snapshots created after this feature is enabled
|
|||
|
will use this new metadata to avoid sending information about holes that
|
|||
|
already exist on the receiving side.
|
|||
|
.Pp
|
|||
|
\*[instant-never]
|
|||
|
.
|
|||
|
.feature org.open-zfs large_blocks no extensible_dataset
|
|||
|
This feature allows the record size on a dataset to be set larger than 128kB.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
once a dataset contains a file with a block size larger than 128kB,
|
|||
|
and will return to being
|
|||
|
.Sy enabled
|
|||
|
once all filesystems that have ever had their recordsize larger than 128kB
|
|||
|
are destroyed.
|
|||
|
.
|
|||
|
.feature org.zfsonlinux large_dnode no extensible_dataset
|
|||
|
This feature allows the size of dnodes in a dataset to be set larger than 512B.
|
|||
|
.
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
once a dataset contains an object with a dnode larger than 512B,
|
|||
|
which occurs as a result of setting the
|
|||
|
.Sy dnodesize
|
|||
|
dataset property to a value other than
|
|||
|
.Sy legacy .
|
|||
|
The feature will return to being
|
|||
|
.Sy enabled
|
|||
|
once all filesystems that have ever contained a dnode larger than 512B
|
|||
|
are destroyed.
|
|||
|
Large dnodes allow more data to be stored in the bonus buffer,
|
|||
|
thus potentially improving performance by avoiding the use of spill blocks.
|
|||
|
.
|
|||
|
.feature com.delphix livelist yes
|
|||
|
This feature allows clones to be deleted faster than the traditional method
|
|||
|
when a large number of random/sparse writes have been made to the clone.
|
|||
|
All blocks allocated and freed after a clone is created are tracked by the
|
|||
|
the clone's livelist which is referenced during the deletion of the clone.
|
|||
|
The feature is activated when a clone is created and remains
|
|||
|
.Sy active
|
|||
|
until all clones have been destroyed.
|
|||
|
.
|
|||
|
.feature com.delphix log_spacemap yes com.delphix:spacemap_v2
|
|||
|
This feature improves performance for heavily-fragmented pools,
|
|||
|
especially when workloads are heavy in random-writes.
|
|||
|
It does so by logging all the metaslab changes on a single spacemap every TXG
|
|||
|
instead of scattering multiple writes to all the metaslab spacemaps.
|
|||
|
.Pp
|
|||
|
\*[instant-never]
|
|||
|
.
|
|||
|
.feature org.illumos lz4_compress no
|
|||
|
.Sy lz4
|
|||
|
is a high-performance real-time compression algorithm that
|
|||
|
features significantly faster compression and decompression as well as a
|
|||
|
higher compression ratio than the older
|
|||
|
.Sy lzjb
|
|||
|
compression.
|
|||
|
Typically,
|
|||
|
.Sy lz4
|
|||
|
compression is approximately 50% faster on compressible data and 200% faster
|
|||
|
on incompressible data than
|
|||
|
.Sy lzjb .
|
|||
|
It is also approximately 80% faster on decompression,
|
|||
|
while giving approximately a 10% better compression ratio.
|
|||
|
.Pp
|
|||
|
When the
|
|||
|
.Sy lz4_compress
|
|||
|
feature is set to
|
|||
|
.Sy enabled ,
|
|||
|
the administrator can turn on
|
|||
|
.Sy lz4
|
|||
|
compression on any dataset on the pool using the
|
|||
|
.Xr zfs-set 8
|
|||
|
command.
|
|||
|
All newly written metadata will be compressed with the
|
|||
|
.Sy lz4
|
|||
|
algorithm.
|
|||
|
.Pp
|
|||
|
\*[instant-never]
|
|||
|
.
|
|||
|
.feature com.joyent multi_vdev_crash_dump no
|
|||
|
This feature allows a dump device to be configured with a pool comprised
|
|||
|
of multiple vdevs.
|
|||
|
Those vdevs may be arranged in any mirrored or raidz configuration.
|
|||
|
.Pp
|
|||
|
When the
|
|||
|
.Sy multi_vdev_crash_dump
|
|||
|
feature is set to
|
|||
|
.Sy enabled ,
|
|||
|
the administrator can use
|
|||
|
.Xr dumpadm 1M
|
|||
|
to configure a dump device on a pool comprised of multiple vdevs.
|
|||
|
.Pp
|
|||
|
Under
|
|||
|
.Fx
|
|||
|
and Linux this feature is unused, but registered for compatibility.
|
|||
|
New pools created on these systems will have the feature
|
|||
|
.Sy enabled
|
|||
|
but will never transition to
|
|||
|
.Sy active ,
|
|||
|
as this functionality is not required for crash dump support.
|
|||
|
Existing pools where this feature is
|
|||
|
.Sy active
|
|||
|
can be imported.
|
|||
|
.
|
|||
|
.feature com.delphix obsolete_counts yes device_removal
|
|||
|
This feature is an enhancement of
|
|||
|
.Sy device_removal ,
|
|||
|
which will over time reduce the memory used to track removed devices.
|
|||
|
When indirect blocks are freed or remapped,
|
|||
|
we note that their part of the indirect mapping is "obsolete" – no longer needed.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when the
|
|||
|
.Nm zpool Cm remove
|
|||
|
command is used on a top-level vdev, and will never return to being
|
|||
|
.Sy enabled .
|
|||
|
.
|
|||
|
.feature org.zfsonlinux project_quota yes extensible_dataset
|
|||
|
This feature allows administrators to account the spaces and objects usage
|
|||
|
information against the project identifier (ID).
|
|||
|
.Pp
|
|||
|
The project ID is an object-based attribute.
|
|||
|
When upgrading an existing filesystem,
|
|||
|
objects without a project ID will be assigned a zero project ID.
|
|||
|
When this feature is enabled, newly created objects inherit
|
|||
|
their parent directories' project ID if the parent's inherit flag is set
|
|||
|
.Pq via Nm chattr Sy [+-]P No or Nm zfs Cm project Fl s Ns | Ns Fl C .
|
|||
|
Otherwise, the new object's project ID will be zero.
|
|||
|
An object's project ID can be changed at any time by the owner
|
|||
|
(or privileged user) via
|
|||
|
.Nm chattr Fl p Ar prjid
|
|||
|
or
|
|||
|
.Nm zfs Cm project Fl p Ar prjid .
|
|||
|
.Pp
|
|||
|
This feature will become
|
|||
|
.Sy active
|
|||
|
as soon as it is enabled and will never return to being
|
|||
|
.Sy disabled .
|
|||
|
\*[remount-upgrade]
|
|||
|
.
|
|||
|
.feature com.delphix redaction_bookmarks no bookmarks extensible_dataset
|
|||
|
This feature enables the use of redacted
|
|||
|
.Nm zfs Cm send Ns s ,
|
|||
|
which create redaction bookmarks storing the list of blocks
|
|||
|
redacted by the send that created them.
|
|||
|
For more information about redacted sends, see
|
|||
|
.Xr zfs-send 8 .
|
|||
|
.
|
|||
|
.feature com.delphix redacted_datasets no extensible_dataset
|
|||
|
This feature enables the receiving of redacted
|
|||
|
.Nm zfs Cm send Ns
|
|||
|
streams. which create redacted datasets when received.
|
|||
|
These datasets are missing some of their blocks,
|
|||
|
and so cannot be safely mounted, and their contents cannot be safely read.
|
|||
|
For more information about redacted receives, see
|
|||
|
.Xr zfs-send 8 .
|
|||
|
.
|
|||
|
.feature com.datto resilver_defer yes
|
|||
|
This feature allows ZFS to postpone new resilvers if an existing one is already
|
|||
|
in progress.
|
|||
|
Without this feature, any new resilvers will cause the currently
|
|||
|
running one to be immediately restarted from the beginning.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
once a resilver has been deferred, and returns to being
|
|||
|
.Sy enabled
|
|||
|
when the deferred resilver begins.
|
|||
|
.
|
|||
|
.feature org.illumos sha512 no extensible_dataset
|
|||
|
This feature enables the use of the SHA-512/256 truncated hash algorithm
|
|||
|
(FIPS 180-4) for checksum and dedup.
|
|||
|
The native 64-bit arithmetic of SHA-512 provides an approximate 50%
|
|||
|
performance boost over SHA-256 on 64-bit hardware
|
|||
|
and is thus a good minimum-change replacement candidate
|
|||
|
for systems where hash performance is important,
|
|||
|
but these systems cannot for whatever reason utilize the faster
|
|||
|
.Sy skein No and Sy edonr
|
|||
|
algorithms.
|
|||
|
.Pp
|
|||
|
.checksum-spiel sha512
|
|||
|
.
|
|||
|
.feature org.illumos skein no extensible_dataset
|
|||
|
This feature enables the use of the Skein hash algorithm for checksum and dedup.
|
|||
|
Skein is a high-performance secure hash algorithm that was a
|
|||
|
finalist in the NIST SHA-3 competition.
|
|||
|
It provides a very high security margin and high performance on 64-bit hardware
|
|||
|
(80% faster than SHA-256).
|
|||
|
This implementation also utilizes the new salted checksumming
|
|||
|
functionality in ZFS, which means that the checksum is pre-seeded with a
|
|||
|
secret 256-bit random key (stored on the pool) before being fed the data
|
|||
|
block to be checksummed.
|
|||
|
Thus the produced checksums are unique to a given pool,
|
|||
|
preventing hash collision attacks on systems with dedup.
|
|||
|
.Pp
|
|||
|
.checksum-spiel skein
|
|||
|
.
|
|||
|
.feature com.delphix spacemap_histogram yes
|
|||
|
This features allows ZFS to maintain more information about how free space
|
|||
|
is organized within the pool.
|
|||
|
If this feature is
|
|||
|
.Sy enabled ,
|
|||
|
it will be activated when a new space map object is created, or
|
|||
|
an existing space map is upgraded to the new format,
|
|||
|
and never returns back to being
|
|||
|
.Sy enabled .
|
|||
|
.
|
|||
|
.feature com.delphix spacemap_v2 yes
|
|||
|
This feature enables the use of the new space map encoding which
|
|||
|
consists of two words (instead of one) whenever it is advantageous.
|
|||
|
The new encoding allows space maps to represent large regions of
|
|||
|
space more efficiently on-disk while also increasing their maximum
|
|||
|
addressable offset.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
once it is
|
|||
|
.Sy enabled ,
|
|||
|
and never returns back to being
|
|||
|
.Sy enabled .
|
|||
|
.
|
|||
|
.feature org.zfsonlinux userobj_accounting yes extensible_dataset
|
|||
|
This feature allows administrators to account the object usage information
|
|||
|
by user and group.
|
|||
|
.Pp
|
|||
|
\*[instant-never]
|
|||
|
\*[remount-upgrade]
|
|||
|
.
|
|||
|
.feature com.delphix zpool_checkpoint yes
|
|||
|
This feature enables the
|
|||
|
.Nm zpool Cm checkpoint
|
|||
|
command that can checkpoint the state of the pool
|
|||
|
at the time it was issued and later rewind back to it or discard it.
|
|||
|
.Pp
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
when the
|
|||
|
.Nm zpool Cm checkpoint
|
|||
|
command is used to checkpoint the pool.
|
|||
|
The feature will only return back to being
|
|||
|
.Sy enabled
|
|||
|
when the pool is rewound or the checkpoint has been discarded.
|
|||
|
.
|
|||
|
.feature org.freebsd zstd_compress no extensible_dataset
|
|||
|
.Sy zstd
|
|||
|
is a high-performance compression algorithm that features a
|
|||
|
combination of high compression ratios and high speed.
|
|||
|
Compared to
|
|||
|
.Sy gzip ,
|
|||
|
.Sy zstd
|
|||
|
offers slightly better compression at much higher speeds.
|
|||
|
Compared to
|
|||
|
.Sy lz4 ,
|
|||
|
.Sy zstd
|
|||
|
offers much better compression while being only modestly slower.
|
|||
|
Typically,
|
|||
|
.Sy zstd
|
|||
|
compression speed ranges from 250 to 500 MB/s per thread
|
|||
|
and decompression speed is over 1 GB/s per thread.
|
|||
|
.Pp
|
|||
|
When the
|
|||
|
.Sy zstd
|
|||
|
feature is set to
|
|||
|
.Sy enabled ,
|
|||
|
the administrator can turn on
|
|||
|
.Sy zstd
|
|||
|
compression of any dataset using
|
|||
|
.Nm zfs Cm set Sy compress Ns = Ns Sy zstd Ar dset
|
|||
|
.Po see Xr zfs-set 8 Pc .
|
|||
|
This feature becomes
|
|||
|
.Sy active
|
|||
|
once a
|
|||
|
.Sy compress
|
|||
|
property has been set to
|
|||
|
.Sy zstd ,
|
|||
|
and will return to being
|
|||
|
.Sy enabled
|
|||
|
once all filesystems that have ever had their
|
|||
|
.Sy compress
|
|||
|
property set to
|
|||
|
.Sy zstd
|
|||
|
are destroyed.
|
|||
|
.El
|
|||
|
.
|
|||
|
.Sh SEE ALSO
|
|||
|
.Xr zpool 8
|