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

FreeBSD Manual Pages

  
 
  

home | help
ZPOOLPROPS(7)		Miscellaneous Information Manual	 ZPOOLPROPS(7)

NAME
       zpoolprops -- properties	of ZFS storage pools

DESCRIPTION
       Each  pool  has several properties associated with it.  Some properties
       are read-only statistics	while others are configurable and  change  the
       behavior	of the pool.

       User  properties	 have no effect	on ZFS behavior.  Use them to annotate
       pools in	a way that is meaningful in your environment.  For more	infor-
       mation about user properties, see the "User Properties" section.

       The following are read-only properties:

       allocated	  Amount  of  storage  used  within  the  pool.	   See
			  fragmentation	and free for more information.

       available	  The  amount of free space available in the pool, ad-
			  justed for raidz  parity  overhead.	The  available
			  property is calculated as:

			  usable - used

			  See usable, used, and	free for more information.

       bcloneratio	  The  ratio of	the total amount of storage that would
			  be required to store all the cloned  blocks  without
			  cloning to the actual	storage	used.  The bcloneratio
			  property is calculated as:

			  ((bclonesaved	+ bcloneused) *	100) / bcloneused

       bclonesaved	  The  amount  of additional storage that would	be re-
			  quired if block cloning was not used.

       bcloneused	  The amount of	storage	used by	cloned blocks.

       capacity		  Percentage of	pool space used.   This	 property  can
			  also	be  referred  to by its	shortened column name,
			  cap.

       dedupcached	  Total	size  of  the  deduplication  table  currently
			  loaded into the ARC.	See zpool-prefetch(8).

       dedup_table_size	  Total	on-disk	size of	the deduplication table.

       dedupratio	  The  ratio of	the total amount of storage that would
			  be required to store	all  the  deduplicated	blocks
			  without  deduplication  to  the actual storage used.
			  The dedupratio property is calculated	as:

			  ((dedupsaved + dedupused) * 100) / dedupused

       dedupsaved	  The amount of	additional storage that	would  be  re-
			  quired  if  deduplication was	not used.  This	repre-
			  sents	the space saved	by deduplication.

       dedupused	  The amount of	storage	used by	 deduplicated  blocks.
			  This	is  the	actual physical	space occupied on disk
			  after	deduplication.

       expandsize	  Amount of uninitialized space	within the pool	or de-
			  vice that can	be used	to increase the	total capacity
			  of the pool.	On whole-disk vdevs, this is the space
			  beyond the end of the	GPT typically occurring	when a
			  LUN is dynamically expanded or a disk	replaced  with
			  a larger one.	 On partition vdevs, this is the space
			  appended  to the partition after it was added	to the
			  pool	most likely  by	 resizing  it  in-place.   The
			  space	can be claimed for the pool by bringing	it on-
			  line with autoexpand=on or using zpool online	-e.

       fragmentation	  The  amount  of  fragmentation  in the pool.	As the
			  amount of space allocated increases, it becomes more
			  difficult to locate free space.  This	may result  in
			  lower	 write performance compared to pools with more
			  unfragmented free space.

       free		  The amount of	free space available in	the pool.   By
			  contrast,  the  zfs(8)  available property describes
			  how much new data can	be  written  to	 ZFS  filesys-
			  tems/volumes.	 The zpool free	property is not	gener-
			  ally	useful	for  this purpose, and can be substan-
			  tially more than the zfs available space.  This dis-
			  crepancy is due to several factors, including	 raidz
			  parity;  zfs reservation, quota, refreservation, and
			  refquota  properties;	 and  space   set   aside   by
			  spa_slop_shift (see zfs(4) for more information).

       freeing		  After	 a  file  system or snapshot is	destroyed, the
			  space	it was using is	returned to the	pool asynchro-
			  nously.  freeing is the amount of space remaining to
			  be reclaimed.	 Over time freeing will	decrease while
			  free increases.

       guid		  A unique identifier for the pool.

       health		  The current health of	the pool.  Health can  be  one
			  of  ONLINE,  DEGRADED,  FAULTED,  OFFLINE,  REMOVED,
			  UNAVAIL.

       last_scrubbed_txg  Indicates the	transaction group (TXG)	 up  to	 which
			  the  most recent scrub operation has checked and re-
			  paired the dataset.  This provides insight into  the
			  data	integrity  status  of their pool at a specific
			  point	in  time.   zpool-scrub(8)  can	 utilize  this
			  property  to	scan  only data	that has changed since
			  the last scrub completed, when given	the  -C	 flag.
			  This	property is not	updated	when performing	an er-
			  ror scrub with the -e	flag.

       leaked		  Space	not released while freeing due to  corruption,
			  now permanently leaked into the pool.

       load_guid	  A  unique  identifier	for the	pool.  Unlike the guid
			  property, this identifier is generated every time we
			  load the pool	(i.e.  does  not  persist  across  im-
			  ports/exports)  and  never changes while the pool is
			  loaded (even if a reguid operation takes place).

       size		  Total	size of	the storage pool.

       unsupported@guid	  Information about unsupported	features that are  en-
			  abled	 on  the  pool.	 See zpool-features(7) for de-
			  tails.

       usable		  Estimate of total storage pool  size,	 adjusted  for
			  raidz	 parity	 overhead.   The  adjustment assumes a
			  fixed	128KiB record size to compute a	data-to-parity
			  ratio.  usable is a  heuristic  for  allocation  and
			  should not be	interpreted as an exact	measure	of us-
			  able space.

       used		  Estimate  of	storage	 used within the storage pool,
			  adjusted for raidz parity overhead.  The  adjustment
			  assumes  a  fixed  128KiB  record  size to compute a
			  data-to-parity ratio.	 used is a heuristic for allo-
			  cation and should not	be  interpreted	 as  an	 exact
			  measure of used space.

       The  space  usage  properties report actual physical space available to
       the storage pool.  The physical space can be different from  the	 total
       amount  of  space  that	any  contained datasets	can actually use.  The
       amount of space used in a raidz configuration depends on	the character-
       istics of the data being	written.  In addition, ZFS reserves some space
       for internal accounting that the	zfs(8) command takes into account, but
       the zpoolprops command does not.	 For non-full pools  of	 a  reasonable
       size,  these  effects  should  be invisible.  For small pools, or pools
       that are	close to being completely full,	these discrepancies may	become
       more noticeable.

       The following properties	are read-only metrics for allocation classes:

       class_dedup_allocated,	class_dedup_available,	 class_dedup_capacity,
       class_dedup_expandsize,	 class_dedup_fragmentation,  class_dedup_free,
       class_dedup_size, class_dedup_usable, class_dedup_used
	     Space usage properties of the pool's dedup	metaslab allocator
	     class.

       class_elog_allocated,	class_elog_available,	  class_elog_capacity,
       class_elog_expandsize,	 class_elog_fragmentation,    class_elog_free,
       class_elog_size,	class_elog_usable, class_elog_used
	     Space usage properties of the pool's embedded_log metaslab	allo-
	     cator class.

       class_log_allocated,	 class_log_available,	   class_log_capacity,
       class_log_expandsize,	  class_log_fragmentation,     class_log_free,
       class_log_size, class_log_usable, class_log_used
	     Space usage properties of the pool's log metaslab allocator
	     class.

       class_normal_allocated, class_normal_available,	class_normal_capacity,
       class_normal_expandsize,	class_normal_fragmentation, class_normal_free,
       class_normal_size, class_normal_usable, class_normal_used
	     Space usage properties of the pool's normal metaslab allocator
	     class.

       class_special_allocated,			      class_special_available,
       class_special_capacity,			     class_special_expandsize,
       class_special_fragmentation,   class_special_free,  class_special_size,
       class_special_usable, class_special_used
	     Space usage properties of the pool's special metaslab allocator
	     class.

       class_special_elog_allocated,		 class_special_elog_available,
       class_special_elog_capacity,		class_special_elog_expandsize,
       class_special_elog_fragmentation,	      class_special_elog_free,
       class_special_elog_size,			    class_special_elog_usable,
       class_special_elog_used
	     Space usage properties of the pool's special_embedded_log
	     metaslab allocator	class.

       Each allocation class is	described by these values:

       allocated      Amount of	storage	used within the	allocation class.

       available      Estimate of  free	 space	available  in  the  allocation
		      class,  adjusted for raidz parity	overhead.  The adjust-
		      ment assumes a fixed 128KiB record  size	to  compute  a
		      data-to-parity  ratio.  available	is a heuristic for al-
		      location and should not be interpreted as	an exact  mea-
		      sure  of usable space.  Actual usable space depends on a
		      variety of factors such as dataset record	size and  com-
		      pression.

       capacity	      Percentage of allocation class space used.

       expandsize     Amount  of  uninitialized	 space	within	the allocation
		      class that can be	used to	increase the capacity  of  the
		      allocator.  See the pool-wide expandsize property.

       fragmentation  The amount of free space fragmentation in	the allocation
		      class.  See the pool-wide	fragmentation property.

       free	      The  amount  of  free  space available in	the allocation
		      class.  This value is not	adjusted for factors  such  as
		      dataset  record size, compression, or raidz parity over-
		      head.  See the pool-wide free property.

       size	      Total size of the	allocation class.

       usable	      Estimate of total	allocation class  size,	 adjusted  for
		      raidz  parity  overhead.	The adjustment assumes a fixed
		      128KiB record size to compute  a	data-to-parity	ratio.
		      usable  is  a heuristic for allocation and should	not be
		      interpreted as an	exact measure of usable	space.

       used	      Estimate of storage used within  the  allocation	class,
		      adjusted	for raidz parity overhead.  The	adjustment as-
		      sumes a fixed 128KiB record size to compute  a  data-to-
		      parity  ratio.   used  is	a heuristic for	allocation and
		      should not be interpreted	as an exact  measure  of  used
		      space.

       The following property can be set at creation time and import time:

       altroot
	       Alternate  root directory.  If set, this	directory is prepended
	       to any mount points within the pool.  This can be used when ex-
	       amining an unknown  pool	 where	the  mount  points  cannot  be
	       trusted,	or in an alternate boot	environment, where the typical
	       paths are not valid.  altroot is	not a persistent property.  It
	       is valid	only while the system is up.  Setting altroot defaults
	       to using	cachefile=none,	though this may	be overridden using an
	       explicit	setting.

       The following property can be set only at import	time:

       readonly=on|off
	       If  set	to  on,	 the  pool will	be imported in read-only mode.
	       This property can also be referred to by	its  shortened	column
	       name, rdonly.

       The  following  properties can be set at	creation time and import time,
       and later changed with the zpool	set command:

       ashift=ashift
	       Pool sector size	exponent, to the power of  2  (internally  re-
	       ferred  to  as  ashift).	  Values  from 9 to 16,	inclusive, are
	       valid; also, the	value 0	(the default) means to auto-detect us-
	       ing the kernel's	block layer and	a ZFS internal exception list.
	       I/O operations will be aligned to  the  specified  size	bound-
	       aries.  Additionally, the minimum (disk)	write size will	be set
	       to  the	specified size,	so this	represents a space/performance
	       trade-off.  For	optimal	 performance,  the  pool  sector  size
	       should  be  greater than	or equal to the	sector size of the un-
	       derlying	disks.	The typical case for setting this property  is
	       when performance	is important and the underlying	disks use 4KiB
	       sectors	but  report  512B sectors to the OS (for compatibility
	       reasons); in that case, set ashift=12 (which is 1<<12 =	4096).
	       When  set,  this	 property is used as the default hint value in
	       subsequent vdev operations (add,	attach and replace).  Changing
	       this value will not modify any existing vdev, not even on  disk
	       replacement; however it can be used, for	instance, to replace a
	       dying  512B sectors disk	with a newer 4KiB sectors device: this
	       will probably result in bad performance but at  the  same  time
	       could prevent loss of data.

       autoexpand=on|off
	       Controls	 automatic  pool  expansion when the underlying	LUN is
	       grown.  If set to on, the pool will be resized according	to the
	       size of the expanded device.  If	the device is part of a	mirror
	       or raidz	then all devices within	that mirror/raidz  group  must
	       be expanded before the new space	is made	available to the pool.
	       The  default  behavior  is  off.	 This property can also	be re-
	       ferred to by its	shortened column name, expand.

       autoreplace=on|off
	       Controls	automatic device replacement.  If set to  off,	device
	       replacement must	be initiated by	the administrator by using the
	       zpool  replace command.	If set to on, any new device, found in
	       the same	physical location as a device that previously belonged
	       to the pool, is automatically formatted and replaced.  The  de-
	       fault  behavior	is off.	 This property can also	be referred to
	       by its shortened	column name, replace.  Autoreplace can also be
	       used with virtual disks (like device mapper) provided that  you
	       use the /dev/disk/by-vdev paths setup by	vdev_id.conf.  See the
	       vdev_id(8)  manual  page	for more details.  Autoreplace and au-
	       toonline	require	the ZFS	Event Daemon be	 configured  and  run-
	       ning.  See the zed(8) manual page for more details.

       autotrim=on|off
	       When  set  to on	space which has	been recently freed, and is no
	       longer allocated	by the pool,  will  be	periodically  trimmed.
	       This  allows  block device vdevs	which support BLKDISCARD, such
	       as SSDs,	or file	vdevs on which the underlying file system sup-
	       ports hole-punching, to reclaim	unused	blocks.	  The  default
	       value for this property is off.

	       Automatic  TRIM	does  not  immediately	reclaim	blocks after a
	       free.  Instead, it will optimistically delay  allowing  smaller
	       ranges to be aggregated into a few larger ones.	These can then
	       be  issued  more	efficiently to the storage.  TRIM on L2ARC de-
	       vices is	enabled	by setting l2arc_trim_ahead > 0.

	       Be aware	that automatic trimming	of recently freed data	blocks
	       can  put	 significant stress on the underlying storage devices.
	       This will vary depending	of how well the	specific  device  han-
	       dles  these commands.  For lower-end devices it is often	possi-
	       ble to achieve most of the benefits of  automatic  trimming  by
	       running an on-demand (manual) TRIM periodically using the zpool
	       trim command.

       bootfs=(unset)|pool[/dataset]
	       Identifies  the	default	 bootable  dataset  for	the root pool.
	       This property is	expected to be set mainly by the  installation
	       and   upgrade   programs.   Not	all  Linux  distribution  boot
	       processes use the bootfs	property.

       cachefile=path|none
	       Controls	the  location  of  where  the  pool  configuration  is
	       cached.	 Discovering  all  pools  on system startup requires a
	       cached copy of the configuration	data that  is  stored  on  the
	       root  file  system.   All pools in this cache are automatically
	       imported	when the system	boots.	Some environments, such	as in-
	       stall and clustering, need to cache this	information in a  dif-
	       ferent  location	 so that pools are not automatically imported.
	       Setting this property caches the	pool configuration in  a  dif-
	       ferent  location	 that  can later be imported with zpool	import
	       -c.  Setting it to the value none creates a temporary pool that
	       is never	cached,	and the	"" (empty string) uses the default lo-
	       cation.

	       Multiple	pools can share	the same cache file.  Because the ker-
	       nel destroys and	recreates this file when pools are  added  and
	       removed,	 care  should  be taken	when attempting	to access this
	       file.  When the last pool using a cachefile is exported or  de-
	       stroyed,	the file will be empty.

       comment=text
	       A  text	string	consisting  of printable ASCII characters that
	       will be stored such that	it is available	even if	the  pool  be-
	       comes  faulted.	An administrator can provide additional	infor-
	       mation about a pool using this property.

       compatibility=off|legacy|file[,file]
	       Specifies that the pool maintain	 compatibility	with  specific
	       feature sets.  When set to off (or unset) compatibility is dis-
	       abled (all features may be enabled); when set to	legacy no fea-
	       tures  may  be  enabled.	 When set to a comma-separated list of
	       filenames (each filename	may either be  an  absolute  path,  or
	       relative		to	   /etc/zfs/compatibility.d	    or
	       /usr/share/zfs/compatibility.d) the lists of requested features
	       are read	from those files, separated by whitespace and/or  com-
	       mas.  Only features present in all files	may be enabled.

	       See zpool-features(7), zpool-create(8) and zpool-upgrade(8) for
	       more  information  on  the  operation  of compatibility feature
	       sets.

       dedup_table_quota=number|none|auto
	       This property sets a limit on the on-disk size  of  the	pool's
	       dedup table.  Entries will not be added to the dedup table once
	       this  size  is reached; if a dedup table	already	exists,	and is
	       larger than this	size, they will	not be removed as part of set-
	       ting this property.  Existing entries  will  still  have	 their
	       reference counts	updated.

	       The  actual  size  limit	of the table may be above or below the
	       quota, depending	on the actual  on-disk	size  of  the  entries
	       (which  may  be	approximated  for  purposes of calculating the
	       quota).	That is, setting a quota size of 1M may	result in  the
	       maximum	size  being  slightly  below,  or slightly above, that
	       value.  Set to 'none' to	disable.  In automatic mode, which  is
	       the  default, the size of a dedicated dedup vdev	is used	as the
	       quota limit.

	       The dedup_table_quota property works for	both legacy  and  fast
	       dedup tables.

       dedupditto=number
	       This property is	deprecated and no longer has any effect.

       delegation=on|off
	       Controls	 whether a non-privileged user is granted access based
	       on the dataset permissions defined on the dataset.  See	zfs(8)
	       for more	information on ZFS delegated administration.

       failmode=wait|continue|panic
	       Controls	 the system behavior in	the event of catastrophic pool
	       failure.	 This condition	is typically a result  of  a  loss  of
	       connectivity  to	 the underlying	storage	device(s) or a failure
	       of all devices within the pool.	The behavior of	such an	 event
	       is determined as	follows:

	       wait	 Blocks	 all  I/O access until the device connectivity
			 is recovered and the errors are  cleared  with	 zpool
			 clear.	 This is the default behavior.

	       continue	 Returns  EIO to any new write I/O requests but	allows
			 reads to any of the remaining healthy	devices.   Any
			 write	requests that have yet to be committed to disk
			 would be blocked.

	       panic	 Prints	out a message to the console and  generates  a
			 system	crash dump.

       feature@feature_name=enabled
	       The   value   of	  this	 property  is  the  current  state  of
	       feature_name.  The only valid value when	setting	this  property
	       is  enabled which moves feature_name to the enabled state.  See
	       zpool-features(7) for details on	feature	states.

       listsnapshots=on|off
	       Controls	whether	information about  snapshots  associated  with
	       this pool is output when	zfs list is run	without	the -t option.
	       The  default  value is off.  This property can also be referred
	       to by its shortened name, listsnaps.

       multihost=on|off
	       Controls	whether	a pool activity	check should be	performed dur-
	       ing zpool import.  When a pool is determined to	be  active  it
	       cannot  be imported, even with the -f option.  This property is
	       intended	to be used in failover configurations  where  multiple
	       hosts have access to a pool on shared storage.

	       Multihost provides protection on	import only.  It does not pro-
	       tect against an individual device being used in multiple	pools,
	       regardless of the type of vdev.	See the	discussion under zpool
	       create.

	       When  this  property is on, periodic writes to storage occur to
	       show the	pool is	in use.	  See  zfs_multihost_interval  in  the
	       zfs(4) manual page.  In order to	enable this property each host
	       must  set  a  unique  hostid.   See  genhostid(1) zgenhostid(8)
	       spl(4) for additional details.  The default value is off.

       version=version
	       The current on-disk version of  the  pool.   This  can  be  in-
	       creased,	but never decreased.  The preferred method of updating
	       pools  is  with the zpool upgrade command, though this property
	       can be used when	a specific version  is	needed	for  backwards
	       compatibility.	Once  feature flags are	enabled	on a pool this
	       property	will no	longer have a value.

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

       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
       module:property,	but this namespace is not enforced by ZFS.  User prop-
       erty names can be at most 255 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.

       The values of user properties are arbitrary strings and are never vali-
       dated.  All of the commands that	operate	 on  properties	 (zpool	 list,
       zpool  get, zpool set, and so forth) can	be used	to manipulate both na-
       tive properties and user	properties.  Use zpool set name=  to  clear  a
       user property.  Property	values are limited to 8192 bytes.

FreeBSD	16.0 CURRENT		 March 2, 2026			 ZPOOLPROPS(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zpoolprops&sektion=7&manpath=FreeBSD+16.0-CURRENT>

home | help