1078 lines
32 KiB
Groff
1078 lines
32 KiB
Groff
'\" te
|
|
.\" 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>
|
|
.TH ZPOOL-FEATURES 5 "Aug 24, 2020" OpenZFS
|
|
.SH NAME
|
|
zpool\-features \- ZFS pool feature descriptions
|
|
.SH DESCRIPTION
|
|
.sp
|
|
.LP
|
|
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 \fBupgrade\fR subcommand of the
|
|
zpool(8) command, or set the \fBfeature@\fR\fIfeature_name\fR property
|
|
to \fBenabled\fR. Please also see the \fB"Compatibility feature sets"\fR
|
|
section for information on how sets of features may be enabled together.
|
|
.sp
|
|
.LP
|
|
The pool format does not affect file system version compatibility or the ability
|
|
to send file systems between pools.
|
|
.sp
|
|
.LP
|
|
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
|
|
\fBactive\fR on the pool. If the pool was created by another software version
|
|
this set may include unsupported features.
|
|
.SS "Identifying features"
|
|
.sp
|
|
.LP
|
|
Every feature has a GUID of the form \fIcom.example:feature_name\fR. 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.
|
|
.sp
|
|
.LP
|
|
Each supported feature also has a short name. By convention a feature's short
|
|
name is the portion of its GUID which follows the ':' (e.g.
|
|
\fIcom.example:feature_name\fR would have the short name \fIfeature_name\fR),
|
|
however a feature's short name may differ across ZFS implementations if
|
|
following the convention would result in name conflicts.
|
|
.SS "Feature states"
|
|
.sp
|
|
.LP
|
|
Features can be in one of three states:
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBactive\fR
|
|
.ad
|
|
.RS 12n
|
|
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 (see "Read\-only compatibility").
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBenabled\fR
|
|
.ad
|
|
.RS 12n
|
|
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
|
|
\fBactive\fR state. Some features may support returning to the \fBenabled\fR
|
|
state after becoming \fBactive\fR. See feature\-specific documentation for
|
|
details.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBdisabled\fR
|
|
.ad
|
|
.RS 12n
|
|
This feature's on\-disk format changes have not been made and will not be made
|
|
unless an administrator moves the feature to the \fBenabled\fR state. Features
|
|
cannot be disabled once they have been enabled.
|
|
.RE
|
|
|
|
.sp
|
|
.LP
|
|
The state of supported features is exposed through pool properties of the form
|
|
\fIfeature@short_name\fR.
|
|
.SS "Read\-only compatibility"
|
|
.sp
|
|
.LP
|
|
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
|
|
"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
|
|
\fBreadonly\fR property during import (see zpool(8) for details on
|
|
importing pools).
|
|
.SS "Unsupported features"
|
|
.sp
|
|
.LP
|
|
For each unsupported feature enabled on an imported pool a pool property
|
|
named \fIunsupported@feature_name\fR will indicate why the import was allowed
|
|
despite the unsupported feature. Possible values for this property are:
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBinactive\fR
|
|
.ad
|
|
.RS 12n
|
|
The feature is in the \fBenabled\fR state and therefore the pool's on\-disk
|
|
format is still compatible with software that does not support this feature.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBreadonly\fR
|
|
.ad
|
|
.RS 12n
|
|
The feature is read\-only compatible and the pool has been imported in
|
|
read\-only mode.
|
|
.RE
|
|
|
|
.SS "Feature dependencies"
|
|
.sp
|
|
.LP
|
|
Some features depend on other features being enabled in order to function
|
|
properly. Enabling a feature will automatically enable any features it
|
|
depends on.
|
|
|
|
.SS "Compatibility feature sets"
|
|
.sp
|
|
.LP
|
|
It is sometimes necessary for a pool to maintain compatibility with a
|
|
specific on\-disk format, by enabling and disabling particular features. The
|
|
\fBcompatibility\fR feature facilitates this by allowing feature sets to
|
|
be read from text files. When set to \fBoff\fR (the default); compatibility
|
|
feature sets are disabled (ie: all features are enabled); when set to
|
|
\fBlegacy\fR; no features are enabled. When set to a comma\-separated list
|
|
of filenames (each filename may either be an absolute path, or relative to
|
|
\fB/etc/zfs/compatibility.d\fR or \fB/usr/share/zfs/compatibility.d\fR)
|
|
the lists of requested features are read from those files, separated by
|
|
whitespace and/or commas. Only features present in all files are enabled.
|
|
.LP
|
|
Simple sanity checks are applied to the files; they must be between 1 and
|
|
16,384 bytes in size, and must end with a newline character.
|
|
.LP
|
|
The requested features are applied when a pool is created using
|
|
\fBzpool create \-o compatibility=...\fR and controls which features are
|
|
enabled when using \fBzpool upgrade\fR. \fBzpool status\fR
|
|
will not show a warning about disabled features which are not part
|
|
of the requested feature set.
|
|
.LP
|
|
The special value \fBlegacy\fR prevents any features from being enabled,
|
|
either via \fBzpool upgrade\fR or via \fBzpool set feature@XX=enabled\fR.
|
|
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.
|
|
.LP
|
|
By convention, compatibility files in \fB/usr/share/zfs/compatibility.d\fR
|
|
are provided by the distribution package, 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 \fB/etc/zfs/compatibility.d\fR, if present, will take precedence over
|
|
files with the same name in \fB/usr/share/zfs/compatibility.d\fR.
|
|
.LP
|
|
If an unrecognized feature is found in these files, an error message will
|
|
be shown. If the unrecognized feature is in a file in
|
|
\fB/etc/zfs/compatibility.d\fR, this is treated as an error and processing
|
|
will stop. If the unrecognized feature is under
|
|
\fB/usr/share/zfs/compatibility.d\fR, 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.
|
|
.LP
|
|
Compatibility files may include comments; any text from \fB#\fR to the end
|
|
of the line is ignored.
|
|
.LP
|
|
\fBExample:\fR
|
|
.EX
|
|
# \fBcat /usr/share/zfs/compatibility.d/grub2\fR
|
|
# 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
|
|
|
|
# \fBzpool create \-o compatibility=grub2 bootpool vdev\fR
|
|
.EE
|
|
.LP
|
|
See \fBzpool\-create(8)\fR and \fBzpool\-upgrade(8)\fR for more information
|
|
on how these commands are affected by feature sets.
|
|
.SH FEATURES
|
|
.sp
|
|
.LP
|
|
The following features are supported on this system:
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBallocation_classes\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.zfsonlinux:allocation_classes
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This feature enables support for separate allocation classes.
|
|
|
|
This feature becomes \fBactive\fR when a dedicated allocation class vdev
|
|
(dedup or special) is created with the \fBzpool create\fR or \fBzpool add\fR
|
|
subcommands. With device removal, it can be returned to the \fBenabled\fR
|
|
state if all the dedicated allocation class vdevs are removed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBasync_destroy\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:async_destroy
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
Destroying a file system requires traversing all of its data in order to
|
|
return its used space to the pool. Without \fBasync_destroy\fR 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.
|
|
|
|
When \fBasync_destroy\fR 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 \fBfreeing\fR property.
|
|
|
|
This feature is only \fBactive\fR while \fBfreeing\fR is non\-zero.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBbookmarks\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:bookmarks
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
This feature enables use of the \fBzfs bookmark\fR subcommand.
|
|
|
|
This feature is \fBactive\fR while any bookmarks exist in the pool.
|
|
All bookmarks in the pool can be listed by running
|
|
\fBzfs list -t bookmark -r \fIpoolname\fR\fR.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBbookmark_v2\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.datto:bookmark_v2
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES bookmark, extensible_dataset
|
|
.TE
|
|
|
|
This feature enables the creation and management of larger bookmarks which are
|
|
needed for other features in ZFS.
|
|
|
|
This feature becomes \fBactive\fR when a v2 bookmark is created and will be
|
|
returned to the \fBenabled\fR state when all v2 bookmarks are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBbookmark_written\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:bookmark_written
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES bookmark, extensible_dataset, bookmark_v2
|
|
.TE
|
|
|
|
This feature enables additional bookmark accounting fields, enabling the
|
|
written#<bookmark> property (space written since a bookmark) and estimates of
|
|
send stream sizes for incrementals from bookmarks.
|
|
|
|
This feature becomes \fBactive\fR when a bookmark is created and will be
|
|
returned to the \fBenabled\fR state when all bookmarks with these fields are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBdevice_rebuild\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.openzfs:device_rebuild
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This feature enables the ability for the \fBzpool attach\fR and \fBzpool
|
|
replace\fR subcommands to perform sequential reconstruction (instead of
|
|
healing reconstruction) when resilvering.
|
|
|
|
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 \fBactive\fR while a sequential resilver is in progress,
|
|
and returns to \fBenabled\fR when the resilver completes.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBdevice_removal\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:device_removal
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This feature enables the \fBzpool remove\fR subcommand to remove top-level
|
|
vdevs, evacuating them to reduce the total size of the pool.
|
|
|
|
This feature becomes \fBactive\fR when the \fBzpool remove\fR subcommand is used
|
|
on a top-level vdev, and will never return to being \fBenabled\fR.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBdraid\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.openzfs:draid
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This feature enables use of the \fBdraid\fR 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.
|
|
|
|
This feature becomes \fBactive\fR when creating a pool which uses the
|
|
\fBdraid\fR vdev type, or when adding a new \fBdraid\fR vdev to an
|
|
existing pool.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBedonr\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.illumos:edonr
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
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: \fBzfs set dedup=edonr,verify\fR. See \fBzfs\fR(8).
|
|
|
|
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.
|
|
|
|
When the \fBedonr\fR feature is set to \fBenabled\fR, the administrator
|
|
can turn on the \fBedonr\fR checksum on any dataset using the
|
|
\fBzfs set checksum=edonr\fR. See zfs(8). This feature becomes
|
|
\fBactive\fR once a \fBchecksum\fR property has been set to \fBedonr\fR,
|
|
and will return to being \fBenabled\fR once all filesystems that have
|
|
ever had their checksum set to \fBedonr\fR are destroyed.
|
|
|
|
FreeBSD does not support the \fBedonr\fR feature.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBembedded_data\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:embedded_data
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
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.
|
|
|
|
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 512 bytes or 4KB) is saved,
|
|
and no additional i/o is needed to read and write the data block.
|
|
|
|
This feature becomes \fBactive\fR as soon as it is enabled and will
|
|
never return to being \fBenabled\fR.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBempty_bpobj\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:empty_bpobj
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
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.
|
|
|
|
When there are many snapshots, each snapshot uses many Block Pointer
|
|
Objects (bpobj's) to track blocks associated with that snapshot.
|
|
However, in common use cases, most of these bpobj's are empty. This
|
|
feature allows us to create each bpobj on-demand, thus eliminating the
|
|
empty bpobjs.
|
|
|
|
This feature is \fBactive\fR while there are any filesystems, volumes,
|
|
or snapshots which were created after enabling this feature.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBenabled_txg\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:enabled_txg
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
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.
|
|
|
|
This feature becomes \fBactive\fR as soon as it is enabled and will
|
|
never return to being \fBenabled\fB.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBencryption\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.datto:encryption
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES bookmark_v2, extensible_dataset
|
|
.TE
|
|
|
|
This feature enables the creation and management of natively encrypted datasets.
|
|
|
|
This feature becomes \fBactive\fR when an encrypted dataset is created and will
|
|
be returned to the \fBenabled\fR state when all datasets that use this feature
|
|
are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBextensible_dataset\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:extensible_dataset
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This feature allows more flexible use of internal ZFS data structures,
|
|
and exists for other features to depend on.
|
|
|
|
This feature will be \fBactive\fR when the first dependent feature uses it,
|
|
and will be returned to the \fBenabled\fR state when all datasets that use
|
|
this feature are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBfilesystem_limits\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.joyent:filesystem_limits
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
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.
|
|
|
|
This feature is \fBactive\fR once either of the limit properties has been
|
|
set on a dataset. Once activated the feature is never deactivated.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBhole_birth\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:hole_birth
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES enabled_txg
|
|
.TE
|
|
|
|
This feature has/had bugs, the result of which is that, if you do a
|
|
\fBzfs send -i\fR (or \fB-R\fR, since it uses \fB-i\fR) from an affected
|
|
dataset, the receiver will not see any checksum or other errors, but the
|
|
resulting destination snapshot will not match the source. Its use by
|
|
\fBzfs send -i\fR has been disabled by default. See the
|
|
\fBsend_holes_without_birth_time\fR module parameter in
|
|
zfs-module-parameters(5).
|
|
|
|
This feature improves performance of incremental sends (\fBzfs send -i\fR)
|
|
and receives for objects with many holes. The most common case of
|
|
hole-filled objects is zvols.
|
|
|
|
An incremental send stream from snapshot \fBA\fR to snapshot \fBB\fR
|
|
contains information about every block that changed between \fBA\fR and
|
|
\fBB\fR. 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 \fBA\fR cannot be
|
|
distinguished from holes created before \fBA\fR, information about every
|
|
hole in the entire filesystem or zvol is included in the send stream.
|
|
|
|
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.
|
|
|
|
Once the \fBhole_birth\fR 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.
|
|
|
|
This feature becomes \fBactive\fR as soon as it is enabled and will
|
|
never return to being \fBenabled\fB.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBlarge_blocks\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.open-zfs:large_blocks
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
The \fBlarge_block\fR feature allows the record size on a dataset to be
|
|
set larger than 128KB.
|
|
|
|
This feature becomes \fBactive\fR once a dataset contains a file with
|
|
a block size larger than 128KB, and will return to being \fBenabled\fR once all
|
|
filesystems that have ever had their recordsize larger than 128KB are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBlarge_dnode\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.zfsonlinux:large_dnode
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
The \fBlarge_dnode\fR feature allows the size of dnodes in a dataset to be
|
|
set larger than 512B.
|
|
|
|
This feature becomes \fBactive\fR once a dataset contains an object with
|
|
a dnode larger than 512B, which occurs as a result of setting the
|
|
\fBdnodesize\fR dataset property to a value other than \fBlegacy\fR. The
|
|
feature will return to being \fBenabled\fR 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.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fB\fBlivelist\fR\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:livelist
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
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 active until all
|
|
clones have been destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBlog_spacemap\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:log_spacemap
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES com.delphix:spacemap_v2
|
|
.TE
|
|
|
|
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.
|
|
|
|
This feature becomes \fBactive\fR as soon as it is enabled and will never
|
|
return to being \fBenabled\fR.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBlz4_compress\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.illumos:lz4_compress
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
\fBlz4\fR 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 \fBlzjb\fR compression.
|
|
Typically, \fBlz4\fR compression is approximately 50% faster on
|
|
compressible data and 200% faster on incompressible data than
|
|
\fBlzjb\fR. It is also approximately 80% faster on decompression, while
|
|
giving approximately 10% better compression ratio.
|
|
|
|
When the \fBlz4_compress\fR feature is set to \fBenabled\fR, the
|
|
administrator can turn on \fBlz4\fR compression on any dataset on the
|
|
pool using the zfs(8) command. Please note that doing so will
|
|
immediately activate the \fBlz4_compress\fR feature on the underlying
|
|
pool using the zfs(8) command. Also, all newly written metadata
|
|
will be compressed with \fBlz4\fR algorithm. Since this feature is not
|
|
read-only compatible, this operation will render the pool unimportable
|
|
on systems without support for the \fBlz4_compress\fR feature.
|
|
|
|
This feature becomes \fBactive\fR as soon as it is enabled and will
|
|
never return to being \fBenabled\fB.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBmulti_vdev_crash_dump\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.joyent:multi_vdev_crash_dump
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
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.
|
|
|
|
When the \fBmulti_vdev_crash_dump\fR feature is set to \fBenabled\fR,
|
|
the administrator can use the \fBdumpadm\fR(1M) command to configure a
|
|
dump device on a pool comprised of multiple vdevs.
|
|
|
|
Under FreeBSD and Linux this feature is registered for compatibility but not
|
|
used. New pools created under FreeBSD and Linux will have the feature
|
|
\fBenabled\fR but will never transition to \fB\fBactive\fR. This functionality
|
|
is not required in order to support crash dumps under FreeBSD and Linux.
|
|
Existing pools where this feature is \fB\fBactive\fR can be imported.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBobsolete_counts\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:obsolete_counts
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES device_removal
|
|
.TE
|
|
|
|
This feature is an enhancement of 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", i.e. no longer needed.
|
|
|
|
This feature becomes \fBactive\fR when the \fBzpool remove\fR subcommand is
|
|
used on a top-level vdev, and will never return to being \fBenabled\fR.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBproject_quota\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.zfsonlinux:project_quota
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
This feature allows administrators to account the spaces and objects usage
|
|
information against the project identifier (ID).
|
|
|
|
The project ID is new object-based attribute. When upgrading an existing
|
|
filesystem, object without project ID attribute will be assigned a zero
|
|
project ID. After this feature is enabled, newly created object will inherit
|
|
its parent directory's project ID if the parent inherit flag is set (via
|
|
\fBchattr +/-P\fR or \fBzfs project [-s|-C]\fR). Otherwise, the new object's
|
|
project ID will be set as zero. An object's project ID can be changed at
|
|
anytime by the owner (or privileged user) via \fBchattr -p $prjid\fR or
|
|
\fBzfs project -p $prjid\fR.
|
|
|
|
This feature will become \fBactive\fR as soon as it is enabled and will never
|
|
return to being \fBdisabled\fR. Each filesystem will be upgraded automatically
|
|
when remounted or when new file is created under that filesystem. The upgrade
|
|
can also be triggered on filesystems via `zfs set version=current <pool/fs>`.
|
|
The upgrade process runs in the background and may take a while to complete
|
|
for the filesystems containing a large number of files.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fB\fBredaction_bookmarks\fR\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:redaction_bookmarks
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES bookmarks, extensible_dataset
|
|
.TE
|
|
|
|
This feature enables the use of the redacted zfs send. Redacted \fBzfs send\fR
|
|
creates redaction bookmarks, which store the list of blocks redacted by the
|
|
send that created them. For more information about redacted send,
|
|
see \fBzfs\fR(8).
|
|
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fB\fBredacted_datasets\fR\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:redacted_datasets
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
This feature enables the receiving of redacted zfs send streams. Redacted zfs
|
|
send streams 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 receive,
|
|
see \fBzfs\fR(8).
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBresilver_defer\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.datto:resilver_defer
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
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.
|
|
|
|
This feature becomes \fBactive\fR once a resilver has been deferred, and
|
|
returns to being \fBenabled\fR when the deferred resilver begins.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBsha512\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.illumos:sha512
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
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 \fBskein\fR and
|
|
\fBedonr\fR algorithms.
|
|
|
|
When the \fBsha512\fR feature is set to \fBenabled\fR, the administrator
|
|
can turn on the \fBsha512\fR checksum on any dataset using
|
|
\fBzfs set checksum=sha512\fR. See zfs(8). This feature becomes
|
|
\fBactive\fR once a \fBchecksum\fR property has been set to \fBsha512\fR,
|
|
and will return to being \fBenabled\fR once all filesystems that have
|
|
ever had their checksum set to \fBsha512\fR are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBskein\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.illumos:skein
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
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.
|
|
|
|
When the \fBskein\fR feature is set to \fBenabled\fR, the administrator
|
|
can turn on the \fBskein\fR checksum on any dataset using
|
|
\fBzfs set checksum=skein\fR. See zfs(8). This feature becomes
|
|
\fBactive\fR once a \fBchecksum\fR property has been set to \fBskein\fR,
|
|
and will return to being \fBenabled\fR once all filesystems that have
|
|
ever had their checksum set to \fBskein\fR are destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBspacemap_histogram\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:spacemap_histogram
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This features allows ZFS to maintain more information about how free space
|
|
is organized within the pool. If this feature is \fBenabled\fR, ZFS will
|
|
set this feature to \fBactive\fR when a new space map object is created or
|
|
an existing space map is upgraded to the new format. Once the feature is
|
|
\fBactive\fR, it will remain in that state until the pool is destroyed.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBspacemap_v2\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:spacemap_v2
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
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.
|
|
|
|
This feature becomes \fBactive\fR once it is \fBenabled\fR, and never
|
|
returns back to being \fBenabled\fR.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBuserobj_accounting\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.zfsonlinux:userobj_accounting
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
This feature allows administrators to account the object usage information
|
|
by user and group.
|
|
|
|
This feature becomes \fBactive\fR as soon as it is enabled and will never
|
|
return to being \fBenabled\fR. Each filesystem will be upgraded automatically
|
|
when remounted, or when new files are created under that filesystem.
|
|
The upgrade can also be started manually on filesystems by running
|
|
`zfs set version=current <pool/fs>`. The upgrade process runs in the background
|
|
and may take a while to complete for filesystems containing a large number of
|
|
files.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBzpool_checkpoint\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID com.delphix:zpool_checkpoint
|
|
READ\-ONLY COMPATIBLE yes
|
|
DEPENDENCIES none
|
|
.TE
|
|
|
|
This feature enables the \fBzpool checkpoint\fR subcommand that can
|
|
checkpoint the state of the pool at the time it was issued and later
|
|
rewind back to it or discard it.
|
|
|
|
This feature becomes \fBactive\fR when the \fBzpool checkpoint\fR subcommand
|
|
is used to checkpoint the pool.
|
|
The feature will only return back to being \fBenabled\fR when the pool
|
|
is rewound or the checkpoint has been discarded.
|
|
.RE
|
|
|
|
.sp
|
|
.ne 2
|
|
.na
|
|
\fBzstd_compress\fR
|
|
.ad
|
|
.RS 4n
|
|
.TS
|
|
l l .
|
|
GUID org.freebsd:zstd_compress
|
|
READ\-ONLY COMPATIBLE no
|
|
DEPENDENCIES extensible_dataset
|
|
.TE
|
|
|
|
\fBzstd\fR is a high-performance compression algorithm that features a
|
|
combination of high compression ratios and high speed. Compared to \fBgzip\fR,
|
|
\fBzstd\fR offers slightly better compression at much higher speeds. Compared
|
|
to \fBlz4\fR, \fBzstd\fR offers much better compression while being only
|
|
modestly slower. Typically, \fBzstd\fR compression speed ranges from 250 to 500
|
|
MB/s per thread and decompression speed is over 1 GB/s per thread.
|
|
|
|
When the \fBzstd\fR feature is set to \fBenabled\fR, the administrator can turn
|
|
on \fBzstd\fR compression of any dataset by running
|
|
`zfs set compress=zstd <pool/fs>`.
|
|
|
|
This feature becomes \fBactive\fR once a \fBcompress\fR property has been set to
|
|
\fBzstd\fR, and will return to being \fBenabled\fR once all filesystems that
|
|
have ever had their compress property set to \fBzstd\fR are destroyed.
|
|
.RE
|
|
|
|
.SH "SEE ALSO"
|
|
zpool(8)
|