Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
zfs(1M)			System Administration Commands		       zfs(1M)

NAME
       zfs - configures	ZFS file systems

SYNOPSIS
       zfs [-?]

       zfs create [-p] [-o property=value] ... filesystem

       zfs create [-ps]	[-b blocksize] [-o property=value] ... -V size volume

       zfs destroy [-rRf] filesystem|volume|snapshot

       zfs snapshot [-r] [-o property=value]...
	     filesystem@snapname|volume@snapname

       zfs rollback [-rRf] snapshot

       zfs clone [-p] [-o property=value] ... snapshot filesystem|volume

       zfs promote clone-filesystem

       zfs rename filesystem|volume|snapshot
	    filesystem|volume|snapshot

       zfs rename [-p] filesystem|volume filesystem|volume

       zfs rename -r snapshot snapshot

       zfs list	[-rH] [-o property[,...]] [-t type[,...]]
	    [-s	property] ... [-S property] ...	[filesystem|volume|snapshot] ...

       zfs set property=value filesystem|volume|snapshot ...

       zfs get [-rHp] [-o field[,...]] [-s source[,...]] "all" | property[,...]
	     filesystem|volume|snapshot	...

       zfs inherit [-r]	property filesystem|volume|snapshot ...

       zfs upgrade [-v]

       zfs upgrade [-r]	[-V version] -a	| filesystem

       zfs mount

       zfs mount [-vO] [-o options] -a | filesystem

       zfs unmount [-f]	-a | filesystem|mountpoint

       zfs share -a | filesystem

       zfs unshare -a filesystem|mountpoint

       zfs send	[-vR] [-[iI] snapshot] snapshot

       zfs receive [-vnF] filesystem|volume|snapshot

       zfs receive [-vnF] -d filesystem

       zfs allow [-ldug] "everyone"|user|group[,...] perm|@setname[,...]
	    filesystem|volume

       zfs allow [-ld] -e perm|@setname[,...] filesystem|volume

       zfs allow -c perm|@setname[,...]	filesystem|volume

       zfs allow -s @setname perm|@setname[,...] filesystem|volume

       zfs unallow [-rldug] "everyone"|user|group[,...]	[perm|@setname[,... ]]
	    filesystem|volume

       zfs unallow [-rld] -e [perm|@setname[,... ]] filesystem|volume

       zfs unallow [-r]	-c [perm|@setname[ ... ]] filesystem|volume

       zfs unallow [-r]	-s @setname [perm|@setname[,...	]] filesystem|volume

DESCRIPTION
       The  zfs	 command configures ZFS	datasets within	a ZFS storage pool, as
       described in zpool(1M). A dataset is identified by a unique path	within
       the ZFS namespace. For example:

	 pool/{filesystem,volume,snapshot}

       where the maximum length	of a dataset name is MAXNAMELEN	(256 bytes).

       A dataset can be	one of the following:

       file system

	   A  ZFS  dataset of type "filesystem"	that can be mounted within the
	   standard system namespace and  behaves  like	 other	file  systems.
	   While  ZFS  file  systems are designed to be	POSIX compliant, known
	   issues exist	that prevent compliance	in  some  cases.  Applications
	   that	 depend	on standards conformance might fail due	to nonstandard
	   behavior when checking file system free space.

       volume

	   A logical volume exported as	a raw or block device.	This  type  of
	   dataset  should only	be used	under special circumstances. File sys-
	   tems	are typically used in most  environments.  Volumes  cannot  be
	   used	in a non-global	zone.

       snapshot

	   A  read-only	version	of a file system or volume at a	given point in
	   time. It is specified as filesystem@name or volume@name.

   ZFS File System Hierarchy
       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(1M) command.

       See zpool(1M) for more information on creating and administering	pools.

   Snapshots
       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"	direc-
       tory in the root	 of  the  file	system.	 Snapshots  are	 automatically
       mounted	on demand and may be unmounted at regular intervals. The visi-
       bility of the ".zfs" directory can be controlled	by the "snapdir" prop-
       erty.

   Clones
       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.

   Mount Points
       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/vfstab file. All automatically managed file  sys-
       tems 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" prop-
       erty. This directory is created as needed, and ZFS automatically	mounts
       the  file  system  when	the "zfs mount -a" command is invoked (without
       editing /etc/vfstab). The mountpoint property can be inherited,	so  if
       pool/home has a mount point of /export/stuff, then pool/home/user auto-
       matically inherits a mount point	of /export/stuff/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, umount, /etc/vfstab). 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  sys-
       tem.

   Zones
       A  ZFS file system can be added to a non-global zone by using zonecfg's
       "add fs"	subcommand. A ZFS file system that is added  to	 a  non-global
       zone must have its mountpoint property set to legacy.

       The  physical  properties of an added file system are controlled	by the
       global administrator. However, the zone administrator can create,  mod-
       ify,  or	 destroy  files	within the added file system, depending	on how
       the file	system is mounted.

       A dataset can also be delegated to a non-global zone by using zonecfg's
       "add dataset" subcommand. You cannot delegate a dataset to one zone and
       the children of the same	dataset	to another zone. The zone  administra-
       tor  can	 change	properties of the dataset or any of its	children. How-
       ever, the "quota" property is controlled	by the global administrator.

       A ZFS volume can	be added as a device to	a  non-global  zone  by	 using
       zonecfg's "add device" subcommand. However, its physical	properties can
       only be modified	by the global administrator.

       For more	information about zonecfg syntax, see zonecfg(1M).

       After a dataset is delegated to a non-global zone, the "zoned" property
       is  automatically  set.	A  zoned  file system cannot be	mounted	in the
       global zone, since the zone administrator might have to set  the	 mount
       point to	an unacceptable	value.

       The  global  administrator  can	forcibly  clear	 the "zoned" property,
       though this should be done with extreme care. The global	 administrator
       should  verify that all the mount points	are acceptable before clearing
       the property.

   Native Properties
       Properties are divided into  two	 types,	 native	 properties  and  user
       defined 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.

       Every dataset has a set of properties that export statistics about  the
       dataset	as  well as control various behavior. Properties are inherited
       from the	parent unless overridden by the	child.	Some  properties  only
       apply  to  certain  types  of  datasets (file systems, volumes or snap-
       shots).

       The values of numeric properties	can be specified using	human-readable
       suffixes	 (for  example,	 "k",  "KB",  "M",  "Gb",  etc,	 up  to	 Z for
       zettabyte). The following are all valid (and equal) specifications:

	 "1536M", "1.5g", "1.50GB".

       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 cannot be set, nor	 are  they  inherited.
       Native properties apply to all dataset types unless otherwise noted.

       available

	   The	amount of space	available to the dataset and all its children,
	   assuming that there is no other activity in the pool. Because space
	   is  shared within a pool, availability can be limited by any	number
	   of factors, including physical pool size, quotas, reservations,  or
	   other datasets within the pool.

	   This	property can also be referred to by its	shortened column name,
	   "avail".

       compressratio

	   The compression ratio achieved for this  dataset,  expressed	 as  a
	   multiplier.	Compression  can be turned on by running "zfs set com-
	   pression=on dataset". The default value is "off".

       creation

	   The time this dataset was created.

       mounted

	   For file systems, indicates whether the file	 system	 is  currently
	   mounted. This property can be either	"yes" or "no".

       origin

	   For	cloned	file  systems  or volumes, the snapshot	from which the
	   clone was created. The origin cannot	be destroyed (even with	the -r
	   or -f options) so long as a clone exists.

       referenced

	   The amount of data that is accessible by this dataset, which	may or
	   may not be shared with other	datasets in the	pool. When a  snapshot
	   or  clone  is  created,  it initially references the	same amount of
	   space as the	file system or snapshot	it was created from, since its
	   contents are	identical.

	   This	property can also be referred to by its	shortened column name,
	   "refer".

       type

	   The type of dataset:	"filesystem", "volume",	or "snapshot".

       used

	   The amount of space consumed	by this	dataset	and  all  its  descen-
	   dents.  This	 is  the  value	that is	checked	against	this dataset's
	   quota and  reservation.  The	 space	used  does  not	 include  this
	   dataset's  reservation, but does take into account the reservations
	   of any descendent datasets. The amount of space that	a dataset con-
	   sumes  from	its  parent,  as  well as the amount of	space that are
	   freed if this dataset is recursively	destroyed, is the  greater  of
	   its space used and its reservation.

	   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(3c) or O_SYNC does not necessarily guarantee  that  the
	   space usage information is updated immediately.

       usedby*

	   The usedby* snapshots decompose the "used" properties into the var-
	   ious	reasons	that space is used. Specifically, used	=  usedbychil-
	   dren	 +  usedbydataset  +  usedbyrefreservation +, usedbysnapshots.
	   These properties are	only available for datasets created  on	 zpool
	   "version 13"	pools.

       usedbychildren

	   The	amount	of space used by children of this dataset, which would
	   be freed if all the dataset's children were destroyed.

       usedbydataset

	   The amount of space used by this dataset  itself,  which  would  be
	   freed  if  the  dataset  were  destroyed  (after first removing any
	   refreservation and destroying any necessary	snapshots  or  descen-
	   dents).

       usedbyrefreservation

	   The	amount	of space used by a refreservation set on this dataset,
	   which would be freed	if the refreservation was removed.

       usedbysnapshots

	   The amount of space consumed	by snapshots of	this dataset. In  par-
	   ticular,  it	 is  the amount	of space that would be freed if	all of
	   this	dataset's snapshots were destroyed. Note that this is not sim-
	   ply	the  sum of the	snapshots' "used" properties because space can
	   be shared by	multiple snapshots

       volblocksize=blocksize

	   For volumes,	specifies the block size of the	volume.	The  blocksize
	   cannot be changed once the volume has been written, so it should be
	   set at volume creation time.	The default blocksize for volumes is 8
	   Kbytes. Any power of	2 from 512 bytes to 128	Kbytes is valid.

	   This	property can also be referred to by its	shortened column name,
	   "volblock".

       The following native properties can be used to change the behavior of a
       ZFS dataset.

       aclinherit=discard | noallow | restricted | passthrough | passthrough-x

	   Controls  how  ACL entries are inherited when files and directories
	   are created.	A file system with an "aclinherit" property  of	 "dis-
	   card"  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"	inher-
	   its	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.

       aclmode=discard | groupmask | passthrough

	   Controls how	an ACL is modified during chmod(2). A file system with
	   an "aclmode"	property of "discard" deletes all ACL entries that  do
	   not	represent  the	mode  of  the  file.  An "aclmode" property of
	   "groupmask" (the default) reduces user or  group  permissions.  The
	   permissions	are  reduced,  such  that they are no greater than the
	   group permission bits, unless it is a user entry that has the  same
	   UID	as  the	 owner of the file or directory. In this case, the ACL
	   permissions are reduced so that they	are no greater than owner per-
	   mission   bits.  A  file  system  with  an  "aclmode"  property  of
	   "passthrough" indicates that	no changes are made to the  ACL	 other
	   than	generating the necessary ACL entries to	represent the new mode
	   of the file or directory.

       atime=on	| off

	   Controls whether the	access time for	files is updated when they are
	   read. Turning this property off avoids producing write traffic when
	   reading files and can  result  in  significant  performance	gains,
	   though  it  might  confuse mailers and other	similar	utilities. The
	   default value is "on".

       canmount=on | off | noauto

	   If this property is	set  to	 "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  charac-
	   teristics.

	   When	 the "noauto" option 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 unmount -a" command.

	   This	property is not	inherited.

       checksum=on | off | fletcher2, |	fletcher4 | sha256

	   Controls the	checksum used to verify	data  integrity.  The  default
	   value is "on", which	automatically selects an appropriate algorithm
	   (currently, fletcher2, but this may change in future	releases). The
	   value  "off"	 disables  integrity  checking on user data. Disabling
	   checksums is	NOT a recommended practice.

       compression=on |	off | lzjb | gzip | gzip-N

	   Controls the	compression  algorithm	used  for  this	 dataset.  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)).

	   This	 property can also be referred to by its shortened column name
	   "compress".

       copies=1	| 2 | 3

	   Controls the	number of copies of  data  stored  for	this  dataset.
	   These  copies  are  in  addition  to	any redundancy provided	by the
	   pool, for example, mirroring	or raid-z. The copies  are  stored  on
	   different  disks, if	possible. The space used by multiple copies is
	   charged to the associated file and  dataset,	 changing  the	"used"
	   property and	counting against quotas	and reservations.

	   Changing  this property only	affects	newly-written data. Therefore,
	   set this property at	file system creation time  by  using  the  "-o
	   copies=" option.

       devices=on | off

	   Controls  whether  device  nodes can	be opened on this file system.
	   The default value is	"on".

       exec=on | off

	   Controls whether processes can be executed from  within  this  file
	   system. The default value is	"on".

       mountpoint=path | none |	legacy

	   Controls  the mount point used for this file	system.	See the	"Mount
	   Points" section for more information	on how this property is	used.

	   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.	Other-
	   wise,  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 sys-
	   tems	are unshared and shared	in the new location.

       nbmand=on | off

	   Controls whether the	file system should be  mounted	with  "nbmand"
	   (Non	 Blocking  mandatory  locks).  This  is	used for CIFS clients.
	   Changes to this property only take effect when the file  system  is
	   umounted  and  remounted.  See  mount(1M)  for  more	information on
	   "nbmand" mounts.

       primarycache=all	| none | metadata

	   Controls what is cached in the primary cache	(ARC). If  this	 prop-
	   erty	 is  set to "all", then	both user data and metadata is cached.
	   If this property is set to "none", then neither user	data nor meta-
	   data	 is  cached.  If this property is set to "metadata", then only
	   metadata is cached. The default value is "all".

       quota=size | none

	   Limits the amount of	space a	dataset	and its	descendents  can  con-
	   sume.  This	property  enforces a hard limit	on the amount of space
	   used. This includes all space consumed  by  descendents,  including
	   file	 systems  and  snapshots. Setting a quota on a descendent of a
	   dataset that	already	has a quota does not override  the  ancestor's
	   quota, but rather imposes an	additional limit.

	   Quotas  cannot be set on volumes, as	the "volsize" property acts as
	   an implicit quota.

       readonly=on | off

	   Controls whether this dataset can be	modified. The default value is
	   "off".

	   This	property can also be referred to by its	shortened column name,
	   "rdonly".

       recordsize=size

	   Specifies a suggested block size for	files in the file system. This
	   property  is	 designed  solely for use with database	workloads that
	   access files	in fixed-size records. ZFS automatically  tunes	 block
	   sizes according to internal algorithms optimized for	typical	access
	   patterns.

	   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	 data-
	   base	can result in significant performance gains. Use of this prop-
	   erty	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.

	   Changing the	file system's recordsize only  affects	files  created
	   afterward; existing files are unaffected.

	   This	property can also be referred to by its	shortened column name,
	   "recsize".

       refquota=size | none

	   Limits the amount of	space a	dataset	 can  consume.	This  property
	   enforces  a hard limit on the amount	of space used. This hard limit
	   does	not include space used by descendents, including file  systems
	   and snapshots.

       refreservation=size | none

	   The	minimum	amount of space	guaranteed to a	dataset, not including
	   its descendents. When the amount of space used is below this	value,
	   the	dataset	is treated as if it were taking	up the amount of space
	   specified by	 refreservation.  The  refreservation  reservation  is
	   accounted  for  in  the  parent  datasets'  space  used, and	counts
	   against the parent datasets'	quotas and reservations.

	   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.

	   This	property can also be referred to by its	shortened column name,
	   "refreserv".

       reservation=size	| none

	   The minimum amount of space guaranteed to a dataset and its descen-
	   dents. When the amount of space  used  is  below  this  value,  the
	   dataset  is	treated	 as  if	 it were taking	up the amount of space
	   specified by	its reservation. Reservations are accounted for	in the
	   parent datasets' space used,	and count against the parent datasets'
	   quotas and reservations.

	   This	property can also be referred to by its	shortened column name,
	   "reserv".

       secondarycache=all | none | metadata

	   Controls  what  is  cached  in the secondary	cache (L2ARC). If this
	   property is set to "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".

       setuid=on | off

	   Controls  whether the set-UID bit is	respected for the file system.
	   The default value is	"on".

       shareiscsi=on | off

	   Like	the "sharenfs" property, "shareiscsi" indicates	whether	a  ZFS
	   volume  is  exported	 as an iSCSI target. The acceptable values for
	   this	property are "on", "off", and "type=disk". The	default	 value
	   is "off". In	the future, other target types might be	supported. For
	   example, "tape".

	   You might want to set "shareiscsi=on" for a file system so that all
	   ZFS	volumes	 within	the file system	are shared by default. Setting
	   this	property on a file system has no direct	effect,	however.

       sharesmb=on | off | opts

	   Controls whether the	file system is shared  by  using  the  Solaris
	   CIFS	 service,  and what options are	to be used. A file system with
	   the "sharesmb" property set to "off"	is managed through traditional
	   tools such as sharemgr(1M). Otherwise, the file system is automati-
	   cally shared	and unshared with the zfs share	and zfs	 unshare  com-
	   mands.  If  the  property is	set to on, the sharemgr(1M) command is
	   invoked with	no options. Otherwise,	the  sharemgr(1M)  command  is
	   invoked with	options	equivalent to the contents of this property.

	   Because SMB shares requires a resource name,	a unique resource name
	   is constructed from the dataset name. The  constructed  name	 is  a
	   copy	 of the	dataset	name except that the characters	in the dataset
	   name, which would be	illegal	in the	resource  name,	 are  replaced
	   with	 underscore  (_)  characters. A	pseudo property	"name" is also
	   supported that allows you to	replace	the data set name with a spec-
	   ified  name.	 The specified name is then used to replace the	prefix
	   dataset in the case of inheritance. For  example,  if  the  dataset
	   data/home/john  is  set  to	name=john,  then  data/home/john has a
	   resource name of john. If a child dataset  of  data/home/john/back-
	   ups,	it has a resource name of john_backups.

	   When	SMB shares are created,	the SMB	share name appears as an entry
	   in the .zfs/shares directory. You can use the ls or	chmod  command
	   to display the share-level ACLs on the entries in this directory.

	   When	 the  sharesmb	property is changed for	a dataset, the dataset
	   and any children inheriting the property are	re-shared with the new
	   options, only if the	property was previously	set to off, or if they
	   were	shared before the property was changed.	If the new property is
	   set to off, the file	systems	are unshared.

       sharenfs=on | off | opts

	   Controls  whether  the  file	 system	 is  shared  via NFS, and what
	   options are used. A file system with	a"sharenfs" property of	 "off"
	   is	managed	  through   traditional	  tools	  such	as  share(1M),
	   unshare(1M),	and dfstab(4). Otherwise, the file system is automati-
	   cally  shared  and  unshared	with the "zfs share" and "zfs unshare"
	   commands. If	the property is	set to "on", the share(1M) command  is
	   invoked  with  no  options.	Otherwise,  the	 share(1M)  command is
	   invoked with	options	equivalent to the contents of this property.

	   When	the "sharenfs" property	is changed for a dataset, the  dataset
	   and any children inheriting the property are	re-shared with the new
	   options, only if the	property was previously	"off", or if they were
	   shared  before  the	property  was  changed.	If the new property is
	   "off", the file systems are unshared.

       snapdir=hidden |	visible

	   Controls whether the	".zfs" directory is hidden or visible  in  the
	   root	 of  the  file system as discussed in the "Snapshots" section.
	   The default value is	"hidden".

       version=1|2|current

	   The on-disk version of this file system, which  is  independent  of
	   the	pool version. This property can	only be	set to later supported
	   versions. See "zfs upgrade".

       volsize=size

	   For volumes,	specifies the logical size of the volume. By  default,
	   creating  a	volume	establishes  a	reservation of equal size. For
	   storage pools with a	version	number of 9 or higher,	a  refreserva-
	   tion	 is  set  instead.  Any	changes	to volsize are reflected in an
	   equivalent change to	the reservation	(or refreservation). The  vol-
	   size	 can  only be set to a multiple	of volblocksize, and cannot be
	   zero.

	   The reservation is kept equal to the	volume's logical size to  pre-
	   vent	 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 pro-
	   visioning")	can be created by specifying the -s option to the "zfs
	   create -V" command, or by changing the reservation after the	volume
	   has	been created. A	"sparse	volume"	is a volume where the reserva-
	   tion	is less	then the volume	size. 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 reserva-
	   tion.

       vscan=on|off

	   Controls whether regular files should be scanned for	viruses	when a
	   file	is opened and closed. In addition to enabling  this  property,
	   the	virus  scan service must also be enabled for virus scanning to
	   occur. The default value is "off".

       xattr=on	| off

	   Controls whether extended attributes	are enabled for	this file sys-
	   tem.	The default value is "on".

       zoned=on	| off

	   Controls whether the	dataset	is managed from	a non-global zone. See
	   the "Zones" section for more	 information.  The  default  value  is
	   "off".

       The  following three properties cannot be changed after the file	system
       is created, and therefore, should be set	when the file system  is  cre-
       ated.  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 sys-
       tem will	have the default values	for these properties.

       casesensitivity = sensitive | insensitive | mixed

	   Indicates whether the file name matching algorithm used by the file
	   system should be case-sensitive, case-insensitive, or allow a  com-
	   bination  of	 both  styles  of  matching. The default value for the
	   "casesensitivity" property is "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.  Currently,  case-insensitive
	   matching behavior on	a file system that supports mixed behavior  is
	   limited  to	the  Solaris CIFS server product. For more information
	   about the "mixed" value behavior, see the ZFS Administration	Guide.

       normalization =none | formD | formKCf

	   Indicates whether the file system should perform a unicode  normal-
	   ization  of	file  names  whenever two file names are compared, and
	   which normalization algorithm should	be used. File names are	always
	   stored  unmodified,	names are normalized as	part of	any comparison
	   process. If this property is	 set  to  a  legal  value  other  than
	   "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.

       utf8only	=on | off

	   Indicates whether the file system should  reject  file  names  that
	   include characters that are not present in the UTF-8	character code
	   set.	If this	property is explicitly set to "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.

   Temporary Mount Point Properties
       When  a	file  system  is  mounted, either through mount(1M) 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
	      devices		      devices/nodevices
	      exec		      exec/noexec
	      readonly		      ro/rw
	      setuid		      setuid/nosetuid
	      xattr		      xattr/noxattr

       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 val-
       ues specified on	the command line override the  values  stored  in  the
       dataset.	The -nosuid option is an alias for "nodevices,nosetuid". 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.

   User	Properties
       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,  num-
       bers,  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 "mod-
       ule: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  sug-
       gested  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  Microsys-
       tems.

       The  values of user properties are arbitrary strings, are always	inher-
       ited, and are never validated. All of  the  commands  that  operate  on
       properties  ("zfs  list",  "zfs	get",  "zfs set", etc.)	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.

   ZFS Volumes as Swap or Dump Devices
       During  an  initial installation	or a live upgrade from a UFS file sys-
       tem, a swap device and dump device are created on ZFS  volumes  in  the
       ZFS  root pool. By default, the swap area size is based on 1/2 the size
       of physical memory up to	2 Gbytes. The size of the dump device  depends
       on the kernel's requirements at installation time. Separate ZFS volumes
       must be used for	the swap area and dump devices.	Do not swap to a  file
       on a ZFS	file system. A ZFS swap	file configuration is not supported.

       If you need to change your swap area or dump device after the system is
       installed or upgraded, use the swap(1M) and  dumpadm(1M)	 commands.  If
       you  need  to change the	size of	your swap area or dump device, see the
       Solaris ZFS Administration Guide.

SUBCOMMANDS
       All subcommands that modify state are logged persistently to  the  pool
       in their	original form.

       zfs ?

	   Displays a help message.

       zfs create [-p] [-o property=value] ... filesystem

	   Creates  a  new  ZFS	 file system. The file system is automatically
	   mounted according to	the "mountpoint" property inherited  from  the
	   parent.

	   -p

	       Creates	all the	non-existing parent datasets. Datasets created
	       in this manner  are  automatically  mounted  according  to  the
	       "mountpoint" property inherited from their parent. Any property
	       specified on the	command	line using the -o option  is  ignored.
	       If  the	target	filesystem  already exists, the	operation com-
	       pletes successfully.

	   -o property=value

	       Sets the	specified property as if "zfs 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 volume

	   Creates a volume of the given size. The volume  is  exported	 as  a
	   block  device  in /dev/zvol/{dsk,rdsk}/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

	       Creates all the non-existing parent datasets. Datasets  created
	       in  this	 manner	 are  automatically  mounted  according	to the
	       "mountpoint" property inherited from their parent. Any property
	       specified  on  the command line using the -o option is ignored.
	       If the target filesystem	already	 exists,  the  operation  com-
	       pletes successfully.

	   -s

	       Creates	a  sparse volume with no reservation. See "volsize" in
	       the Native Properties section for more information about	sparse
	       volumes.

	   -o property=value

	       Sets  the specified property as if "zfs 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.

	   -b blocksize

	       Equivalent  to  "-o  volblocksize=blocksize". If	this option is
	       specified in conjunction	with "-o volblocksize",	the  resulting
	       behavior	is undefined.

       zfs destroy [-rRf] filesystem|volume|snapshot

	   Destroys  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, snapshots, clones).

	   -r

	       Recursively destroy all children. If a snapshot	is  specified,
	       destroy	all  snapshots	with this name in descendent file sys-
	       tems.

	   -R

	       Recursively destroy all dependents, including cloned file  sys-
	       tems  outside the target	hierarchy. If a	snapshot is specified,
	       destroy all snapshots with this name in	descendent  file  sys-
	       tems.

	   -f

	       Force  an  unmount  of  any file	systems	using the "unmount -f"
	       command.	This option has	 no  effect  on	 non-file  systems  or
	       unmounted file systems.

	   Extreme  care should	be taken when applying either the -r or	the -f
	   options, as they can	destroy	large portions of  a  pool  and	 cause
	   unexpected behavior for mounted file	systems	in use.

       zfs snapshot [-r] [-o property=value] ... filesystem@snapname|vol-
       ume@snapname

	   Creates a snapshot with the given name. See the "Snapshots" section
	   for details.

	   -r

	       Recursively  create snapshots of	all descendent datasets. Snap-
	       shots are taken atomically, so  that  all  recursive  snapshots
	       correspond to the same moment in	time.

	   -o property=value

	       Sets the	specified property; see	"zfs create" for details.

       zfs rollback [-rRf] snapshot

	   Roll	 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	 snap-
	   shot	 other than the	most recent one. In order to do	so, all	inter-
	   mediate snapshots must be destroyed by specifying the -r option.

	   -r

	       Recursively destroy any snapshots  more	recent	than  the  one
	       specified.

	   -R

	       Recursively  destroy  any more recent snapshots,	as well	as any
	       clones of those snapshots.

	   -f

	       Used with the -R	option to force	an unmount of any  clone  file
	       systems that are	to be destroyed.

       zfs clone [-p] [-o property=value] ... snapshot filesystem|volume

	   Creates 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

	       Creates	all the	non-existing parent datasets. Datasets created
	       in this manner  are  automatically  mounted  according  to  the
	       "mountpoint"  property inherited	from their parent. If the tar-
	       get filesystem or volume	already	 exists,  the  operation  com-
	       pletes successfully.

	   -o property=value

	       Sets the	specified property; see	"zfs create" for details.

       zfs promote clone-filesystem

	   Promotes a clone file system	to no longer be	dependent on its "ori-
	   gin"	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 snap-
	   shot	 names	of  its	 own.  The  "rename" subcommand	can be used to
	   rename any conflicting snapshots.

       zfs rename filesystem|volume|snapshot
       filesystem|volume|snapshot
       zfs rename [-p] filesystem|volume filesystem|volume

	   Renames 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

	       Creates all the non-existing parent datasets. Datasets  created
	       in  this	 manner	 are  automatically  mounted  according	to the
	       "mountpoint" property inherited from their parent.

       zfs rename -r snapshot snapshot

	   Recursively rename the snapshots of all descendent datasets.	 Snap-
	   shots are the only dataset that can be renamed recursively.

       zfs list	[-rH] [-o property[,...]] [ -t 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 abso-
	   lute	pathname or the	relative pathname. By default, all  file  sys-
	   tems	 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

	   -H

	       Used  for  scripting  mode.  Do	not print headers and separate
	       fields by a single tab instead of arbitrary whitespace.

	   -r

	       Recursively display any children	of the dataset on the  command
	       line.

	   -o property

	       A  comma-separated  list	of properties to display. The property
	       must be:

		   o	  one of the properties	described in the "Native Prop-
			  erties" section.

		   o	  a user property.

		   o	  the value "name" to display the dataset name.

		   o	  the  value "space" to	display	space usage properties
			  on file systems and volumes. This is a shortcut  for
			  "-o	 name,avail,used,usedsnap,usedds,   usedrefre-
			  serv,usedchild -t filesystem,volume".

	   -s property

	       A property to use for sorting the output	by column in ascending
	       order  based on the value of the	property. The property must be
	       one of the properties described in the "Properties" section, or
	       the  special value "name" to sort by the	dataset	name. Multiple
	       properties can be specified at one time using multiple -s prop-
	       erty  options.  Multiple	 -s options are	evaluated from left to
	       right in	decreasing order of importance.

	       The following is	a list of sorting criteria:

		   o	  Numeric types	sort in	numeric	order.

		   o	  String types sort in alphabetical order.

		   o	  Types	inappropriate for a row	sort that row  to  the
			  literal  bottom,  regardless of the specified	order-
			  ing.

		   o	  If no	sorting	options	 are  specified	 the  existing
			  behavior of "zfs list" is preserved.

	   -S property

	       Same  as	 the  -s  option,  but sorts by	property in descending
	       order.

	   -t type

	       A comma-separated list of types to display, where "type"	is one
	       of  "filesystem",  "snapshot" , "volume"	or "all". For example,
	       specifying "-t snapshot"	displays only snapshots.

       zfs set property=value filesystem|volume|snapshot ...

	   Sets	the property to	the given value	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). Properties  can-
	   not be set on snapshots.

       zfs get [-rHp] [-o field[,...] [-s source[,...] "all" | property[,...]
       filesystem|volume|snapshot ...

	   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:

		 name	   Dataset name
		  property  Property name
		  value	    Property value
		  source    Property source. Can either	be local, default,
			    temporary, inherited, or none (-).

	   All columns are displayed by	default, though	this can be controlled
	   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 or snapshot).

	   -r

	       Recursively display properties for any children.

	   -H

	       Display output in a form	more easily  parsed  by	 scripts.  Any
	       headers	are  omitted, and fields are explicitly	separated by a
	       single tab instead of an	arbitrary amount of space.

	   -o field

	       A comma-separated  list	of  columns  to	 display.  "name,prop-
	       erty,value,source" is the default value.

	   -s source

	       A  comma-separated list of sources to display. Those properties
	       coming from a source other than those in	this list are ignored.
	       Each source must	be one of the following: "local,default,inher-
	       ited,temporary,none". The default value is all sources.

	   -p

	       Display numbers in parsable (exact) values.

       zfs inherit [-r]	property filesystem|volume|snapshot ...

	   Clears the specified	property, causing it to	be inherited  from  an
	   ancestor.  If  no  ancestor	has the	property set, then the default
	   value is used. See  the  "Properties"  section  for	a  listing  of
	   default values, and details on which	properties can be inherited.

	   -r

	       Recursively inherit the given property for all children.

       zfs upgrade [-v]

	   Displays  a	list of	file systems that are not the most recent ver-
	   sion.

       zfs upgrade [-r]	[-V version] [-a | filesystem]

	   Upgrades 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	can not	be accessed on systems
	   running older versions of the software.

	   The file system version is independent of  the  pool	 version  (see
	   zpool(1M) for information on	the "zpool upgrade" command).

	   The	file system version does not have to be	upgraded when the pool
	   version is upgraded,	and vice versa.

	   -a

	       Upgrade all file	systems	on all imported	pools.

	   filesystem

	       Upgrade the specified file system.

	   -r

	       Upgrade the specified file system and all descendent file  sys-
	       tems

	   -V version

	       Upgrade	to the specified version. If the -V flag is not	speci-
	       fied, 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.

       zfs mount

	   Displays all	ZFS file systems currently mounted.

       zfs mount [-vO] [-o options] -a | filesystem

	   Mounts ZFS file systems. Invoked automatically as part of the  boot
	   process.

	   -o options

	       An optional comma-separated list	of mount options to use	tempo-
	       rarily for the duration of the mount. See the "Temporary	 Mount
	       Point Properties" section for details.

	   -O

	       Perform an overlay mount. See mount(1M) for more	information.

	   -v

	       Report mount progress.

	   -a

	       Mount  all available ZFS	file systems. Invoked automatically as
	       part of the boot	process.

	   filesystem

	       Mount the specified filesystem.

       zfs unmount [-f]	-a | filesystem|mountpoint

	   Unmounts currently mounted ZFS file systems.	Invoked	 automatically
	   as part of the shutdown process.

	   -f

	       Forcefully  unmount the file system, even if it is currently in
	       use.

	   -a

	       Unmount all available ZFS file systems.	Invoked	 automatically
	       as part of the boot process.

	   filesystem|mountpoint

	       Unmount the specified filesystem. The command can also be given
	       a path to a ZFS file system mount point on the system.

       zfs share -a | filesystem

	   Shares available ZFS	file systems.

	   -a

	       Share all available ZFS file systems. Invoked automatically  as
	       part of the boot	process.

	   filesystem

	       Share  the specified filesystem according to the	"sharenfs" and
	       "sharesmb"  properties.	File  systems  are  shared  when   the
	       "sharenfs" or "sharesmb"	property is set.

       zfs unshare -a |	filesystem|mountpoint

	   Unshares  currently	shared ZFS file	systems. This is invoked auto-
	   matically as	part of	the shutdown process.

	   -a

	       Unshare all available ZFS file systems.	Invoked	 automatically
	       as part of the boot process.

	   filesystem|mountpoint

	       Unshare the specified filesystem. The command can also be given
	       a path to a ZFS file system shared on the system.

       zfs send	[-vR] [-[iI] snapshot] snapshot

	   Creates a stream representation of the second  snapshot,  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 snapshot

	       Generate	 an  incremental stream	from the first snapshot	to the
	       second snapshot.	The incremental	source	(the  first  snapshot)
	       can  be	specified  as  the last	component of the snapshot name
	       (for example, the part after the	"@"), and it is	assumed	to  be
	       from the	same file system as the	second snapshot.

	       If  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

	       Generate	a stream package that sends all	intermediary snapshots
	       from the	first snapshot to the second  snapshot.	 For  example,
	       "-I  @a	fs@d"  is  similar  to	"-i @a fs@b; -i	@b fs@c; -i @c
	       fs@d". The incremental source snapshot may be specified as with
	       the -i option.

	   -R

	       Generate	a replication stream package, which will replicate the
	       specified filesystem, and all descendant	file  systems,	up  to
	       the  named  snapshot. When received, all	properties, snapshots,
	       descendent file systems,	and clones are preserved.

	       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 recieved, snapshots and file sys-
	       tems that do not	exist on the sending side are destroyed.

	   -v

	       Print verbose information about the stream package generated.

	   The format of the stream is evolving. No backwards compatibility is
	   guaranteed. You may not be able to receive your streams  on	future
	   versions of ZFS.

       zfs receive [-vnF] filesystem|volume|snapshot
       zfs receive [-vnF] -d filesystem

	   Creates  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 re-created, which means the  zvol  cannot  be
	   accessed during the receive operation.

	   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 option.

	   If  the argument is a snapshot name,	the specified snapshot is cre-
	   ated. If the	argument is a file system or volume name,  a  snapshot
	   with	the same name as the sent snapshot is created within the spec-
	   ified filesystem or volume. If the  -d  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,  any
	   required file systems within	the specified one are created.

	   -d

	       Use  the	name of	the sent snapshot to determine the name	of the
	       new snapshot as described in the	paragraph above.

	   -v

	       Print  verbose  information  about  the	stream	and  the  time
	       required	to perform the receive operation.

	   -n

	       Do  not actually	receive	the stream. This can be	useful in con-
	       junction	with the -v option to  verify  the  name  the  receive
	       operation would use.

	   -F

	       Force a rollback	of the file system to the most recent snapshot
	       before performing the receive operation.	If receiving an	incre-
	       mental  replication  stream (for	example, one generated by "zfs
	       send -R -[iI]"),	destroy	snapshots and file systems that	do not
	       exist on	the sending side.

       zfs allow [-ldug] "everyone"|user|group[,...] perm|@setname[,...]
       filesystem| volume
       zfs allow [-ld] -e perm|@setname[,...] filesystem|volume

	   Delegates ZFS administration	permission for	the  file  systems  to
	   non-privileged users.

	   [-ug] "everyone"|user|group[,...]

	       Specifies to whom the permissions are delegated.	Multiple enti-
	       ties can	be specified as	a comma-separated list.	If neither  of
	       the -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 options.

	   [-e]	perm|@setname[,...]

	       Specifies that the permissions be delegated to "everyone." Mul-
	       tiple permissions may be	specified as a	comma-separated	 list.
	       Permission  names  are  the same	as ZFS subcommand and property
	       names. See the property list below. Property set	 names,	 which
	       begin  with  an	"at sign" ("@")	, may be specified. See	the -s
	       form below for details.

	   [-ld] filesystem|volume

	       Specifies where the permissions are delegated.  If  neither  of
	       the  -ld	 options  are specified, or both are, then the permis-
	       sions 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	the 'mount' ability in the origin
				    file system.
	 create	      subcommand   Must	also have the 'mount' ability.
	 destroy      subcommand   Must	also have the 'mount' ability.
	 mount	      subcommand   Allows mount, unmount, and
				    create/remove zvol device links.
	 promote      subcommand   Must	also have the 'mount' ability and
				    'promote' ability in the origin file system.
	 receive      subcommand   Must	also have the 'mount' ability and
				    the	'create' ability.
	 rename	      subcommand   Must	also have the 'mount' ability and
				    the	'create' ability in the	new parent.
	 rollback     subcommand   Must	also have the 'mount' ability.
	 snapshot     subcommand   Must	also have the 'mount' ability.
	 share	      subcommand   Allows share	and unshare.
	 send	      subcommand

	 aclinherit	  property
	 aclmode	  property
	 atime		  property
	 canmount	  property
	 checksum	  property
	 compression	  property
	 copies		  property
	 devices	  property
	 exec		  property
	 mountpoint	  property
	 primarycache	  property
	 quota		  property
	 readonly	  property
	 recordsize	  property
	 reservation	  property
	 secondarycache	  property
	 setuid		  property
	 shareiscsi	  property
	 sharenfs	  property
	 snapdir	  property
	 version	  property
	 volsize	  property
	 xattr		  property
	 zoned		  property
	 userprop	  other	       Allows changing any user	property.

       zfs allow -c perm|@setname[,...]	filesystem|volume

	   Sets	 "create  time"	 permissions.  These  permissions  are granted
	   (locally) to	the creator of any newly-created descendent file  sys-
	   tem.

       zfs allow -s @setname perm|@setname[,...] filesystem|volume

	   Defines  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 nam-
	   ing	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] "everyone"|user|group[,...]	[perm|@setname[, ...]]
       filesystem|volume
       zfs unallow [-rld] -e [perm|@setname [,...]] filesystem|volume
       zfs unallow [-r]	-c [perm|@setname[,...]]
       filesystem|volume

	   Removes 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

	       Recursively  remove  the	 permissions from this file system and
	       all descendents.

       zfs unallow [-r]	-s @setname [perm|@setname[,...]]
       filesystem|volume

	   Removes permissions from a permission set. If  no  permissions  are
	   specified,  then all	permissions are	removed, thus removing the set
	   entirely.

EXAMPLES
       Example 1 Creating a ZFS	File System Hierarchy

       The following commands create a file system  named  "pool/home"	and  a
       file  system  named  "pool/home/bob". The mount point "/export/home" is
       set for the parent file system,	and  automatically  inherited  by  the
       child file system.

	 # zfs create pool/home
	 # zfs set mountpoint=/export/home pool/home
	 # zfs create pool/home/bob

       Example 2 Creating a ZFS	Snapshot

       The  following command creates a	snapshot named "yesterday". This snap-
       shot 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

       Example 3 Taking	and destroying multiple	snapshots

       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

       Example 4 Turning Off Compression

       The following commands turn compression off for all file	systems	 under
       "pool/home", but	explicitly turns it on for "pool/home/anne".

	 # zfs set compression=off pool/home
	 # zfs set compression=on pool/home/anne

       Example 5 Listing ZFS Datasets

       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(1M) for more information on pool
       properties.

	 # zfs list

	    NAME		      USED  AVAIL  REFER  MOUNTPOINT
	    pool		      450K   457G    18K  /pool
	    pool/home		      315K   457G    21K  /export/home
	    pool/home/anne	       18K   457G    18K  /export/home/anne
	    pool/home/bob	      276K   457G   276K  /export/home/bob

       Example 6 Setting a Quota on a ZFS File System

       The following command sets a quota of 50	gbytes for "pool/home/bob".

	 # zfs set quota=50G pool/home/bob

       Example 7 Listing ZFS Properties

       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	      Thu Jul 12 14:44 2007  -
	 pool/home/bob	used		      276K		     -
	 pool/home/bob	available	      50.0G		     -
	 pool/home/bob	referenced	      276K		     -
	 pool/home/bob	compressratio	      1.00x		     -
	 pool/home/bob	mounted		      yes		     -
	 pool/home/bob	quota		      50G		     local
	 pool/home/bob	reservation	      none		     default
	 pool/home/bob	recordsize	      128K		     default
	 pool/home/bob	mountpoint	      /export/home/bob	     inherited
								     from
								     pool/home
	 pool/home/bob	sharenfs	      off		     default
	 pool/home/bob	checksum	      on		     default
	 pool/home/bob	compression	      off		     default
	 pool/home/bob	atime		      on		     default
	 pool/home/bob	devices		      on		     default
	 pool/home/bob	exec		      on		     default
	 pool/home/bob	setuid		      on		     default
	 pool/home/bob	readonly	      off		     default
	 pool/home/bob	zoned		      off		     default
	 pool/home/bob	snapdir		      hidden		     default
	 pool/home/bob	aclmode		      groupmask		     default
	 pool/home/bob	aclinherit	      restricted	     default
	 pool/home/bob	canmount	      on		     default
	 pool/home/bob	shareiscsi	      off		     default
	 pool/home/bob	xattr		      on		     default
	 pool/home/bob	copies		      1			     default
	 pool/home/bob	version		      1			     -
	 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	      10M		     local
	 pool/home/bob	refreservation	      none		     default
	 pool/home/bob	primarycache	      all		     default
	 pool/home/bob	secondarycache	      a			     default
	 pool/home/bob	usedbysnapshots	      0			     -
	 pool/home/bob	usedbydataset	      18K		     -
	 pool/home/bob	usedbychildren	      0			     -
	 pool/home/bob	usedbyrefreservation  0			     -

       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 -r -s local -o name,property,value all pool/home/bob

	    NAME	     PROPERTY	   VALUE
	    pool	     compression   on
	    pool/home	     checksum	   off

       Example 8 Rolling Back a	ZFS File System

       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

       Example 9 Creating a ZFS	Clone

       The following command creates a writable	file system whose initial con-
       tents are the same as "pool/home/bob@yesterday".

	 # zfs clone pool/home/bob@yesterday pool/clone

       Example 10 Promoting a ZFS 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
	 # zfs snapshot	pool/project/production@today
	 # zfs clone pool/project/production@today pool/project/beta
	   make	changes	to /pool/project/beta and test them
	 # 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

       Example 11 Inheriting ZFS Properties

       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

       Example 12 Remotely Replicating ZFS Data

       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

       Example 13 Using	the zfs	receive	-d Option

       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 sys-
       tem "poolB/received". If	"poolB/received/fsA" does not exist, it	is  be
       created as an empty file	system.

	 # zfs send poolA/fsA/fsB@snap | \
	    ssh	host zfs receive -d poolB/received

       Example 14 Setting User Properties

       The  following  example	sets the user defined "com.example:department"
       property	for a dataset.

	 # zfs set com.example:department=12345	tank/accounting

       Example 15 Creating a ZFS Volume	as a iSCSI Target Device

       The following example shows how to create a ZFS volume as an iSCSI tar-
       get.

	 # zfs create -V 2g pool/volumes/vol1
	  # zfs	set shareiscsi=on pool/volumes/vol1
	  # iscsitadm list target
	  Target: pool/volumes/vol1
	  iSCSI	Name:
	  iqn.1986-03.com.sun:02:7b4b02a6-3277-eb1b-e686-a24762c52a8c
	  Connections: 0

       After the iSCSI target is created, set up the iSCSI initiator. For more
       information about the Solaris iSCSI initiator, see the Solaris Adminis-
       tration Guide: Devices and File Systems.

       Example 16 Performing a Rolling Snapshot

       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@yesterday @2daysago
	 # zfs rename -r pool/users@today @yesterday
	 # zfs snapshot	-r pool/users@today

       Example 17 Setting sharenfs Property Options on a ZFS File System

       The following commands show how to set "sharenfs" property  options  to
       enable  rw  access  for a set of	IP addresses and to enable root	access
       for system neo on the tank/home file system.

	 # zfs set sharenfs='rw=@123.123.0.0/16,root=neo' tank/home

       If you are using	DNS for	host name resolution, specify the fully	quali-
       fied hostname.

       Example 18 Delegating ZFS Administration	Permissions on a ZFS Dataset

       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
	 -------------------------------------------------------------
	 Local+Descendent permissions on (tank/cindys)
		   user	cindys create,destroy,mount,snapshot
	 -------------------------------------------------------------

       Because	the  tank/cindys  mount	 point	permission  is	set  to	755 by
       default,	user cindys  will  be  unable  to  mount  file	systems	 under
       tank/cindys.  Set  an  ACL  similar  to the following syntax to provide
       mount point access:

	 # chmod A+user:cindys:add_subdirectory:allow /tank/cindys

       Example 19 Delegating Create Time Permissions on	a ZFS Dataset

       The following example shows how to grant	anyone in the group  staff  to
       create  file  systems in	tank/users. This syntax	also allows staff mem-
       bers 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
	 -------------------------------------------------------------
	 Create	time permissions on (tank/users)
		   create,destroy
	 Local+Descendent permissions on (tank/users)
		   group staff create,mount
	 -------------------------------------------------------------

       Example 20 Defining and Granting	a Permission Set on a ZFS Dataset

       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 dis-
       played.

	 # zfs allow -s	@pset create,destroy,snapshot,mount tank/users
	 # zfs allow staff @pset tank/users
	 # zfs allow tank/users
	 -------------------------------------------------------------
	 Permission sets on (tank/users)
		 @pset create,destroy,mount,snapshot
	 Create	time permissions on (tank/users)
		 create,destroy
	 Local+Descendent permissions on (tank/users)
		 group staff @pset,create,mount
	 -------------------------------------------------------------

       Example 21 Delegating Property Permissions on a ZFS Dataset

       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
	 -------------------------------------------------------------
	 Local+Descendent permissions on (users/home)
		 user cindys quota,reservation
	 -------------------------------------------------------------
	 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

       Example 22 Removing ZFS Delegated Permissions on	a ZFS Dataset

       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
	 -------------------------------------------------------------
	 Permission sets on (tank/users)
		 @pset create,destroy,mount,snapshot
	 Create	time permissions on (tank/users)
		 create,destroy
	 Local+Descendent permissions on (tank/users)
		 group staff @pset,create,mount
	 -------------------------------------------------------------

EXIT STATUS
       The following exit values are returned:

       0

	   Successful completion.

       1

	   An error occurred.

       2

	   Invalid command line	options	were specified.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Availability		     |SUNWzfsu			   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |Committed			   |
       +-----------------------------+-----------------------------+

SEE ALSO
       gzip(1),	  ssh(1),  mount(1M),  share(1M),  sharemgr(1M),  unshare(1M),
       zonecfg(1M),  zpool(1M),	 chmod(2),  stat(2),   fsync(3c),   dfstab(4),
       attributes(5)

       For information about using the ZFS web-based management	tool and other
       ZFS features, see the Solaris ZFS Administration	Guide.

SunOS 5.11			  14 Feb 2009			       zfs(1M)

NAME | SYNOPSIS | DESCRIPTION | SUBCOMMANDS | EXAMPLES | EXIT STATUS | ATTRIBUTES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=zfs&manpath=FreeBSD+8.1-RELEASE>

home | help