zfs(8) | configures ZFS file systems |
zfs-program, zfs, program(8) | executes ZFS channel programs |
ZFS(8) | MidnightBSD System Manager's Manual | ZFS(8) |
zfs
— configures
ZFS file systems
zfs |
[-? ] |
zfs |
create [-pu ]
[-o
property=value]...
filesystem |
zfs |
create [-ps ]
[-b blocksize]
[-o
property=value]...
-V size volume |
zfs |
destroy [-fnpRrv ]
filesystem|volume |
zfs |
destroy [-dnpRrv ]
filesystem|volume@snap[%snap][,snap[%snap]][,...] |
zfs |
destroy
filesystem|volume#bookmark |
zfs |
snapshot |snap
[-r ] [-o
property=value]...
filesystem@snapname|volume@snapname
filesystem@snapname|volume@snapname... |
zfs |
rollback [-rRf ]
snapshot |
zfs |
clone [-p ]
[-o
property=value]...
snapshot
filesystem|volume |
zfs |
promote
clone-filesystem |
zfs |
rename [-f ]
filesystem|volume|snapshot
filesystem|volume|snapshot |
zfs |
rename [-f ]
-p
filesystem|volume
filesystem|volume |
zfs |
rename -r
snapshot snapshot |
zfs |
rename bookmark
bookmark |
zfs |
rename -u
[-p ] filesystem
filesystem |
zfs |
list
[-r |-d
depth] [-Hp ]
[-o property[,property]...]
[-t type[,type]...]
[-s property]...
[-S property]...
filesystem|volume|snapshot
|bookmark... |
zfs |
remap
filesystem|volume |
zfs |
set
property=value
[property=value]...
filesystem|volume|snapshot... |
zfs |
get
[-r |-d
depth] [-Hp ]
[-o all |
field[,field]...]
[-t type[,
type]...] [-s
source[,source]...]
all |
property[,property]...
filesystem|volume|snapshot... |
zfs |
inherit [-rS ]
property
filesystem|volume|snapshot... |
zfs |
upgrade [-v ] |
zfs |
upgrade [-r ]
[-V version]
-a | filesystem |
zfs |
userspace [-Hinp ]
[-o
field[,field]...]
[-s field]...
[-S field]...
[-t
type[,type]...]
filesystem|snapshot |
zfs |
groupspace [-Hinp ]
[-o field[,field]...]
[-s field]...
[-S field]...
[-t
type[,type]...]
filesystem|snapshot |
zfs |
mount |
zfs |
mount [-vO ]
[-o
property[,property]...]
-a | filesystem |
zfs |
unmount |umount
[-f ] -a |
filesystem|mountpoint |
zfs |
share -a |
filesystem |
zfs |
unshare -a |
filesystem|mountpoint |
zfs |
bookmark snapshot
bookmark |
zfs |
send [-DLPRVcenpv ]
[-i snapshot |
-I snapshot]
snapshot |
zfs |
send [-LPcenv ]
[-i
snapshot|bookmark]
filesystem|volume|snapshot |
zfs |
send [-PVenv ]
-t receive_resume_token |
zfs |
receive |recv
[-vnsFu ] [-o
origin=snapshot]
filesystem|volume|snapshot |
zfs |
receive |recv
[-vnsFu ] [-d |
-e ] [-o
origin=snapshot]
filesystem |
zfs |
receive |recv
-A
filesystem|volume |
zfs |
allow
filesystem|volume |
zfs |
allow [-ldug ]
user|group[,user|group]...
perm|@setname[,perm|@setname]...
filesystem|volume |
zfs |
allow [-ld ]
-e |everyone
perm|@setname[,perm|@setname]...
filesystem|volume |
zfs |
allow -c
perm|@setname[,perm|@setname]...
filesystem|volume |
zfs |
allow -s
@setname
perm|@setname[,perm|@setname]...
filesystem|volume |
zfs |
unallow [-rldug ]
user|group[,user|group]...
[perm|@setname[,perm|@setname]...]
filesystem|volume |
zfs |
unallow [-rld ]
-e |everyone
[perm|@setname[,perm|@setname]...]
filesystem|volume |
zfs |
unallow [-r ]
-c
[perm|@setname[,perm|@setname]...]
filesystem|volume |
zfs |
unallow [-r ]
-s @setname
[perm|@setname[,perm|@setname]...]
filesystem|volume |
zfs |
hold [-r ]
tag snapshot... |
zfs |
holds [-Hp ]
[-r |-d
depth]
filesystem|volume|snapshot... |
zfs |
release [-r ]
tag snapshot... |
zfs |
diff [-FHt ]
snapshot
[snapshot|filesystem] |
zfs |
program [-jn ]
[-t timeout]
[-m memory_limit]
pool script [arg1
...] |
zfs |
jail
jailid|jailname
filesystem |
zfs |
unjail
jailid|jailname
filesystem |
The zfs
command configures ZFS datasets
within a ZFS storage pool, as described in
zpool(8). A dataset is
identified by a unique path within the ZFS namespace. For example:
where the maximum length of a dataset name is
MAXNAMELEN
(256 bytes) and the maximum amount of
nesting allowed in a path is 50 levels deep.
A dataset can be one of the following:
A ZFS storage pool is a logical collection of devices that provide space for datasets. A storage pool is also the root of the ZFS file system hierarchy.
The root of the pool can be accessed as a file system, such as mounting and unmounting, taking snapshots, and setting properties. The physical storage characteristics, however, are managed by the zpool(8) command.
See zpool(8) for more information on creating and administering pools.
A snapshot is a read-only copy of a file system or volume. Snapshots can be created extremely quickly, and initially consume no additional space within the pool. As data within the active dataset changes, the snapshot consumes more data than would otherwise be shared with the active dataset.
Snapshots can have arbitrary names. Snapshots of volumes can be cloned or rolled back, but cannot be accessed independently.
File system snapshots can be accessed under the .zfs/snapshot directory in the root of the file system. Snapshots are automatically mounted on demand and may be unmounted at regular intervals. The visibility of the .zfs directory can be controlled by the snapdir property.
A clone is a writable volume or file system whose initial contents are the same as another dataset. As with snapshots, creating a clone is nearly instantaneous, and initially consumes no additional space.
Clones can only be created from a snapshot. When a snapshot is
cloned, it creates an implicit dependency between the parent and child. Even
though the clone is created somewhere else in the dataset hierarchy, the
original snapshot cannot be destroyed as long as a clone exists. The
origin property exposes this dependency, and the
destroy
command lists any such dependencies, if they
exist.
The clone parent-child dependency relationship can be reversed by
using the promote
subcommand. This causes the
"origin" file system to become a clone of the specified file
system, which makes it possible to destroy the file system that the clone
was created from.
Creating a ZFS file system is a simple operation, so the number of file systems per system is likely to be numerous. To cope with this, ZFS automatically manages mounting and unmounting file systems without the need to edit the /etc/fstab file. All automatically managed file systems are mounted by ZFS at boot time.
By default, file systems are mounted under /path, where path is the name of the file system in the ZFS namespace. Directories are created and destroyed as needed.
A file system can also have a mount point set
in the mountpoint property. This directory is created as
needed, and ZFS automatically mounts the file system when the
"zfs
mount
-a
" command is invoked (without editing
/etc/fstab). The mountpoint
property can be inherited, so if pool/home has a mount
point of /home, then
pool/home/user
automatically inherits a mount point of
/home/user.
A file system mountpoint property of
none
prevents the file system from being
mounted.
If needed, ZFS file systems can also be managed with traditional
tools (mount(8),
umount(8),
fstab(5)). If a file
system's mount point is set to legacy
, ZFS makes no
attempt to manage the file system, and the administrator is responsible for
mounting and unmounting the file system.
A ZFS dataset can be attached to a jail by
using the "zfs
jail
" subcommand. You cannot attach a dataset
to one jail and the children of the same dataset to another jail. You can
also not attach the root file system of the jail or any dataset which needs
to be mounted before the zfs rc script is run inside the jail, as it would
be attached unmounted until it is mounted from the rc script inside the
jail. To allow management of the dataset from within a jail, the
jailed property has to be set and the jail needs access to
the /dev/zfs device. The quota
property cannot be changed from within a jail. See
jail(8) for information on
how to allow mounting ZFS datasets from within a jail.
A ZFS dataset can be detached from a jail
using the "zfs
unjail
" subcommand.
After a dataset is attached to a jail and the jailed property is set, a jailed file system cannot be mounted outside the jail, since the jail administrator might have set the mount point to an unacceptable value.
Deduplication is the process for removing redundant data at the
block-level, reducing the total amount of data stored. If a file system has
the dedup
property enabled, duplicate data blocks
are removed synchronously. The result is that only unique data is stored and
common components are shared among files.
Properties are divided into two types, native properties and user-defined (or "user") properties. Native properties either export internal statistics or control ZFS behavior. In addition, native properties are either editable or read-only. User properties have no effect on ZFS behavior, but you can use them to annotate datasets in a way that is meaningful in your environment. For more information about user properties, see the "User Properties" section, below.
Every dataset has a set of properties that export statistics about the dataset as well as control various behaviors. Properties are inherited from the parent unless overridden by the child. Some properties apply only to certain types of datasets (file systems, volumes, or snapshots).
The values of numeric properties can be specified using human-readable suffixes (for example, k, KB, M, Gb, and so forth, up to Z for zettabyte). The following are all valid (and equal) specifications:
The values of non-numeric properties are case sensitive and must be lowercase, except for mountpoint, sharenfs, and sharesmb.
The following native properties consist of read-only statistics about the dataset. These properties can be neither set, nor inherited. Native properties apply to all dataset types unless otherwise noted.
This property can also be referred to by its shortened column name, avail.
zfs
set
compression=on
dataset" The default
value is off
.-r
or
-f
options).on
if the snapshot has been
marked for deferred destroy by using the "zfs
destroy -d
" command. Otherwise, the property
is off
.This property can also be referred to by its shortened column name, lrefer.
This property can also be referred to by its shortened column name, lused.
yes
or
no
.This property can also be referred to by its shortened column name, refer.
When snapshots (see the "Snapshots" section) are created, their space is initially shared between the snapshot and the file system, and possibly with previous snapshots. As the file system changes, space that was previously shared becomes unique to the snapshot, and counted in the snapshot's space used. Additionally, deleting snapshots can increase the amount of space unique to (and used by) other snapshots.
The amount of space used, available, or referenced does not take into account pending changes. Pending changes are generally accounted for within a few seconds. Committing a change to a disk using fsync(2) or O_SYNC does not necessarily guarantee that the space usage information is updated immediately.
ls
-l
". The
amount of space charged is displayed by
"du
" and
"ls
-s
". See the
"zfs
userspace
"
subcommand for more information.
Unprivileged users can access only their own
space usage. The root user, or a user who has been granted the
userused
privilege with "zfs
allow
", can access everyone's usage.
The userused@... properties are not
displayed by "zfs
get
all
". The user's name must be appended after the
@ symbol, using one of the following forms:
zfs
hold
" command.ls
-l
. See the
userused@user property for more
information.
Unprivileged users can only access their own
groups' space usage. The root user, or a user who has been granted the
groupused
privilege with "zfs
allow
", can access all groups' usage.
This property can also be referred to by its shortened column name, volblock.
The snapshot may be specified as a short snapshot name (just the part after the @), in which case it will be interpreted as a snapshot in the same filesystem as this dataset. The snapshot may be a full snapshot name (filesystem@snapshot), which for clones may be a snapshot in the origin's filesystem (or the origin of the origin's filesystem, etc).
The following native properties can be used to change the behavior of a ZFS dataset.
discard
|
noallow
|
restricted
|
passthrough
|
passthrough-x
discard
does not inherit any ACL entries. A file
system with an aclinherit property value of
noallow
only inherits inheritable ACL entries that
specify "deny" permissions. The property value
restricted
(the default) removes the
write_acl
and
write_owner
permissions when the ACL entry is inherited. A file system with an
aclinherit property value of
passthrough
inherits all inheritable ACL entries
without any modifications made to the ACL entries when they are inherited.
A file system with an aclinherit property value of
passthrough-x
has the same meaning as
passthrough
, except that the
owner@,
group@,
and
everyone@
ACEs inherit the execute permission only if the file creation mode also
requests the execute bit.
When the property value is set to
passthrough
, files are created with a mode
determined by the inheritable ACEs. If no inheritable ACEs exist that
affect the mode, then the mode is set in accordance to the requested
mode from the application.
discard
|
groupmask
|
passthrough
|
restricted
discard
(the default) deletes all ACL entries that
do not represent the mode of the file. An aclmode
property of groupmask
reduces permissions granted
in all
ALLOW
entries found in the ACL such that they are no greater than the group
permissions specified by
chmod(2). A file system
with an aclmode property of
passthrough
indicates that no changes are made to
the ACL other than creating or updating the necessary ACL entries to
represent the new mode of the file or directory. An
aclmode property of restricted
will cause the chmod(2)
operation to return an error when used on any file or directory which has
a non-trivial ACL whose entries can not be represented by a mode.
chmod(2) is required to
change the set user ID, set group ID, or sticky bits on a file or
directory, as they do not have equivalent ACL entries. In order to use
chmod(2) on a file or
directory with a non-trivial ACL when aclmode is set to
restricted
, you must first remove all ACL entries
which do not represent the current mode.on
|
off
on
.on
|
off
|
noauto
off
, the file system
cannot be mounted, and is ignored by "zfs
mount
-a
". Setting
this property to off
is similar to setting the
mountpoint property to none
,
except that the dataset still has a normal mountpoint
property, which can be inherited. Setting this property to
off
allows datasets to be used solely as a
mechanism to inherit properties. One example of setting
canmount=off
is to have two
datasets with the same mountpoint, so that the children
of both datasets appear in the same directory, but might have different
inherited characteristics.
When the noauto
value is set, a
dataset can only be mounted and unmounted explicitly. The dataset is not
mounted automatically when the dataset is created or imported, nor is it
mounted by the "zfs
mount
-a
" command
or unmounted by the "zfs
umount
-a
"
command.
This property is not inherited.
on
|
off
|
fletcher2
|
fletcher4
|
sha256
|
noparity
|
sha512
|
skein
on
, which automatically selects an appropriate
algorithm (currently, fletcher4
, but this may
change in future releases). The value off
disables
integrity checking on user data. The value
noparity
not only disables integrity but also
disables maintaining parity for user data. This setting is used internally
by a dump device residing on a RAID-Z pool and should not be used by any
other dataset. Disabling checksums is
NOT a
recommended practice. The sha512, and
skein checksum algorithms require enabling the
appropriate features on the pool. Please see
zpool-features(7)
for more information on these algorithms.
Changing this property affects only newly-written data.
The salted checksum algorithm (edonr
)
is currently not supported on FreeBSD.
on
|
off
|
lzjb
|
gzip
|
gzip-
N
| zle
|
lz4
on
indicates that the current
default compression algorithm should be used. The default balances
compression and decompression speed, with compression ratio and is
expected to work well on a wide variety of workloads. Unlike all other
settings for this property, on does not select a fixed compression type.
As new compression algorithms are added to ZFS and enabled on a pool, the
default compression algorithm may change. The current default compression
algorthm is either lzjb
or, if the
lz4_compress feature is enabled,
lz4
. The lzjb
compression
algorithm is optimized for performance while providing decent data
compression. Setting compression to on
uses the
lzjb
compression algorithm. The
gzip
compression algorithm uses the same
compression as the
gzip(1) command. You can
specify the gzip
level by using the value
gzip-
N where
N is an integer from 1 (fastest) to 9 (best
compression ratio). Currently, gzip
is equivalent
to gzip-6
(which is also the default for
gzip(1)). The
zle
compression algorithm compresses runs of
zeros.
The lz4 compression algorithm is a high-performance replacement for the lzjb algorithm. It features significantly faster compression and decompression, as well as a moderately higher compression ratio than lzjb, but can only be used on pools with the lz4_compress feature set to enabled. See zpool-features(7) for details on ZFS feature flags and the lz4_compress feature.
This property can also be referred to by its shortened column
name compress
. Changing this property affects
only newly-written data.
1
| 2
|
3
Changing this property only affects newly-written data.
Therefore, set this property at file system creation time by using the
-o
copies=
N option.
on
|
off
|
verify
|
sha256
[,verify
]
|
sha512[,verify
]
|
skein[,verify
]off
. The default deduplication checksum is
sha256
(this may change in the future). When
dedup is enabled, the checksum defined here overrides
the checksum property. Setting the value to
verify
has the same effect as the setting
sha256,verify
.
If set to verify
, ZFS will do a
byte-to-byte comparsion in case of two blocks having the same signature
to make sure the block contents are identical.
on
|
off
on
|
off
on
.none
none
Before setting this property, a special class vdev must be added to the pool. See zpool(8) for more details on the special allocation class.
none
|
legacy
When the mountpoint property is changed for
a file system, the file system and any children that inherit the mount
point are unmounted. If the new value is legacy
,
then they remain unmounted. Otherwise, they are automatically remounted
in the new location if the property was previously
legacy
or none
, or if
they were mounted before the property was changed. In addition, any
shared file systems are unshared and shared in the new location.
on
|
off
all
|
none
|
metadata
all
, then both user data and metadata is
cached. If this property is set to none
, then
neither user data nor metadata is cached. If this property is set to
metadata
, then only metadata is cached. The
default value is all
.none
Quotas cannot be set on volumes, as the volsize property acts as an implicit quota.
none
none
Enforcement of user quotas may be delayed by
several seconds. This delay means that a user might exceed their quota
before the system notices that they are over quota and begins to refuse
additional writes with the
EDQUOT error
message. See the userspace
subcommand for more
information.
Unprivileged users can only access their own groups' space
usage. The root user, or a user who has been granted the
userquota privilege with
"zfs
allow
",
can get and set everyone's quota.
This property is not available on volumes, on file systems
before version 4, or on pools before version 15. The
userquota@... properties are not displayed by
"zfs
get all
".
The user's name must be appended after the @ symbol,
using one of the following forms:
none
Unprivileged users can access only their own
groups' space usage. The root user, or a user who has been granted the
groupquota
privilege with "zfs
allow
", can get and set all groups'
quotas.
on
|
off
off
.For databases that create very large files but access them in small random chunks, these algorithms may be suboptimal. Specifying a recordsize greater than or equal to the record size of the database can result in significant performance gains. Use of this property for general purpose file systems is strongly discouraged, and may adversely affect performance.
The size specified must be a power of two greater than or equal to 512 and less than or equal to 128 Kbytes. If the large_blocks feature is enabled on the pool, the size may be up to 1 Mbyte. See zpool-features(7) for details on ZFS feature flags.
Changing the file system's recordsize affects only files created afterward; existing files are unaffected.
This property can also be referred to by its shortened column name, recsize.
all
|
most
copies
=2, and
redundant_metadata
=most,
then ZFS stores 6 copies of most metadata, and 4 copies of data and some
metadata.
When set to all
, ZFS stores an extra
copy of all metadata. If a single on-disk block is corrupt, at worst a
single block of user data (which is recordsize
bytes long can be lost.)
When set to most
, ZFS stores an extra
copy of most types of metadata. This can improve performance of random
writes, because less metadata must be written. In practice, at worst
about 100 blocks (of recordsize
bytes each) of
user data can be lost if a single on-disk block is corrupt. The exact
behavior of which metadata blocks are stored redundantly may change in
future releases.
The default value is all
.
none
none
|
auto
If refreservation is set, a snapshot is only allowed if there is enough free pool space outside of this reservation to accommodate the current number of "referenced" bytes in the dataset.
If refreservation is set to
auto, a volume is thick provisioned or not sparse.
refreservation= auto
is only
supported on volumes. See volsize in the Native
Properties section for more information about sparse volumes.
This property can also be referred to by its shortened column name, refreserv.
none
This property can also be referred to by its shortened column name, reserv.
all
|
none
|
metadata
all
, then both user data and metadata is
cached. If this property is set to none
, then
neither user data nor metadata is cached. If this property is set to
metadata
, then only metadata is cached. The
default value is all
.on
|
off
on
.off
is managed the traditional way via
exports(5). Otherwise,
the file system is automatically shared and unshared with the
"zfs
share
" and
"zfs
unshare
"
commands. If the property is set to on
no NFS
export options are used. Otherwise, NFS export options are equivalent to
the contents of this property. The export options may be comma-separated.
See exports(5) for a
list of valid options.
When the sharenfs property is changed for a dataset, the mountd(8) daemon is reloaded.
latency
|
throughput
latency
(the default), ZFS will use pool log
devices (if configured) to handle the requests at low latency. If
logbias is set to throughput
,
ZFS will not use configured pool log devices. ZFS will instead optimize
synchronous operations for global pool throughput and efficient use of
resources.hidden
|
visible
hidden
.standard
|
always
|
disabled
volblocksize
, and cannot be zero.
The reservation is kept equal to the volume's logical size to prevent unexpected behavior for consumers. Without the reservation, the volume could run out of space, resulting in undefined behavior or data corruption, depending on how the volume is used. These effects can also occur when the volume size is changed while it is in use (particularly when shrinking the size). Extreme care should be used when adjusting the volume size.
Though not recommended, a "sparse
volume" (also known as "thin provisioned") can be created
by specifying the -s
option to the
"zfs
create
-V
" command, or by changing the value of
the refreservation property, or
reservation property on pool version 8 or earlier
after the volume has been created. A "sparse volume" is a
volume where the value of refreservation is less then
the size of the volume plus the space required to store its metadata.
Consequently, writes to a sparse volume can fail with
ENOSPC when
the pool is low on space. For a sparse volume, changes to
volsize are not reflected in the
refreservation. A volume that is not sparse is said to
be "thick provisioned". A sparse volume can become thick
provisioned by setting refreservation to
auto.
default
|
geom
| dev
|
none
off
|
on
off
|
on
off
|
on
off
.The following three properties cannot be changed after the file
system is created, and therefore, should be set when the file system is
created. If the properties are not set with the
"zfs
create
" or
zpool
create
commands, these
properties are inherited from the parent dataset. If the parent dataset
lacks these properties due to having been created prior to these features
being supported, the new file system will have the default values for these
properties.
sensitive
|
insensitive
|
mixed
sensitive
. Traditionally, UNIX and POSIX file
systems have case-sensitive file names.
The mixed
value for the
casesensitivity property indicates that the file
system can support requests for both case-sensitive and case-insensitive
matching behavior.
none
|
formC
|
formD
|
formKC
|
formKD
none
, and the utf8only property
was left unspecified, the utf8only property is
automatically set to on
. The default value of the
normalization property is none
.
This property cannot be changed after the file system is created.on
|
off
off
, the normalization property must either not be
explicitly set or be set to none
. The default
value for the utf8only property is
off
. This property cannot be changed after the
file system is created.The casesensitivity, normalization, and utf8only properties are also new permissions that can be assigned to non-privileged users by using the ZFS delegated administration feature.
When a file system is mounted, either through
mount(8) for legacy mounts
or the "zfs
mount
"
command for normal file systems, its mount options are set according to its
properties. The correlation between properties and mount options is as
follows:
PROPERTY | MOUNT OPTION |
atime | atime/noatime |
exec | exec/noexec |
readonly | ro/rw |
setuid | suid/nosuid |
In addition, these options can be set on a per-mount basis using
the -o
option, without affecting the property that
is stored on disk. The values specified on the command line override the
values stored in the dataset. These properties are reported as
"temporary" by the "zfs
get
" command. If the properties are changed
while the dataset is mounted, the new setting overrides any temporary
settings.
In addition to the standard native properties, ZFS supports arbitrary user properties. User properties have no effect on ZFS behavior, but applications or administrators can use them to annotate datasets (file systems, volumes, and snapshots).
User property names must contain a colon (:) character to distinguish them from native properties. They may contain lowercase letters, numbers, and the following punctuation characters: colon (:), dash (-), period (.) and underscore (_). The expected convention is that the property name is divided into two portions such as module:property, but this namespace is not enforced by ZFS. User property names can be at most 256 characters, and cannot begin with a dash (-).
When making programmatic use of user properties, it is strongly suggested to use a reversed DNS domain name for the module component of property names to reduce the chance that two independently-developed packages use the same property name for different purposes. Property names beginning with com.sun are reserved for use by Sun Microsystems.
The values of user properties are arbitrary strings, are always
inherited, and are never validated. All of the commands that operate on
properties ("zfs
list
", "zfs
get
", "zfs
set
" and so forth) can be used to manipulate
both native properties and user properties. Use the
"zfs
inherit
"
command to clear a user property. If the property is not defined in any
parent dataset, it is removed entirely. Property values are limited to 1024
characters.
All subcommands that modify state are logged persistently to the pool in their original form.
zfs
[-?
]Displays a help message.
zfs
create
[-pu
] [-o
property=value]...
filesystemCreates a new ZFS file system. The file system is automatically mounted according to the mountpoint property inherited from the parent.
-p
-o
option is ignored. If the target filesystem
already exists, the operation completes successfully.-u
-o
property=valuezfs
set
property=value" was
invoked at the same time the dataset was created. Any editable ZFS
property can also be set at creation time. Multiple
-o
options can be specified. An error results
if the same property is specified in multiple
-o
options.zfs
create
[-ps
] [-b
blocksize] [-o
property=value]...
-V
size volumeCreates a volume of the given size. The volume is exported as a block device in /dev/zvol/path, where path is the name of the volume in the ZFS namespace. The size represents the logical size as exported by the device. By default, a reservation of equal size is created.
size is automatically rounded up to the nearest 128 Kbytes to ensure that the volume has an integral number of blocks regardless of blocksize.
-p
-o
option is ignored. If the target filesystem
already exists, the operation completes successfully.-s
-b
blocksize-o
volblocksize
=blocksize.
If this option is specified in conjunction with
-o
volblocksize
, the
resulting behavior is undefined.-o
property=valuezfs
set
property=value"
command was invoked at the same time the dataset was created. Any
editable ZFS property can also be set at creation time. Multiple
-o
options can be specified. An error results
if the same property is specified in multiple
-o
options.zfs
destroy
[-fnpRrv
]
filesystem|volumeDestroys the given dataset. By default, the command unshares any file systems that are currently shared, unmounts any file systems that are currently mounted, and refuses to destroy a dataset that has active dependents (children or clones).
-r
-R
-f
zfs
unmount
-f
" command. This option has no effect on
non-file systems or unmounted file systems.-n
-v
or
-p
flags to determine what data would be
deleted.-p
-v
Extreme care should be taken when applying either the
-r
or the -R
options, as
they can destroy large portions of a pool and cause unexpected behavior
for mounted file systems in use.
zfs
destroy
[-dnpRrv
]
snapshot[%snapname][,...]The given snapshots are destroyed immediately if and only if
the "zfs
destroy
" command without the
-d
option would have destroyed it. Such
immediate destruction would occur, for example, if the snapshot had no
clones and the user-initiated reference count were zero.
If a snapshot does not qualify for immediate destruction, it is marked for deferred deletion. In this state, it exists as a usable, visible snapshot until both of the preconditions listed above are met, at which point it is destroyed.
An inclusive range of snapshots may be specified by separating the first and last snapshots with a percent sign (%). The first and/or last snapshots may be left blank, in which case the filesystem's oldest or newest snapshot will be implied.
Multiple snapshots (or ranges of snapshots) of the same filesystem or volume may be specified in a comma-separated list of snapshots. Only the snapshot's short name (the part after the @) should be specified when using a range or comma-separated list to identify multiple snapshots.
-r
-R
-d
flag will have no effect.-n
-v
or
-p
flags to determine what data would be
deleted.-p
-v
-d
Extreme care should be taken when applying either the
-r
or the -R
options, as
they can destroy large portions of a pool and cause unexpected behavior
for mounted file systems in use.
zfs
destroy
filesystem|volume#bookmarkThe given bookmark is destroyed.
zfs
snapshot
|snap
[-r
] [-o
property=value]...
filesystem@snapname|volume@snapname
filesystem@snapname|volume@snapname...Creates snapshots with the given names. All previous modifications by successful system calls to the file system are part of the snapshots. Snapshots are taken atomically, so that all snapshots correspond to the same moment in time. See the "Snapshots" section for details.
zfs
rollback
[-rRf
] snapshotRoll back the given dataset to a previous snapshot. When a
dataset is rolled back, all data that has changed since the snapshot is
discarded, and the dataset reverts to the state at the time of the
snapshot. By default, the command refuses to roll back to a snapshot
other than the most recent one. In order to do so, all intermediate
snapshots and bookmarks must be destroyed by specifying the
-r
option.
The -rR
options do not recursively
destroy the child snapshots of a recursive snapshot. Only direct
snapshots of the specified filesystem are destroyed by either of these
options. To completely roll back a recursive snapshot, you must rollback
the individual child snapshots.
zfs
clone
[-p
] [-o
property=value]...
snapshot filesystem|volumeCreates a clone of the given snapshot. See the "Clones" section for details. The target dataset can be located anywhere in the ZFS hierarchy, and is created as the same type as the original.
-p
-o
property=valuezfs
create
" for details.zfs
promote
clone-filesystemPromotes a clone file system to no longer be dependent on its "origin" snapshot. This makes it possible to destroy the file system that the clone was created from. The clone parent-child dependency relationship is reversed, so that the origin file system becomes a clone of the specified file system.
The snapshot that was cloned, and any snapshots previous to
this snapshot, are now owned by the promoted clone. The space they use
moves from the origin file system to the promoted clone, so enough space
must be available to accommodate these snapshots. No new space is
consumed by this operation, but the space accounting is adjusted. The
promoted clone must not have any conflicting snapshot names of its own.
The rename
subcommand can be used to rename any
conflicting snapshots.
zfs
rename
[-f
]
filesystem|volume|snapshot
filesystem|volume|snapshotzfs
rename
[-f
] -p
filesystem|volume
filesystem|volumezfs
rename
-u
[-p
]
filesystem filesystemRenames the given dataset. The new target can be located anywhere in the ZFS hierarchy, with the exception of snapshots. Snapshots can only be renamed within the parent file system or volume. When renaming a snapshot, the parent file system of the snapshot does not need to be specified as part of the second argument. Renamed file systems can inherit new mount points, in which case they are unmounted and remounted at the new mount point.
-p
-u
legacy
or none
, file
system is not unmounted even if this option is not given.-f
-u
flag.zfs
rename
-r
snapshot snapshotRecursively rename the snapshots of all descendent datasets. Snapshots are the only dataset that can be renamed recursively.
zfs
rename
bookmark bookmarkRenames the given bookmark. Bookmarks can only be renamed within the parent file system or volume. When renaming a bookmark, the parent file system or volume of the bookmark does not need to be specified as part of the second argument.
zfs
list
[-r
|-d
depth] [-Hp
]
[-o
property[,property]...]
[-t
type[,type]...]
[-s
property]...
[-S
property]...
filesystem|volume|snapshot...Lists the property information for the given
datasets in tabular form. If specified, you can list property
information by the absolute pathname or the relative pathname. By
default, all file systems and volumes are displayed. Snapshots are
displayed if the listsnaps property is
on
(the default is off
).
The following fields are displayed,
name,
used, available,
referenced, mountpoint.
-r
-d
depth-H
-p
-o
property[,property]...name
to display the dataset
namespace
to display space usage
properties on file systems and volumes. This is a shortcut for
specifying -o
name,avail,used,usedsnap,usedds,usedrefreserv,usedchild
-t
filesystem,volume
syntax.-t
type[,type]...-t
snapshot
displays only snapshots.-s
propertyname
to sort by the
dataset name. Multiple properties can be specified at one time using
multiple -s
property options. Multiple
-s
options are evaluated from left to right in
decreasing order of importance.
The following is a list of sorting criteria:
zfs
list
" is preserved.-S
property-s
option, but sorts by property
in descending order.zfs
set
property=value
[property=value]...
filesystem|volume|snapshotSets the property or list of properties to the given value(s) for each dataset. Only some properties can be edited. See the "Properties" section for more information on what properties can be set and acceptable values. Numeric values can be specified as exact values, or in a human-readable form with a suffix of B, K, M, G, T, P, E, Z (for bytes, kilobytes, megabytes, gigabytes, terabytes, petabytes, exabytes, or zettabytes, respectively). User properties can be set on snapshots. For more information, see the "User Properties" section.
zfs
get
[-r
|-d
depth] [-Hp
]
[-o
all |
field[,field]...]
[-t
type[,type]...]
[-s
source[,source]...]
all |
property[,property]...
filesystem|volume|snapshot|bookmark...Displays properties for the given datasets. If no datasets are specified, then the command displays properties for all datasets on the system. For each property, the following columns are displayed:
All columns except the
RECEIVED
column are displayed by default. The columns to display can be specified
by using the -o
option. This command takes a
comma-separated list of properties as described in the
"Native
Properties" and
"User Properties"
sections.
The special value all
can be used to
display all properties that apply to the given dataset's type
(filesystem, volume, snapshot, or bookmark).
-r
-d
depth-H
-p
-o
all
|
field[,field]...all
specifies all columns.-t
type[,type]...-t
snapshot
displays only snapshots.-s
source[,source]...zfs
inherit
[-rS
] property
filesystem|volume|snapshot...Clears the specified property, causing it to be inherited from
an ancestor, restored to default if no ancestor has the property set, or
with the -S
option reverted to the received
value if one exists. See the
"Properties" section for
a listing of default values, and details on which properties can be
inherited.
zfs
remap
filesystem|volumeRemap the indirect blocks in the given filesystem or volume so that they no longer reference blocks on previously removed vdevs and we can eventually shrink the size of the indirect mapping objects for the previously removed vdevs. Note that remapping all blocks might not be possible and that references from snapshots will still exist and cannot be remapped.
zfs
upgrade
[-v
]Displays a list of file systems that are not the most recent version.
-v
zfs
upgrade
[-r
] [-V
version] -a
|
filesystemUpgrades file systems to a new on-disk version. Once this is
done, the file systems will no longer be accessible on systems running
older versions of the software. "zfs
send
" streams generated from new snapshots
of these file systems cannot be accessed on systems running older
versions of the software.
In general, the file system version is independent of the pool
version. See zpool(8)
for information on the zpool
upgrade
command.
In some cases, the file system version and the pool version are interrelated and the pool version must be upgraded before the file system version can be upgraded.
-r
-V
version-V
flag is not specified, this command
upgrades to the most recent version. This option can only be used to
increase the version number, and only up to the most recent version
supported by this software.-a
zfs
userspace
[-Hinp
] [-o
field[,field]...]
[-s
field]...
[-S
field]...
[-t
type[,type]...]
filesystem|snapshotDisplays space consumed by, and quotas on, each user in the specified filesystem or snapshot. This corresponds to the userused@user and userquota@user properties.
-n
-H
-p
-o
field[,field]...-s
field-s
and
-S
flags may be specified multiple times to
sort first by one field, then by another. The default is
-s
type
-s
name
.-S
field-s
.-t
type[,type]...The default is -t
posixuser,smbuser
.
The default can be changed to include group types.
-i
zfs
groupspace
[-Hinp
] [-o
field[,field]...]
[-s
field]...
[-S
field]...
[-t
type[,type]...]
filesystem|snapshotDisplays space consumed by, and
quotas on, each group in the specified filesystem or snapshot. This
subcommand is identical to "zfs
userspace
", except that the default types
to display are -t
posixgroup,smbgroup.
zfs
mount
Displays all ZFS file systems currently mounted.
zfs
mount
[-vO
] [-o
property[,property]...]
-a
| filesystemMounts ZFS file systems.
-v
-O
-o
property[,property]...-a
zfs
unmount
|umount
[-f
] -a
|
filesystem|mountpointUnmounts currently mounted ZFS file systems.
zfs
share
-a
| filesystemShares ZFS file systems that have the sharenfs property set.
-a
zfs
unshare
-a
|
filesystem|mountpointUnshares ZFS file systems that have the sharenfs property set.
-a
zfs
bookmark
snapshot bookmarkCreates a bookmark of the given snapshot. Bookmarks mark the
point in time when the snapshot was created, and can be used as the
incremental source for a "zfs
send
" command.
This feature must be enabled to be used. See zpool-features(7) for details on ZFS feature flags and the bookmark feature.
zfs
send
[-DLPRVcenpv
] [-i
snapshot | -I
snapshot] snapshotCreates a stream representation of the last
snapshot argument (not part of
-i
or -I
) which is
written to standard output. The output can be redirected to a file or to
a different system (for example, using
ssh(1)). By default, a
full stream is generated.
-i
snapshotIf the destination is a clone, the source may be the
origin snapshot, which must be fully specified (for example,
pool/fs@origin
, not just
@origin
).
-I
snapshot-I @a
fs@d
is similar to -i @a fs@b; -i @b fs@c; -i
@c fs@d
. The incremental source may be specified as with the
-i
option.-R,
--replicate
If the -i
or
-I
flags are used in conjunction with the
-R
flag, an incremental replication stream
is generated. The current values of properties, and current snapshot
and file system names are set when the stream is received. If the
-F
flag is specified when this stream is
received, snapshots and file systems that do not exist on the
sending side are destroyed.
-D,
--dedup
-L,
--large-block
-e,
--embed
-c,
--compressed
-L
option is not
supplied in conjunction with -c
then the data
will be decompressed before sending so it can be split into smaller
block sizes.-p,
--props
-R
is specified. The receiving system
must also support this feature.-n,
--dryrun
-v
or -P
flags to
determine what data will be sent. In this case, the verbose output
will be written to standard output (contrast with a non-dry-run, where
the stream is written to standard output and the verbose output goes
to standard error).-P,
--parsable
-v,
--verbose
-V
The format of the stream is committed. You will be able to receive your streams on future versions of ZFS.
zfs
send
[-LPcenv
] [-i
snapshot|bookmark]
filesystem|volume|snapshotGenerate a send stream, which may be of a filesystem, and may be incremental from a bookmark. If the destination is a filesystem or volume, the pool must be read-only, or the filesystem must not be mounted. When the stream generated from a filesystem or volume is received, the default snapshot name will be (--head--).
-i
snapshot|bookmarkIf the incremental target is a clone, the incremental source can be the origin snapshot, or an earlier snapshot in the origin's filesystem, or the origin's origin, etc.
-n,
--dryrun
-v
or -P
flags to
determine what data will be sent. In this case, the verbose output
will be written to standard output (contrast with a non-dry-run, where
the stream is written to standard output and the verbose output goes
to standard error).-v,
--verbose
-L,
--large-block
-P,
--parsable
-c,
--compressed
-L
option is not
supplied in conjunction with -c
then the data
will be decompressed before sending so it can be split into smaller
block sizes.-e,
--embed
zfs
send
[-Penv
] -t
receive_resume_tokenzfs
receive
|recv
[-vnsFu
] [-o
origin=snapshot]
filesystem|volume|snapshotzfs
receive
|recv
[-vnsFu
] [-d
|
-e
] [-o
origin=snapshot]
filesystemCreates a snapshot whose contents are as specified in the
stream provided on standard input. If a full stream is received, then a
new file system is created as well. Streams are created using the
"zfs
send
"
subcommand, which by default creates a full stream.
"zfs
recv
" can
be used as an alias for "zfs
receive
".
If an incremental stream is received, then the destination file system must already exist, and its most recent snapshot must match the incremental stream's source. For zvols, the destination device link is destroyed and recreated, which means the zvol cannot be accessed during the receive operation.
When a snapshot replication package stream that is generated
by using the "zfs
send
-R
" command is
received, any snapshots that do not exist on the sending location are
destroyed by using the "zfs
destroy
-d
"
command.
The name of the snapshot (and file system, if a full stream is
received) that this subcommand creates depends on the argument type and
the -d
or -e
option.
If the argument is a snapshot name, the specified
snapshot is created. If the argument is a file
system or volume name, a snapshot with the same name as the sent
snapshot is created within the specified
filesystem or volume. If the
-d
or -e
option is
specified, the snapshot name is determined by appending the sent
snapshot's name to the specified filesystem. If
the -d
option is specified, all but the pool
name of the sent snapshot path is appended (for example,
b/c@1 appended
from sent snapshot a/b/c@1), and if the
-e
option is specified, only the tail of the
sent snapshot path is appended (for example,
c@1
appended from sent snapshot a/b/c@1). In the case of
-d
, any file systems needed to replicate the
path of the sent snapshot are created within the specified file
system.
-d
-e
-u
-v
-n
-v
option to verify the name the
receive operation would use.-o
origin=snapshot-F
zfs
send
-R
{-i
|
-I
}"), destroy snapshots and file systems
that do not exist on the sending side.-s
zfs
receive
process,
or unclean shutdown of the system.
The receive can be resumed with a stream generated by
zfs
send
-t
token, where the
token is the value of the
receive_resume_token property of the filesystem or
volume which is received into.
To use this flag, the storage pool must have the extensible_dataset feature enabled. See zpool-features(7) for details on ZFS feature flags.
zfs
receive
|recv
-A
filesystem|volumezfs
receive
-s
, deleting its
saved partially received state.zfs
allow
filesystem|volumeDisplays permissions that have been delegated on the specified
filesystem or volume. See the other forms of
"zfs
allow
"
for more information.
zfs
allow
[-ldug
]
user|group[,user|group]...
perm|@setname[,perm|@setname]...
filesystem|volumezfs
allow
[-ld
]
-e
|everyone
perm|@setname[,perm|@setname]...
filesystem|volumeDelegates ZFS administration permission for the file systems to non-privileged users.
-ug
]
user|group[,
user|group]...-ug
options are specified, then the argument
is interpreted preferentially as the keyword
everyone
, then as a user name, and lastly as a
group name. To specify a user or group named "everyone", use
the -u
or -g
options.
To specify a group with the same name as a user, use the
-g
option.-e
|everyone
]-s
form below for
details.-ld
]
filesystem|volume-ld
options are specified, or both are, then
the permissions are allowed for the file system or volume, and all of
its descendents. If only the -l
option is
used, then is allowed "locally" only for the specified file
system. If only the -d
option is used, then is
allowed only for the descendent file systems.Permissions are generally the ability to use a ZFS subcommand or change a ZFS property. The following permissions are available:
NAME | TYPE | NOTES |
allow | subcommand | Must also have the permission that is being allowed |
clone | subcommand | Must also have the 'create' ability and 'mount' ability in the origin file system |
create | subcommand | Must also have the 'mount' ability |
destroy | subcommand | Must also have the 'mount' ability |
diff | subcommand | Allows lookup of paths within a dataset given an object number, and the ability to create snapshots necessary to 'zfs diff' |
hold | subcommand | Allows adding a user hold to a snapshot |
mount | subcommand | Allows mount/umount of ZFS datasets |
promote | subcommand | Must also have the 'mount' and 'promote' ability in the origin file system |
receive | subcommand | Must also have the 'mount' and 'create' ability |
release | subcommand | Allows releasing a user hold which might destroy the snapshot |
rename | subcommand | Must also have the 'mount' and 'create' ability in the new parent |
rollback | subcommand | Must also have the 'mount' ability |
send | subcommand | |
share | subcommand | Allows sharing file systems over the NFS protocol |
snapshot | subcommand | Must also have the 'mount' ability |
groupquota | other | Allows accessing any groupquota@... property |
groupused | other | Allows reading any groupused@... property |
userprop | other | Allows changing any user property |
userquota | other | Allows accessing any userquota@... property |
userused | other | Allows reading any userused@... property |
aclinherit | property | |
aclmode | property | |
atime | property | |
canmount | property | |
casesensitivity | property | |
checksum | property | |
compression | property | |
copies | property | |
dedup | property | |
devices | property | |
exec | property | |
filesystem_limit | property | |
logbias | property | |
jailed | property | |
mlslabel | property | |
mountpoint | property | |
nbmand | property | |
normalization | property | |
primarycache | property | |
quota | property | |
readonly | property | |
recordsize | property | |
refquota | property | |
refreservation | property | |
reservation | property | |
secondarycache | property | |
setuid | property | |
sharenfs | property | |
sharesmb | property | |
snapdir | property | |
snapshot_limit | property | |
sync | property | |
utf8only | property | |
version | property | |
volblocksize | property | |
volsize | property | |
vscan | property | |
xattr | property |
zfs
allow
-c
perm|@setname[,perm|@setname]...
filesystem|volumeSets "create time" permissions. These permissions are granted (locally) to the creator of any newly-created descendent file system.
zfs
allow
-s
@setname
perm|@setname[,perm|@setname]...
filesystem|volumeDefines or adds permissions to a permission set. The set can
be used by other "zfs
allow
" commands for the specified file
system and its descendents. Sets are evaluated dynamically, so changes
to a set are immediately reflected. Permission sets follow the same
naming restrictions as ZFS file systems, but the name must begin with an
"at sign" (@), and can be no more than 64
characters long.
zfs
unallow
[-rldug
]
user|group[,user|group]...
[perm|@setname[,perm|@setname]...]
filesystem|volumezfs
unallow
[-rld
]
-e
|everyone
[perm|@setname[,perm|@setname]...]
filesystem|volumezfs
unallow
[-r
] -c
[perm|@setname[,perm|@setname]...]
filesystem|volumeRemoves permissions that were granted with the
"zfs
allow
"
command. No permissions are explicitly denied, so other permissions
granted are still in effect. For example, if the permission is granted
by an ancestor. If no permissions are specified, then all permissions
for the specified user,
group, or everyone are
removed. Specifying everyone
(or using the
-e
option) only removes the permissions that
were granted to everyone, not all permissions for every user and group.
See the "zfs
allow
" command for a description of the
-ldugec
options.
-r
zfs
unallow
[-r
] -s
@setname
[perm|@setname[,perm|@setname]...]
filesystem|volumeRemoves permissions from a permission set. If no permissions are specified, then all permissions are removed, thus removing the set entirely.
zfs
hold
[-r
] tag snapshot...Adds a single reference, named with the tag argument, to the specified snapshot or snapshots. Each snapshot has its own tag namespace, and tags must be unique within that space.
If a hold exists on a snapshot, attempts to destroy
that snapshot by using the "zfs
destroy
" command returns
EBUSY.
-r
zfs
holds
[-Hp
]
[-r
|-d
depth]
filesystem|volume|snapshot...Lists all existing user references for the given dataset or datasets.
-H
-p
-r
-d
depthzfs
release
[-r
] tag snapshot...Removes a single reference, named with the tag argument, from the specified snapshot or snapshots. The tag must already exist for each snapshot.
-r
zfs
diff
[-FHt
] snapshot
[snapshot|filesystem]Display the difference between a snapshot of a given filesystem and another snapshot of that filesystem from a later time or the current contents of the filesystem. The first column is a character indicating the type of change, the other columns indicate pathname, new pathname (in case of rename), change in link count, and optionally file type and/or change time.
The types of change are:
- | path was removed |
+ | path was added |
M | path was modified |
R | path was renamed |
-F
-F
option of
ls(1).
B | block device |
C | character device |
F | regular file |
/ | directory |
@ | symbolic link |
= | socket |
> | door (not supported on FreeBSD) |
| | named pipe (not supported on FreeBSD) |
P | event port (not supported on FreeBSD) |
-H
-t
zfs
program
[-jn
] [-t
timeout] [-m
memory_limit] pool script
[arg1 ...]Executes script as a ZFS channel program on pool. The ZFS channel program interface allows ZFS administrative operations to be run programmatically via a Lua script. The entire script is executed atomically, with no other administrative operations taking effect concurrently. A library of ZFS calls is made available to channel program scripts. Channel programs may only be run with root privileges.
For full documentation of the ZFS channel program interface, see the manual page for zfs-program(8).
-j
-n
-t
timeout-m
memory-limitAll remaining argument strings are passed directly to the channel program as arguments. See zfs-program(8) for more information.
zfs
jail
jailid filesystemAttaches the specified filesystem to the jail identified by JID jailid. From now on this file system tree can be managed from within a jail if the jailed property has been set. To use this functionality, the jail needs the allow.mount and allow.mount.zfs parameters set to 1 and the enforce_statfs parameter set to a value lower than 2.
See jail(8) for more information on managing jails and configuring the parameters above.
zfs
unjail
jailid filesystemDetaches the specified filesystem from the jail identified by JID jailid.
The following exit values are returned:
The following commands create a file system named pool/home and a file system named pool/home/bob. The mount point /home is set for the parent file system, and is automatically inherited by the child file system.
#
zfs create pool/home
#
zfs set mountpoint=/home pool/home
#
zfs create pool/home/bob
The following command creates a snapshot named yesterday. This snapshot is mounted on demand in the .zfs/snapshot directory at the root of the pool/home/bob file system.
#
zfs snapshot pool/home/bob@yesterday
The following command creates snapshots named yesterday of pool/home and all of its descendent file systems. Each snapshot is mounted on demand in the .zfs/snapshot directory at the root of its file system. The second command destroys the newly created snapshots.
#
zfs snapshot -r pool/home@yesterday
#
zfs destroy -r pool/home@yesterday
The following command disables the compression property for all file systems under pool/home. The next command explicitly enables compression for pool/home/anne.
#
zfs set compression=off pool/home
#
zfs set compression=on pool/home/anne
The following command lists all active file systems and
volumes in the system. Snapshots are displayed if the
listsnaps property is on
. The
default is off
. See
zpool(8) for more
information on pool properties.
#
zfs list
NAME USED AVAIL REFER MOUNTPOINT pool 450K 457G 18K /pool pool/home 315K 457G 21K /home pool/home/anne 18K 457G 18K /home/anne pool/home/bob 276K 457G 276K /home/bob
The following command sets a quota of 50 Gbytes for pool/home/bob.
#
zfs set quota=50G pool/home/bob
The following command lists all properties for pool/home/bob.
#
zfs get all pool/home/bob
NAME PROPERTY VALUE SOURCE pool/home/bob type filesystem - pool/home/bob creation Tue Jul 21 15:53 2009 - pool/home/bob used 21K - pool/home/bob available 20.0G - pool/home/bob referenced 21K - pool/home/bob compressratio 1.00x - pool/home/bob mounted yes - pool/home/bob quota 20G local pool/home/bob reservation none default pool/home/bob recordsize 128K default pool/home/bob mountpoint /home/bob default pool/home/bob sharenfs off default pool/home/bob checksum on default pool/home/bob compression on local pool/home/bob atime on default pool/home/bob devices on default pool/home/bob exec on default pool/home/bob filesystem_limit none default pool/home/bob setuid on default pool/home/bob readonly off default pool/home/bob jailed off default pool/home/bob snapdir hidden default pool/home/bob snapshot_limit none default pool/home/bob aclmode discard default pool/home/bob aclinherit restricted default pool/home/bob canmount on default pool/home/bob xattr on default pool/home/bob copies 1 default pool/home/bob version 5 - pool/home/bob utf8only off - pool/home/bob normalization none - pool/home/bob casesensitivity sensitive - pool/home/bob vscan off default pool/home/bob nbmand off default pool/home/bob sharesmb off default pool/home/bob refquota none default pool/home/bob refreservation none default pool/home/bob primarycache all default pool/home/bob secondarycache all default pool/home/bob usedbysnapshots 0 - pool/home/bob usedbydataset 21K - pool/home/bob usedbychildren 0 - pool/home/bob usedbyrefreservation 0 - pool/home/bob logbias latency default pool/home/bob dedup off default pool/home/bob mlslabel - pool/home/bob sync standard default pool/home/bob refcompressratio 1.00x -
The following command gets a single property value.
#
zfs get -H -o value compression pool/home/bob
on
The following command lists all properties with local settings for pool/home/bob.
#
zfs get -s local -o name,property,value all pool/home/bob
NAME PROPERTY VALUE pool/home/bob quota 20G pool/home/bob compression on
The following command reverts the contents of pool/home/anne to the snapshot named yesterday, deleting all intermediate snapshots.
#
zfs rollback -r pool/home/anne@yesterday
The following command creates a writable file system whose initial contents are the same as pool/home/bob@yesterday.
#
zfs clone pool/home/bob@yesterday pool/clone
The following commands illustrate how to test out changes to a file system, and then replace the original file system with the changed one, using clones, clone promotion, and renaming:
#
zfs create pool/project/production
Populate /pool/project/production with data and continue with the following commands:
#
zfs snapshot pool/project/production@today
#
zfs clone pool/project/production@today pool/project/beta
Now make changes to /pool/project/beta and continue with the following commands:
#
zfs promote pool/project/beta
#
zfs rename pool/project/production pool/project/legacy
#
zfs rename pool/project/beta pool/project/production
Once the legacy version is no longer needed, it can be destroyed.
#
zfs destroy pool/project/legacy
The following command causes pool/home/bob and pool/home/anne to inherit the checksum property from their parent.
#
zfs inherit checksum pool/home/bob pool/home/anne
The following commands send a full stream and then an incremental stream to a remote machine, restoring them into poolB/received/fs@a and poolB/received/fs@b, respectively. poolB must contain the file system poolB/received, and must not initially contain poolB/received/fs.
#
zfs send pool/fs@a
|ssh host zfs receive poolB/received/fs@a
#
zfs send -i a pool/fs@b
|ssh host zfs receive poolB/received/fs
The following command sends a full stream of poolA/fsA/fsB@snap to a remote machine, receiving it into poolB/received/fsA/fsB@snap. The fsA/fsB@snap portion of the received snapshot's name is determined from the name of the sent snapshot. poolB must contain the file system poolB/received. If poolB/received/fsA does not exist, it is created as an empty file system.
#
zfs send poolA/fsA/fsB@snap
|ssh host zfs receive -d poolB/received
The following example sets the user-defined com.example:department property for a dataset.
#
zfs set com.example:department=12345 tank/accounting
The following example shows how to maintain a history of snapshots with a consistent naming scheme. To keep a week's worth of snapshots, the user destroys the oldest snapshot, renames the remaining snapshots, and then creates a new snapshot, as follows:
#
zfs destroy -r pool/users@7daysago
#
zfs rename -r pool/users@6daysago @7daysago
#
zfs rename -r pool/users@5daysago @6daysago
#
zfs rename -r pool/users@4daysago @5daysago
#
zfs rename -r pool/users@3daysago @4daysago
#
zfs rename -r pool/users@2daysago @3daysago
#
zfs rename -r pool/users@yesterday @2daysago
#
zfs rename -r pool/users@today @yesterday
#
zfs snapshot -r pool/users@today
The following command shows how to set sharenfs property options to enable root access for a specific network on the tank/home file system. The contents of the sharenfs property are valid exports(5) options.
#
zfs set sharenfs="maproot=root,network 192.168.0.0/24" tank/home
Another way to write this command with the same result is:
#
set zfs sharenfs="-maproot=root -network 192.168.0.0/24" tank/home
The following example shows how to set permissions so that user cindys can create, destroy, mount, and take snapshots on tank/cindys. The permissions on tank/cindys are also displayed.
#
zfs allow cindys create,destroy,mount,snapshot tank/cindys
#
zfs allow tank/cindys
---- Permissions on tank/cindys -------------------------------------- Local+Descendent permissions: user cindys create,destroy,mount,snapshot
The following example shows how to grant anyone in the group staff to create file systems in tank/users. This syntax also allows staff members to destroy their own file systems, but not destroy anyone else's file system. The permissions on tank/users are also displayed.
#
zfs allow staff create,mount tank/users
#
zfs allow -c destroy tank/users
#
zfs allow tank/users
---- Permissions on tank/users --------------------------------------- Permission sets: destroy Local+Descendent permissions: group staff create,mount
The following example shows how to define and grant a permission set on the tank/users file system. The permissions on tank/users are also displayed.
#
zfs allow -s @pset create,destroy,snapshot,mount tank/users
#
zfs allow staff @pset tank/users
#
zfs allow tank/users
---- Permissions on tank/users --------------------------------------- Permission sets: @pset create,destroy,mount,snapshot Local+Descendent permissions: group staff @pset
The following example shows to grant the ability to set quotas and reservations on the users/home file system. The permissions on users/home are also displayed.
#
zfs allow cindys quota,reservation users/home
#
zfs allow users/home
---- Permissions on users/home --------------------------------------- Local+Descendent permissions: user cindys quota,reservation#
su - cindys
cindys%
zfs set quota=10G users/home/marks
cindys%
zfs get quota users/home/marks
NAME PROPERTY VALUE SOURCE users/home/marks quota 10G local
The following example shows how to remove the snapshot permission from the staff group on the tank/users file system. The permissions on tank/users are also displayed.
#
zfs unallow staff snapshot tank/users
#
zfs allow tank/users
---- Permissions on tank/users --------------------------------------- Permission sets: @pset create,destroy,mount,snapshot Local+Descendent permissions: group staff @pset
The following example shows how to see what has changed
between a prior snapshot of a ZFS Dataset and its current state. The
-F
option is used to indicate type information
for the files affected.
#
zfs diff tank/test@before tank/test
M / /tank/test/ M F /tank/test/linked (+1) R F /tank/test/oldname -> /tank/test/newname - F /tank/test/deleted + F /tank/test/created M F /tank/test/modified
chmod(2), fsync(2), exports(5), fstab(5), rc.conf(5), jail(8), mount(8), umount(8), zfs-program(8), zpool(8)
The zfs
utility first appeared in
FreeBSD 7.0.
This manual page is a mdoc(7) reimplementation of the OpenSolaris manual page zfs(1M), modified and customized for FreeBSD and licensed under the Common Development and Distribution License (CDDL).
The mdoc(7) implementation of this manual page was initially written by Martin Matuska ⟨mm@FreeBSD.org⟩.
September 12, 2020 | midnightbsd-3.1 |