xref: /freebsd/sys/contrib/openzfs/man/man7/zfsprops.7 (revision b64c5a0ace59af62eff52bfe110a521dc73c937b)
1.\"
2.\" CDDL HEADER START
3.\"
4.\" The contents of this file are subject to the terms of the
5.\" Common Development and Distribution License (the "License").
6.\" You may not use this file except in compliance with the License.
7.\"
8.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9.\" or https://opensource.org/licenses/CDDL-1.0.
10.\" See the License for the specific language governing permissions
11.\" and limitations under the License.
12.\"
13.\" When distributing Covered Code, include this CDDL HEADER in each
14.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15.\" If applicable, add the following below this CDDL HEADER, with the
16.\" fields enclosed by brackets "[]" replaced with your own identifying
17.\" information: Portions Copyright [yyyy] [name of copyright owner]
18.\"
19.\" CDDL HEADER END
20.\"
21.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
22.\" Copyright 2011 Joshua M. Clulow <josh@sysmgr.org>
23.\" Copyright (c) 2011, 2019 by Delphix. All rights reserved.
24.\" Copyright (c) 2011, Pawel Jakub Dawidek <pjd@FreeBSD.org>
25.\" Copyright (c) 2012, Glen Barber <gjb@FreeBSD.org>
26.\" Copyright (c) 2012, Bryan Drewery <bdrewery@FreeBSD.org>
27.\" Copyright (c) 2013, Steven Hartland <smh@FreeBSD.org>
28.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
29.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
30.\" Copyright (c) 2014 by Adam Stevko. All rights reserved.
31.\" Copyright (c) 2014 Integros [integros.com]
32.\" Copyright (c) 2016 Nexenta Systems, Inc. All Rights Reserved.
33.\" Copyright (c) 2014, Xin LI <delphij@FreeBSD.org>
34.\" Copyright (c) 2014-2015, The FreeBSD Foundation, All Rights Reserved.
35.\" Copyright 2019 Richard Laager. All rights reserved.
36.\" Copyright 2018 Nexenta Systems, Inc.
37.\" Copyright 2019 Joyent, Inc.
38.\" Copyright (c) 2019, Kjeld Schouten-Lebbing
39.\" Copyright (c) 2022 Hewlett Packard Enterprise Development LP.
40.\"
41.Dd June 29, 2024
42.Dt ZFSPROPS 7
43.Os
44.
45.Sh NAME
46.Nm zfsprops
47.Nd native and user-defined properties of ZFS datasets
48.
49.Sh DESCRIPTION
50Properties are divided into two types, native properties and user-defined
51.Po or
52.Qq user
53.Pc
54properties.
55Native properties either export internal statistics or control ZFS behavior.
56In addition, native properties are either editable or read-only.
57User properties have no effect on ZFS behavior, but you can use them to annotate
58datasets in a way that is meaningful in your environment.
59For more information about user properties, see the
60.Sx User Properties
61section, below.
62.
63.Ss Native Properties
64Every dataset has a set of properties that export statistics about the dataset
65as well as control various behaviors.
66Properties are inherited from the parent unless overridden by the child.
67Some properties apply only to certain types of datasets
68.Pq file systems, volumes, or snapshots .
69.Pp
70The values of numeric properties can be specified using human-readable suffixes
71.Po for example,
72.Sy k ,
73.Sy KB ,
74.Sy M ,
75.Sy Gb ,
76and so forth, up to
77.Sy Z
78for zettabyte
79.Pc .
80The following are all valid
81.Pq and equal
82specifications:
83.Li 1536M ,
84.Li 1.5g ,
85.Li 1.50GB .
86.Pp
87The values of non-numeric properties are case sensitive and must be lowercase,
88except for
89.Sy mountpoint ,
90.Sy sharenfs ,
91and
92.Sy sharesmb .
93.Pp
94The following native properties consist of read-only statistics about the
95dataset.
96These properties can be neither set, nor inherited.
97Native properties apply to all dataset types unless otherwise noted.
98.Bl -tag -width "usedbyrefreservation"
99.It Sy available
100The amount of space available to the dataset and all its children, assuming that
101there is no other activity in the pool.
102Because space is shared within a pool, availability can be limited by any number
103of factors, including physical pool size, quotas, reservations, or other
104datasets within the pool.
105.Pp
106This property can also be referred to by its shortened column name,
107.Sy avail .
108.It Sy compressratio
109For non-snapshots, the compression ratio achieved for the
110.Sy used
111space of this dataset, expressed as a multiplier.
112The
113.Sy used
114property includes descendant datasets, and, for clones, does not include the
115space shared with the origin snapshot.
116For snapshots, the
117.Sy compressratio
118is the same as the
119.Sy refcompressratio
120property.
121Compression can be turned on by running:
122.Nm zfs Cm set Sy compression Ns = Ns Sy on Ar dataset .
123The default value is
124.Sy off .
125.It Sy createtxg
126The transaction group (txg) in which the dataset was created.
127Bookmarks have the same
128.Sy createtxg
129as the snapshot they are initially tied to.
130This property is suitable for ordering a list of snapshots,
131e.g. for incremental send and receive.
132.It Sy creation
133The time this dataset was created.
134.It Sy clones
135For snapshots, this property is a comma-separated list of filesystems or volumes
136which are clones of this snapshot.
137The clones'
138.Sy origin
139property is this snapshot.
140If the
141.Sy clones
142property is not empty, then this snapshot can not be destroyed
143.Po even with the
144.Fl r
145or
146.Fl f
147options
148.Pc .
149The roles of origin and clone can be swapped by promoting the clone with the
150.Nm zfs Cm promote
151command.
152.It Sy defer_destroy
153This property is
154.Sy on
155if the snapshot has been marked for deferred destroy by using the
156.Nm zfs Cm destroy Fl d
157command.
158Otherwise, the property is
159.Sy off .
160.It Sy encryptionroot
161For encrypted datasets, indicates where the dataset is currently inheriting its
162encryption key from.
163Loading or unloading a key for the
164.Sy encryptionroot
165will implicitly load / unload the key for any inheriting datasets (see
166.Nm zfs Cm load-key
167and
168.Nm zfs Cm unload-key
169for details).
170Clones will always share an
171encryption key with their origin.
172See the
173.Sx Encryption
174section of
175.Xr zfs-load-key 8
176for details.
177.It Sy filesystem_count
178The total number of filesystems and volumes that exist under this location in
179the dataset tree.
180This value is only available when a
181.Sy filesystem_limit
182has been set somewhere in the tree under which the dataset resides.
183.It Sy keystatus
184Indicates if an encryption key is currently loaded into ZFS.
185The possible values are
186.Sy none ,
187.Sy available ,
188and
189.Sy unavailable .
190See
191.Nm zfs Cm load-key
192and
193.Nm zfs Cm unload-key .
194.It Sy guid
195The 64 bit GUID of this dataset or bookmark which does not change over its
196entire lifetime.
197When a snapshot is sent to another pool, the received snapshot has the same
198GUID.
199Thus, the
200.Sy guid
201is suitable to identify a snapshot across pools.
202.It Sy logicalreferenced
203The amount of space that is
204.Qq logically
205accessible by this dataset.
206See the
207.Sy referenced
208property.
209The logical space ignores the effect of the
210.Sy compression
211and
212.Sy copies
213properties, giving a quantity closer to the amount of data that applications
214see.
215However, it does include space consumed by metadata.
216.Pp
217This property can also be referred to by its shortened column name,
218.Sy lrefer .
219.It Sy logicalused
220The amount of space that is
221.Qq logically
222consumed by this dataset and all its descendents.
223See the
224.Sy used
225property.
226The logical space ignores the effect of the
227.Sy compression
228and
229.Sy copies
230properties, giving a quantity closer to the amount of data that applications
231see.
232However, it does include space consumed by metadata.
233.Pp
234This property can also be referred to by its shortened column name,
235.Sy lused .
236.It Sy mounted
237For file systems, indicates whether the file system is currently mounted.
238This property can be either
239.Sy yes
240or
241.Sy no .
242.It Sy objsetid
243A unique identifier for this dataset within the pool.
244Unlike the dataset's
245.Sy guid , No the Sy objsetid
246of a dataset is not transferred to other pools when the snapshot is copied
247with a send/receive operation.
248The
249.Sy objsetid
250can be reused (for a new dataset) after the dataset is deleted.
251.It Sy origin
252For cloned file systems or volumes, the snapshot from which the clone was
253created.
254See also the
255.Sy clones
256property.
257.It Sy receive_resume_token
258For filesystems or volumes which have saved partially-completed state from
259.Nm zfs Cm receive Fl s ,
260this opaque token can be provided to
261.Nm zfs Cm send Fl t
262to resume and complete the
263.Nm zfs Cm receive .
264.It Sy redact_snaps
265For bookmarks, this is the list of snapshot guids the bookmark contains a
266redaction
267list for.
268For snapshots, this is the list of snapshot guids the snapshot is redacted with
269respect to.
270.It Sy referenced
271The amount of data that is accessible by this dataset, which may or may not be
272shared with other datasets in the pool.
273When a snapshot or clone is created, it initially references the same amount of
274space as the file system or snapshot it was created from, since its contents are
275identical.
276.Pp
277This property can also be referred to by its shortened column name,
278.Sy refer .
279.It Sy refcompressratio
280The compression ratio achieved for the
281.Sy referenced
282space of this dataset, expressed as a multiplier.
283See also the
284.Sy compressratio
285property.
286.It Sy snapshot_count
287The total number of snapshots that exist under this location in the dataset
288tree.
289This value is only available when a
290.Sy snapshot_limit
291has been set somewhere in the tree under which the dataset resides.
292.It Sy type
293The type of dataset:
294.Sy filesystem ,
295.Sy volume ,
296.Sy snapshot ,
297or
298.Sy bookmark .
299.It Sy used
300The amount of space consumed by this dataset and all its descendents.
301This is the value that is checked against this dataset's quota and reservation.
302The space used does not include this dataset's reservation, but does take into
303account the reservations of any descendent datasets.
304The amount of space that a dataset consumes from its parent, as well as the
305amount of space that is freed if this dataset is recursively destroyed, is the
306greater of its space used and its reservation.
307.Pp
308The used space of a snapshot
309.Po see the
310.Sx Snapshots
311section of
312.Xr zfsconcepts 7
313.Pc
314is space that is referenced exclusively by this snapshot.
315If this snapshot is destroyed, the amount of
316.Sy used
317space will be freed.
318Space that is shared by multiple snapshots isn't accounted for in this metric.
319When a snapshot is destroyed, space that was previously shared with this
320snapshot can become unique to snapshots adjacent to it, thus changing the used
321space of those snapshots.
322The used space of the latest snapshot can also be affected by changes in the
323file system.
324Note that the
325.Sy used
326space of a snapshot is a subset of the
327.Sy written
328space of the snapshot.
329.Pp
330The amount of space used, available, or referenced does not take into account
331pending changes.
332Pending changes are generally accounted for within a few seconds.
333Committing a change to a disk using
334.Xr fsync 2
335or
336.Sy O_SYNC
337does not necessarily guarantee that the space usage information is updated
338immediately.
339.It Sy usedby*
340The
341.Sy usedby*
342properties decompose the
343.Sy used
344properties into the various reasons that space is used.
345Specifically,
346.Sy used No =
347.Sy usedbychildren No +
348.Sy usedbydataset No +
349.Sy usedbyrefreservation No +
350.Sy usedbysnapshots .
351These properties are only available for datasets created on
352.Nm zpool
353.Qo version 13 Qc
354pools.
355.It Sy usedbychildren
356The amount of space used by children of this dataset, which would be freed if
357all the dataset's children were destroyed.
358.It Sy usedbydataset
359The amount of space used by this dataset itself, which would be freed if the
360dataset were destroyed
361.Po after first removing any
362.Sy refreservation
363and destroying any necessary snapshots or descendents
364.Pc .
365.It Sy usedbyrefreservation
366The amount of space used by a
367.Sy refreservation
368set on this dataset, which would be freed if the
369.Sy refreservation
370was removed.
371.It Sy usedbysnapshots
372The amount of space consumed by snapshots of this dataset.
373In particular, it is the amount of space that would be freed if all of this
374dataset's snapshots were destroyed.
375Note that this is not simply the sum of the snapshots'
376.Sy used
377properties because space can be shared by multiple snapshots.
378.It Sy userused Ns @ Ns Ar user
379The amount of space consumed by the specified user in this dataset.
380Space is charged to the owner of each file, as displayed by
381.Nm ls Fl l .
382The amount of space charged is displayed by
383.Nm du No and Nm ls Fl s .
384See the
385.Nm zfs Cm userspace
386command for more information.
387.Pp
388Unprivileged users can access only their own space usage.
389The root user, or a user who has been granted the
390.Sy userused
391privilege with
392.Nm zfs Cm allow ,
393can access everyone's usage.
394.Pp
395The
396.Sy userused Ns @ Ns Ar …
397properties are not displayed by
398.Nm zfs Cm get Sy all .
399The user's name must be appended after the
400.Sy @
401symbol, using one of the following forms:
402.Bl -bullet -compact -offset 4n
403.It
404POSIX name
405.Pq Qq joe
406.It
407POSIX numeric ID
408.Pq Qq 789
409.It
410SID name
411.Pq Qq joe.smith@mydomain
412.It
413SID numeric ID
414.Pq Qq S-1-123-456-789
415.El
416.Pp
417Files created on Linux always have POSIX owners.
418.It Sy userobjused Ns @ Ns Ar user
419The
420.Sy userobjused
421property is similar to
422.Sy userused
423but instead it counts the number of objects consumed by a user.
424This property counts all objects allocated on behalf of the user,
425it may differ from the results of system tools such as
426.Nm df Fl i .
427.Pp
428When the property
429.Sy xattr Ns = Ns Sy on
430is set on a file system additional objects will be created per-file to store
431extended attributes.
432These additional objects are reflected in the
433.Sy userobjused
434value and are counted against the user's
435.Sy userobjquota .
436When a file system is configured to use
437.Sy xattr Ns = Ns Sy sa
438no additional internal objects are normally required.
439.It Sy userrefs
440This property is set to the number of user holds on this snapshot.
441User holds are set by using the
442.Nm zfs Cm hold
443command.
444.It Sy groupused Ns @ Ns Ar group
445The amount of space consumed by the specified group in this dataset.
446Space is charged to the group of each file, as displayed by
447.Nm ls Fl l .
448See the
449.Sy userused Ns @ Ns Ar user
450property for more information.
451.Pp
452Unprivileged users can only access their own groups' space usage.
453The root user, or a user who has been granted the
454.Sy groupused
455privilege with
456.Nm zfs Cm allow ,
457can access all groups' usage.
458.It Sy groupobjused Ns @ Ns Ar group
459The number of objects consumed by the specified group in this dataset.
460Multiple objects may be charged to the group for each file when extended
461attributes are in use.
462See the
463.Sy userobjused Ns @ Ns Ar user
464property for more information.
465.Pp
466Unprivileged users can only access their own groups' space usage.
467The root user, or a user who has been granted the
468.Sy groupobjused
469privilege with
470.Nm zfs Cm allow ,
471can access all groups' usage.
472.It Sy projectused Ns @ Ns Ar project
473The amount of space consumed by the specified project in this dataset.
474Project is identified via the project identifier (ID) that is object-based
475numeral attribute.
476An object can inherit the project ID from its parent object (if the
477parent has the flag of inherit project ID that can be set and changed via
478.Nm chattr Fl /+P
479or
480.Nm zfs project Fl s )
481when being created.
482The privileged user can set and change object's project
483ID via
484.Nm chattr Fl p
485or
486.Nm zfs project Fl s
487anytime.
488Space is charged to the project of each file, as displayed by
489.Nm lsattr Fl p
490or
491.Nm zfs project .
492See the
493.Sy userused Ns @ Ns Ar user
494property for more information.
495.Pp
496The root user, or a user who has been granted the
497.Sy projectused
498privilege with
499.Nm zfs allow ,
500can access all projects' usage.
501.It Sy projectobjused Ns @ Ns Ar project
502The
503.Sy projectobjused
504is similar to
505.Sy projectused
506but instead it counts the number of objects consumed by project.
507When the property
508.Sy xattr Ns = Ns Sy on
509is set on a fileset, ZFS will create additional objects per-file to store
510extended attributes.
511These additional objects are reflected in the
512.Sy projectobjused
513value and are counted against the project's
514.Sy projectobjquota .
515When a filesystem is configured to use
516.Sy xattr Ns = Ns Sy sa
517no additional internal objects are required.
518See the
519.Sy userobjused Ns @ Ns Ar user
520property for more information.
521.Pp
522The root user, or a user who has been granted the
523.Sy projectobjused
524privilege with
525.Nm zfs allow ,
526can access all projects' objects usage.
527.It Sy snapshots_changed
528Provides a mechanism to quickly determine whether snapshot list has
529changed without having to mount a dataset or iterate the snapshot list.
530Specifies the time at which a snapshot for a dataset was last
531created or deleted.
532.Pp
533This allows us to be more efficient how often we query snapshots.
534The property is persistent across mount and unmount operations only if the
535.Sy extensible_dataset
536feature is enabled.
537.It Sy volblocksize
538For volumes, specifies the block size of the volume.
539The
540.Sy blocksize
541cannot be changed once the volume has been written, so it should be set at
542volume creation time.
543The default
544.Sy blocksize
545for volumes is 16 Kbytes.
546Any power of 2 from 512 bytes to 128 Kbytes is valid.
547.Pp
548This property can also be referred to by its shortened column name,
549.Sy volblock .
550.It Sy written
551The amount of space
552.Sy referenced
553by this dataset, that was written since the previous snapshot
554.Pq i.e. that is not referenced by the previous snapshot .
555.It Sy written Ns @ Ns Ar snapshot
556The amount of
557.Sy referenced
558space written to this dataset since the specified snapshot.
559This is the space that is referenced by this dataset but was not referenced by
560the specified snapshot.
561.Pp
562The
563.Ar snapshot
564may be specified as a short snapshot name
565.Pq just the part after the Sy @ ,
566in which case it will be interpreted as a snapshot in the same filesystem as
567this dataset.
568The
569.Ar snapshot
570may be a full snapshot name
571.Pq Ar filesystem Ns @ Ns Ar snapshot ,
572which for clones may be a snapshot in the origin's filesystem
573.Pq or the origin of the origin's filesystem, etc.
574.El
575.Pp
576The following native properties can be used to change the behavior of a ZFS
577dataset.
578.Bl -tag -width ""
579.It Xo
580.Sy aclinherit Ns = Ns Sy discard Ns | Ns Sy noallow Ns | Ns
581.Sy restricted Ns | Ns Sy passthrough Ns | Ns Sy passthrough-x
582.Xc
583Controls how ACEs are inherited when files and directories are created.
584.Bl -tag -compact -offset 4n -width "passthrough-x"
585.It Sy discard
586does not inherit any ACEs.
587.It Sy noallow
588only inherits inheritable ACEs that specify
589.Qq deny
590permissions.
591.It Sy restricted
592default, removes the
593.Sy write_acl
594and
595.Sy write_owner
596permissions when the ACE is inherited.
597.It Sy passthrough
598inherits all inheritable ACEs without any modifications.
599.It Sy passthrough-x
600same meaning as
601.Sy passthrough ,
602except that the
603.Sy owner@ , group@ , No and Sy everyone@
604ACEs inherit the execute permission only if the file creation mode also requests
605the execute bit.
606.El
607.Pp
608When the property value is set to
609.Sy passthrough ,
610files are created with a mode determined by the inheritable ACEs.
611If no inheritable ACEs exist that affect the mode, then the mode is set in
612accordance to the requested mode from the application.
613.Pp
614The
615.Sy aclinherit
616property does not apply to POSIX ACLs.
617.It Xo
618.Sy aclmode Ns = Ns Sy discard Ns | Ns Sy groupmask Ns | Ns
619.Sy passthrough Ns | Ns Sy restricted Ns
620.Xc
621Controls how an ACL is modified during chmod(2) and how inherited ACEs
622are modified by the file creation mode:
623.Bl -tag -compact -offset 4n -width "passthrough"
624.It Sy discard
625default, deletes all
626.Sy ACEs
627except for those representing
628the mode of the file or directory requested by
629.Xr chmod 2 .
630.It Sy groupmask
631reduces permissions granted in all
632.Sy ALLOW
633entries found in the
634.Sy ACL
635such that they are no greater than the group permissions specified by
636.Xr chmod 2 .
637.It Sy passthrough
638indicates that no changes are made to the ACL other than creating or updating
639the necessary ACL entries to represent the new mode of the file or directory.
640.It Sy restricted
641will cause the
642.Xr chmod 2
643operation to return an error when used on any file or directory which has
644a non-trivial ACL whose entries can not be represented by a mode.
645.Xr chmod 2
646is required to change the set user ID, set group ID, or sticky bits on a file
647or directory, as they do not have equivalent ACL entries.
648In order to use
649.Xr chmod 2
650on a file or directory with a non-trivial ACL when
651.Sy aclmode
652is set to
653.Sy restricted ,
654you must first remove all ACL entries which do not represent the current mode.
655.El
656.It Sy acltype Ns = Ns Sy off Ns | Ns Sy nfsv4 Ns | Ns Sy posix
657Controls whether ACLs are enabled and if so what type of ACL to use.
658When this property is set to a type of ACL not supported by the current
659platform, the behavior is the same as if it were set to
660.Sy off .
661.Bl -tag -compact -offset 4n -width "posixacl"
662.It Sy off
663default on Linux, when a file system has the
664.Sy acltype
665property set to off then ACLs are disabled.
666.It Sy noacl
667an alias for
668.Sy off
669.It Sy nfsv4
670default on
671.Fx ,
672indicates that NFSv4-style ZFS ACLs should be used.
673These ACLs can be managed with the
674.Xr getfacl 1
675and
676.Xr setfacl 1 .
677The
678.Sy nfsv4
679ZFS ACL type is not yet supported on Linux.
680.It Sy posix
681indicates POSIX ACLs should be used.
682POSIX ACLs are specific to Linux and are not functional on other platforms.
683POSIX ACLs are stored as an extended
684attribute and therefore will not overwrite any existing NFSv4 ACLs which
685may be set.
686.It Sy posixacl
687an alias for
688.Sy posix
689.El
690.Pp
691To obtain the best performance when setting
692.Sy posix
693users are strongly encouraged to set the
694.Sy xattr Ns = Ns Sy sa
695property.
696This will result in the POSIX ACL being stored more efficiently on disk.
697But as a consequence, all new extended attributes will only be
698accessible from OpenZFS implementations which support the
699.Sy xattr Ns = Ns Sy sa
700property.
701See the
702.Sy xattr
703property for more details.
704.It Sy atime Ns = Ns Sy on Ns | Ns Sy off
705Controls whether the access time for files is updated when they are read.
706Turning this property off avoids producing write traffic when reading files and
707can result in significant performance gains, though it might confuse mailers
708and other similar utilities.
709The values
710.Sy on
711and
712.Sy off
713are equivalent to the
714.Sy atime
715and
716.Sy noatime
717mount options.
718The default value is
719.Sy on .
720See also
721.Sy relatime
722below.
723.It Sy canmount Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy noauto
724If this property is set to
725.Sy off ,
726the file system cannot be mounted, and is ignored by
727.Nm zfs Cm mount Fl a .
728Setting this property to
729.Sy off
730is similar to setting the
731.Sy mountpoint
732property to
733.Sy none ,
734except that the dataset still has a normal
735.Sy mountpoint
736property, which can be inherited.
737Setting this property to
738.Sy off
739allows datasets to be used solely as a mechanism to inherit properties.
740One example of setting
741.Sy canmount Ns = Ns Sy off
742is to have two datasets with the same
743.Sy mountpoint ,
744so that the children of both datasets appear in the same directory, but might
745have different inherited characteristics.
746.Pp
747When set to
748.Sy noauto ,
749a dataset can only be mounted and unmounted explicitly.
750The dataset is not mounted automatically when the dataset is created or
751imported, nor is it mounted by the
752.Nm zfs Cm mount Fl a
753command or unmounted by the
754.Nm zfs Cm unmount Fl a
755command.
756.Pp
757This property is not inherited.
758.It Xo
759.Sy checksum Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy fletcher2 Ns | Ns
760.Sy fletcher4 Ns | Ns Sy sha256 Ns | Ns Sy noparity Ns | Ns
761.Sy sha512 Ns | Ns Sy skein Ns | Ns Sy edonr Ns | Ns Sy blake3
762.Xc
763Controls the checksum used to verify data integrity.
764The default value is
765.Sy on ,
766which automatically selects an appropriate algorithm
767.Po currently,
768.Sy fletcher4 ,
769but this may change in future releases
770.Pc .
771The value
772.Sy off
773disables integrity checking on user data.
774The value
775.Sy noparity
776not only disables integrity but also disables maintaining parity for user data.
777This setting is used internally by a dump device residing on a RAID-Z pool and
778should not be used by any other dataset.
779Disabling checksums is
780.Em NOT
781a recommended practice.
782.Pp
783The
784.Sy sha512 ,
785.Sy skein ,
786.Sy edonr ,
787and
788.Sy blake3
789checksum algorithms require enabling the appropriate features on the pool.
790.Pp
791Please see
792.Xr zpool-features 7
793for more information on these algorithms.
794.Pp
795Changing this property affects only newly-written data.
796.It Xo
797.Sy compression Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy gzip Ns | Ns
798.Sy gzip- Ns Ar N Ns | Ns Sy lz4 Ns | Ns Sy lzjb Ns | Ns Sy zle Ns | Ns Sy zstd Ns | Ns
799.Sy zstd- Ns Ar N Ns | Ns Sy zstd-fast Ns | Ns Sy zstd-fast- Ns Ar N
800.Xc
801Controls the compression algorithm used for this dataset.
802.Pp
803When set to
804.Sy on
805(the default), indicates that the current default compression algorithm should
806be used.
807The default balances compression and decompression speed, with compression ratio
808and is expected to work well on a wide variety of workloads.
809Unlike all other settings for this property,
810.Sy on
811does not select a fixed compression type.
812As new compression algorithms are added to ZFS and enabled on a pool, the
813default compression algorithm may change.
814The current default compression algorithm is either
815.Sy lzjb
816or, if the
817.Sy lz4_compress
818feature is enabled,
819.Sy lz4 .
820.Pp
821The
822.Sy lz4
823compression algorithm is a high-performance replacement for the
824.Sy lzjb
825algorithm.
826It features significantly faster compression and decompression, as well as a
827moderately higher compression ratio than
828.Sy lzjb ,
829but can only be used on pools with the
830.Sy lz4_compress
831feature set to
832.Sy enabled .
833See
834.Xr zpool-features 7
835for details on ZFS feature flags and the
836.Sy lz4_compress
837feature.
838.Pp
839The
840.Sy lzjb
841compression algorithm is optimized for performance while providing decent data
842compression.
843.Pp
844The
845.Sy gzip
846compression algorithm uses the same compression as the
847.Xr gzip 1
848command.
849You can specify the
850.Sy gzip
851level by using the value
852.Sy gzip- Ns Ar N ,
853where
854.Ar N
855is an integer from 1
856.Pq fastest
857to 9
858.Pq best compression ratio .
859Currently,
860.Sy gzip
861is equivalent to
862.Sy gzip-6
863.Po which is also the default for
864.Xr gzip 1
865.Pc .
866.Pp
867The
868.Sy zstd
869compression algorithm provides both high compression ratios and good
870performance.
871You can specify the
872.Sy zstd
873level by using the value
874.Sy zstd- Ns Ar N ,
875where
876.Ar N
877is an integer from 1
878.Pq fastest
879to 19
880.Pq best compression ratio .
881.Sy zstd
882is equivalent to
883.Sy zstd-3 .
884.Pp
885Faster speeds at the cost of the compression ratio can be requested by
886setting a negative
887.Sy zstd
888level.
889This is done using
890.Sy zstd-fast- Ns Ar N ,
891where
892.Ar N
893is an integer in
894.Bq Sy 1 Ns - Ns Sy 10 , 20 , 30 , No … , Sy 100 , 500 , 1000
895which maps to a negative
896.Sy zstd
897level.
898The lower the level the faster the compression \(em
899.Sy 1000
900provides the fastest compression and lowest compression ratio.
901.Sy zstd-fast
902is equivalent to
903.Sy zstd-fast- Ns Ar 1 .
904.Pp
905The
906.Sy zle
907compression algorithm compresses runs of zeros.
908.Pp
909This property can also be referred to by its shortened column name
910.Sy compress .
911Changing this property affects only newly-written data.
912.Pp
913When any setting except
914.Sy off
915is selected, compression will explicitly check for blocks consisting of only
916zeroes (the NUL byte).
917When a zero-filled block is detected, it is stored as
918a hole and not compressed using the indicated compression algorithm.
919.Pp
920All blocks are allocated as a whole number of sectors
921.Pq chunks of 2^ Ns Sy ashift No bytes , e.g . Sy 512B No or Sy 4KB .
922Compression may result in a non-sector-aligned size, which will be rounded up
923to a whole number of sectors.
924If compression saves less than one whole sector,
925the block will be stored uncompressed.
926Therefore, blocks whose logical size is a small number of sectors will
927experience less compression
928(e.g. for
929.Sy recordsize Ns = Ns Sy 16K
930with
931.Sy 4K
932sectors, which have 4 sectors per block,
933compression needs to save at least 25% to actually save space on disk).
934.Pp
935There is
936.Sy 12.5%
937default compression threshold in addition to sector rounding.
938.It Xo
939.Sy context Ns = Ns Sy none Ns | Ns
940.Ar SELinux-User : Ns Ar SELinux-Role : Ns Ar SELinux-Type : Ns Ar Sensitivity-Level
941.Xc
942This flag sets the SELinux context for all files in the file system under
943a mount point for that file system.
944See
945.Xr selinux 8
946for more information.
947.It Xo
948.Sy fscontext Ns = Ns Sy none Ns | Ns
949.Ar SELinux-User : Ns Ar SELinux-Role : Ns Ar SELinux-Type : Ns Ar Sensitivity-Level
950.Xc
951This flag sets the SELinux context for the file system file system being
952mounted.
953See
954.Xr selinux 8
955for more information.
956.It Xo
957.Sy defcontext Ns = Ns Sy none Ns | Ns
958.Ar SELinux-User : Ns Ar SELinux-Role : Ns Ar SELinux-Type : Ns Ar Sensitivity-Level
959.Xc
960This flag sets the SELinux default context for unlabeled files.
961See
962.Xr selinux 8
963for more information.
964.It Xo
965.Sy rootcontext Ns = Ns Sy none Ns | Ns
966.Ar SELinux-User : Ns Ar SELinux-Role : Ns Ar SELinux-Type : Ns Ar Sensitivity-Level
967.Xc
968This flag sets the SELinux context for the root inode of the file system.
969See
970.Xr selinux 8
971for more information.
972.It Sy copies Ns = Ns Sy 1 Ns | Ns Sy 2 Ns | Ns Sy 3
973Controls the number of copies of data stored for this dataset.
974These copies are in addition to any redundancy provided by the pool, for
975example, mirroring or RAID-Z.
976The copies are stored on different disks, if possible.
977The space used by multiple copies is charged to the associated file and dataset,
978changing the
979.Sy used
980property and counting against quotas and reservations.
981.Pp
982Changing this property only affects newly-written data.
983Therefore, set this property at file system creation time by using the
984.Fl o Sy copies Ns = Ns Ar N
985option.
986.Pp
987Remember that ZFS will not import a pool with a missing top-level vdev.
988Do
989.Em NOT
990create, for example a two-disk striped pool and set
991.Sy copies Ns = Ns Ar 2
992on some datasets thinking you have setup redundancy for them.
993When a disk fails you will not be able to import the pool
994and will have lost all of your data.
995.Pp
996Encrypted datasets may not have
997.Sy copies Ns = Ns Ar 3
998since the implementation stores some encryption metadata where the third copy
999would normally be.
1000.It Sy devices Ns = Ns Sy on Ns | Ns Sy off
1001Controls whether device nodes can be opened on this file system.
1002The default value is
1003.Sy on .
1004The values
1005.Sy on
1006and
1007.Sy off
1008are equivalent to the
1009.Sy dev
1010and
1011.Sy nodev
1012mount options.
1013.It Xo
1014.Sy dedup Ns = Ns Sy off Ns | Ns Sy on Ns | Ns Sy verify Ns | Ns
1015.Sy sha256 Ns Oo , Ns Sy verify Oc Ns | Ns Sy sha512 Ns Oo , Ns Sy verify Oc Ns | Ns Sy skein Ns Oo , Ns Sy verify Oc Ns | Ns
1016.Sy edonr , Ns Sy verify Ns | Ns Sy blake3 Ns Oo , Ns Sy verify Oc Ns
1017.Xc
1018Configures deduplication for a dataset.
1019The default value is
1020.Sy off .
1021The default deduplication checksum is
1022.Sy sha256
1023(this may change in the future).
1024When
1025.Sy dedup
1026is enabled, the checksum defined here overrides the
1027.Sy checksum
1028property.
1029Setting the value to
1030.Sy verify
1031has the same effect as the setting
1032.Sy sha256 , Ns Sy verify .
1033.Pp
1034If set to
1035.Sy verify ,
1036ZFS will do a byte-to-byte comparison in case of two blocks having the same
1037signature to make sure the block contents are identical.
1038Specifying
1039.Sy verify
1040is mandatory for the
1041.Sy edonr
1042algorithm.
1043.Pp
1044Unless necessary, deduplication should
1045.Em not
1046be enabled on a system.
1047See the
1048.Sx Deduplication
1049section of
1050.Xr zfsconcepts 7 .
1051.It Xo
1052.Sy direct Ns = Ns Sy disabled Ns | Ns Sy standard Ns | Ns Sy always
1053.Xc
1054Controls the behavior of Direct I/O requests
1055.Pq e.g. Dv O_DIRECT .
1056The
1057.Sy standard
1058behavior for Direct I/O requests is to bypass the ARC when possible.
1059These requests will not be cached and performance will be limited by the
1060raw speed of the underlying disks
1061.Pq Dv this is the default .
1062.Sy always
1063causes every properly aligned read or write to be treated as a direct request.
1064.Sy disabled
1065causes the O_DIRECT flag to be silently ignored and all direct requests will
1066be handled by the ARC.
1067This is the default behavior for OpenZFS 2.2 and prior releases.
1068.Pp
1069Bypassing the ARC requires that a direct request be correctly aligned.
1070For write requests the starting offset and size of the request must be
1071.Sy recordsize Ns
1072-aligned, if not then the unaligned portion of the request will be silently
1073redirected through the ARC.
1074For read requests there is no
1075.Sy recordsize
1076alignment restriction on either the starting offset or size.
1077All direct requests must use a page-aligned memory buffer and the request
1078size must be a multiple of the page size or an error is returned.
1079.Pp
1080Concurrently mixing buffered and direct requests to overlapping regions of
1081a file can decrease performance.
1082However, the resulting file will always be coherent.
1083For example, a direct read after a buffered write will return the data
1084from the buffered write.
1085Furthermore, if an application uses
1086.Xr mmap 2
1087based file access then in order to maintain coherency all direct requests
1088are converted to buffered requests while the file is mapped.
1089Currently Direct I/O is not supported with zvols.
1090If dedup is enabled on a dataset, Direct I/O writes will not check for
1091deduplication.
1092Deduplication and Direct I/O writes are currently incompatible.
1093.It Xo
1094.Sy dnodesize Ns = Ns Sy legacy Ns | Ns Sy auto Ns | Ns Sy 1k Ns | Ns
1095.Sy 2k Ns | Ns Sy 4k Ns | Ns Sy 8k Ns | Ns Sy 16k
1096.Xc
1097Specifies a compatibility mode or literal value for the size of dnodes in the
1098file system.
1099The default value is
1100.Sy legacy .
1101Setting this property to a value other than
1102.Sy legacy No requires the Sy large_dnode No pool feature to be enabled .
1103.Pp
1104Consider setting
1105.Sy dnodesize
1106to
1107.Sy auto
1108if the dataset uses the
1109.Sy xattr Ns = Ns Sy sa
1110property setting and the workload makes heavy use of extended attributes.
1111This
1112may be applicable to SELinux-enabled systems, Lustre servers, and Samba
1113servers, for example.
1114Literal values are supported for cases where the optimal
1115size is known in advance and for performance testing.
1116.Pp
1117Leave
1118.Sy dnodesize
1119set to
1120.Sy legacy
1121if you need to receive a send stream of this dataset on a pool that doesn't
1122enable the
1123.Sy large_dnode
1124feature, or if you need to import this pool on a system that doesn't support the
1125.Sy large_dnode No feature .
1126.Pp
1127This property can also be referred to by its shortened column name,
1128.Sy dnsize .
1129.It Xo
1130.Sy encryption Ns = Ns Sy off Ns | Ns Sy on Ns | Ns Sy aes-128-ccm Ns | Ns
1131.Sy aes-192-ccm Ns | Ns Sy aes-256-ccm Ns | Ns Sy aes-128-gcm Ns | Ns
1132.Sy aes-192-gcm Ns | Ns Sy aes-256-gcm
1133.Xc
1134Controls the encryption cipher suite (block cipher, key length, and mode) used
1135for this dataset.
1136Requires the
1137.Sy encryption
1138feature to be enabled on the pool.
1139Requires a
1140.Sy keyformat
1141to be set at dataset creation time.
1142.Pp
1143Selecting
1144.Sy encryption Ns = Ns Sy on
1145when creating a dataset indicates that the default encryption suite will be
1146selected, which is currently
1147.Sy aes-256-gcm .
1148In order to provide consistent data protection, encryption must be specified at
1149dataset creation time and it cannot be changed afterwards.
1150.Pp
1151For more details and caveats about encryption see the
1152.Sx Encryption
1153section of
1154.Xr zfs-load-key 8 .
1155.It Sy keyformat Ns = Ns Sy raw Ns | Ns Sy hex Ns | Ns Sy passphrase
1156Controls what format the user's encryption key will be provided as.
1157This property is only set when the dataset is encrypted.
1158.Pp
1159Raw keys and hex keys must be 32 bytes long (regardless of the chosen
1160encryption suite) and must be randomly generated.
1161A raw key can be generated with the following command:
1162.Dl # Nm dd Sy if=/dev/urandom bs=32 count=1 Sy of= Ns Pa /path/to/output/key
1163.Pp
1164Passphrases must be between 8 and 512 bytes long and will be processed through
1165PBKDF2 before being used (see the
1166.Sy pbkdf2iters
1167property).
1168Even though the encryption suite cannot be changed after dataset creation,
1169the keyformat can be with
1170.Nm zfs Cm change-key .
1171.It Xo
1172.Sy keylocation Ns = Ns Sy prompt Ns | Ns Sy file:// Ns Ar /absolute/file/path Ns | Ns Sy https:// Ns Ar address Ns | Ns Sy http:// Ns Ar address
1173.Xc
1174Controls where the user's encryption key will be loaded from by default for
1175commands such as
1176.Nm zfs Cm load-key
1177and
1178.Nm zfs Cm mount Fl l .
1179This property is only set for encrypted datasets which are encryption roots.
1180If unspecified, the default is
1181.Sy prompt .
1182.Pp
1183Even though the encryption suite cannot be changed after dataset creation, the
1184keylocation can be with either
1185.Nm zfs Cm set
1186or
1187.Nm zfs Cm change-key .
1188If
1189.Sy prompt
1190is selected ZFS will ask for the key at the command prompt when it is required
1191to access the encrypted data (see
1192.Nm zfs Cm load-key
1193for details).
1194This setting will also allow the key to be passed in via the standard input
1195stream,
1196but users should be careful not to place keys which should be kept secret on
1197the command line.
1198If a file URI is selected, the key will be loaded from the
1199specified absolute file path.
1200If an HTTPS or HTTP URL is selected, it will be GETted using
1201.Xr fetch 3 ,
1202libcurl, or nothing, depending on compile-time configuration and run-time
1203availability.
1204The
1205.Sy SSL_CA_CERT_FILE
1206environment variable can be set to set the location
1207of the concatenated certificate store.
1208The
1209.Sy SSL_CA_CERT_PATH
1210environment variable can be set to override the location
1211of the directory containing the certificate authority bundle.
1212The
1213.Sy SSL_CLIENT_CERT_FILE
1214and
1215.Sy SSL_CLIENT_KEY_FILE
1216environment variables can be set to configure the path
1217to the client certificate and its key.
1218.It Sy pbkdf2iters Ns = Ns Ar iterations
1219Controls the number of PBKDF2 iterations that a
1220.Sy passphrase
1221encryption key should be run through when processing it into an encryption key.
1222This property is only defined when encryption is enabled and a keyformat of
1223.Sy passphrase
1224is selected.
1225The goal of PBKDF2 is to significantly increase the
1226computational difficulty needed to brute force a user's passphrase.
1227This is accomplished by forcing the attacker to run each passphrase through a
1228computationally expensive hashing function many times before they arrive at the
1229resulting key.
1230A user who actually knows the passphrase will only have to pay this cost once.
1231As CPUs become better at processing, this number should be
1232raised to ensure that a brute force attack is still not possible.
1233The current default is
1234.Sy 350000
1235and the minimum is
1236.Sy 100000 .
1237This property may be changed with
1238.Nm zfs Cm change-key .
1239.It Sy exec Ns = Ns Sy on Ns | Ns Sy off
1240Controls whether processes can be executed from within this file system.
1241The default value is
1242.Sy on .
1243The values
1244.Sy on
1245and
1246.Sy off
1247are equivalent to the
1248.Sy exec
1249and
1250.Sy noexec
1251mount options.
1252.It Sy volthreading Ns = Ns Sy on Ns | Ns Sy off
1253Controls internal zvol threading.
1254The value
1255.Sy off
1256disables zvol threading, and zvol relies on application threads.
1257The default value is
1258.Sy on ,
1259which enables threading within a zvol.
1260Please note that this property will be overridden by
1261.Sy zvol_request_sync
1262module parameter.
1263This property is only applicable to Linux.
1264.It Sy filesystem_limit Ns = Ns Ar count Ns | Ns Sy none
1265Limits the number of filesystems and volumes that can exist under this point in
1266the dataset tree.
1267The limit is not enforced if the user is allowed to change the limit.
1268Setting a
1269.Sy filesystem_limit
1270to
1271.Sy on
1272a descendent of a filesystem that already has a
1273.Sy filesystem_limit
1274does not override the ancestor's
1275.Sy filesystem_limit ,
1276but rather imposes an additional limit.
1277This feature must be enabled to be used
1278.Po see
1279.Xr zpool-features 7
1280.Pc .
1281.It Sy special_small_blocks Ns = Ns Ar size
1282This value represents the threshold block size for including small file
1283blocks into the special allocation class.
1284Blocks smaller than or equal to this
1285value will be assigned to the special allocation class while greater blocks
1286will be assigned to the regular class.
1287Valid values are zero or a power of two from 512 up to 1048576 (1 MiB).
1288The default size is 0 which means no small file blocks
1289will be allocated in the special class.
1290.Pp
1291Before setting this property, a special class vdev must be added to the
1292pool.
1293See
1294.Xr zpoolconcepts 7
1295for more details on the special allocation class.
1296.It Sy mountpoint Ns = Ns Pa path Ns | Ns Sy none Ns | Ns Sy legacy
1297Controls the mount point used for this file system.
1298See the
1299.Sx Mount Points
1300section of
1301.Xr zfsconcepts 7
1302for more information on how this property is used.
1303.Pp
1304When the
1305.Sy mountpoint
1306property is changed for a file system, the file system and any children that
1307inherit the mount point are unmounted.
1308If the new value is
1309.Sy legacy ,
1310then they remain unmounted.
1311Otherwise, they are automatically remounted in the new location if the property
1312was previously
1313.Sy legacy
1314or
1315.Sy none .
1316In addition, any shared file systems are unshared and shared in the new
1317location.
1318.Pp
1319When the
1320.Sy mountpoint
1321property is set with
1322.Nm zfs Cm set Fl u
1323, the
1324.Sy mountpoint
1325property is updated but dataset is not mounted or unmounted and remains
1326as it was before.
1327.It Sy nbmand Ns = Ns Sy on Ns | Ns Sy off
1328Controls whether the file system should be mounted with
1329.Sy nbmand
1330.Pq Non-blocking mandatory locks .
1331Changes to this property only take effect when the file system is umounted and
1332remounted.
1333This was only supported by Linux prior to 5.15, and was buggy there,
1334and is not supported by
1335.Fx .
1336On Solaris it's used for SMB clients.
1337.It Sy overlay Ns = Ns Sy on Ns | Ns Sy off
1338Allow mounting on a busy directory or a directory which already contains
1339files or directories.
1340This is the default mount behavior for Linux and
1341.Fx
1342file systems.
1343On these platforms the property is
1344.Sy on
1345by default.
1346Set to
1347.Sy off
1348to disable overlay mounts for consistency with OpenZFS on other platforms.
1349.It Sy primarycache Ns = Ns Sy all Ns | Ns Sy none Ns | Ns Sy metadata
1350Controls what is cached in the primary cache
1351.Pq ARC .
1352If this property is set to
1353.Sy all ,
1354then both user data and metadata is cached.
1355If this property is set to
1356.Sy none ,
1357then neither user data nor metadata is cached.
1358If this property is set to
1359.Sy metadata ,
1360then only metadata is cached.
1361The default value is
1362.Sy all .
1363.It Sy quota Ns = Ns Ar size Ns | Ns Sy none
1364Limits the amount of space a dataset and its descendents can consume.
1365This property enforces a hard limit on the amount of space used.
1366This includes all space consumed by descendents, including file systems and
1367snapshots.
1368Setting a quota on a descendent of a dataset that already has a quota does not
1369override the ancestor's quota, but rather imposes an additional limit.
1370.Pp
1371Quotas cannot be set on volumes, as the
1372.Sy volsize
1373property acts as an implicit quota.
1374.It Sy snapshot_limit Ns = Ns Ar count Ns | Ns Sy none
1375Limits the number of snapshots that can be created on a dataset and its
1376descendents.
1377Setting a
1378.Sy snapshot_limit
1379on a descendent of a dataset that already has a
1380.Sy snapshot_limit
1381does not override the ancestor's
1382.Sy snapshot_limit ,
1383but rather imposes an additional limit.
1384The limit is not enforced if the user is allowed to change the limit.
1385For example, this means that recursive snapshots taken from the global zone are
1386counted against each delegated dataset within a zone.
1387This feature must be enabled to be used
1388.Po see
1389.Xr zpool-features 7
1390.Pc .
1391.It Sy userquota@ Ns Ar user Ns = Ns Ar size Ns | Ns Sy none
1392Limits the amount of space consumed by the specified user.
1393User space consumption is identified by the
1394.Sy userspace@ Ns Ar user
1395property.
1396.Pp
1397Enforcement of user quotas may be delayed by several seconds.
1398This delay means that a user might exceed their quota before the system notices
1399that they are over quota and begins to refuse additional writes with the
1400.Er EDQUOT
1401error message.
1402See the
1403.Nm zfs Cm userspace
1404command for more information.
1405.Pp
1406Unprivileged users can only access their own groups' space usage.
1407The root user, or a user who has been granted the
1408.Sy userquota
1409privilege with
1410.Nm zfs Cm allow ,
1411can get and set everyone's quota.
1412.Pp
1413This property is not available on volumes, on file systems before version 4, or
1414on pools before version 15.
1415The
1416.Sy userquota@ Ns Ar …
1417properties are not displayed by
1418.Nm zfs Cm get Sy all .
1419The user's name must be appended after the
1420.Sy @
1421symbol, using one of the following forms:
1422.Bl -bullet -compact -offset 4n
1423.It
1424POSIX name
1425.Pq Qq joe
1426.It
1427POSIX numeric ID
1428.Pq Qq 789
1429.It
1430SID name
1431.Pq Qq joe.smith@mydomain
1432.It
1433SID numeric ID
1434.Pq Qq S-1-123-456-789
1435.El
1436.Pp
1437Files created on Linux always have POSIX owners.
1438.It Sy userobjquota@ Ns Ar user Ns = Ns Ar size Ns | Ns Sy none
1439The
1440.Sy userobjquota
1441is similar to
1442.Sy userquota
1443but it limits the number of objects a user can create.
1444Please refer to
1445.Sy userobjused
1446for more information about how objects are counted.
1447.It Sy groupquota@ Ns Ar group Ns = Ns Ar size Ns | Ns Sy none
1448Limits the amount of space consumed by the specified group.
1449Group space consumption is identified by the
1450.Sy groupused@ Ns Ar group
1451property.
1452.Pp
1453Unprivileged users can access only their own groups' space usage.
1454The root user, or a user who has been granted the
1455.Sy groupquota
1456privilege with
1457.Nm zfs Cm allow ,
1458can get and set all groups' quotas.
1459.It Sy groupobjquota@ Ns Ar group Ns = Ns Ar size Ns | Ns Sy none
1460The
1461.Sy groupobjquota
1462is similar to
1463.Sy groupquota
1464but it limits number of objects a group can consume.
1465Please refer to
1466.Sy userobjused
1467for more information about how objects are counted.
1468.It Sy projectquota@ Ns Ar project Ns = Ns Ar size Ns | Ns Sy none
1469Limits the amount of space consumed by the specified project.
1470Project space consumption is identified by the
1471.Sy projectused@ Ns Ar project
1472property.
1473Please refer to
1474.Sy projectused
1475for more information about how project is identified and set/changed.
1476.Pp
1477The root user, or a user who has been granted the
1478.Sy projectquota
1479privilege with
1480.Nm zfs allow ,
1481can access all projects' quota.
1482.It Sy projectobjquota@ Ns Ar project Ns = Ns Ar size Ns | Ns Sy none
1483The
1484.Sy projectobjquota
1485is similar to
1486.Sy projectquota
1487but it limits number of objects a project can consume.
1488Please refer to
1489.Sy userobjused
1490for more information about how objects are counted.
1491.It Sy readonly Ns = Ns Sy on Ns | Ns Sy off
1492Controls whether this dataset can be modified.
1493The default value is
1494.Sy off .
1495The values
1496.Sy on
1497and
1498.Sy off
1499are equivalent to the
1500.Sy ro
1501and
1502.Sy rw
1503mount options.
1504.Pp
1505This property can also be referred to by its shortened column name,
1506.Sy rdonly .
1507.It Sy recordsize Ns = Ns Ar size
1508Specifies a suggested block size for files in the file system.
1509This property is designed solely for use with database workloads that access
1510files in fixed-size records.
1511ZFS automatically tunes block sizes according to internal algorithms optimized
1512for typical access patterns.
1513.Pp
1514For databases that create very large files but access them in small random
1515chunks, these algorithms may be suboptimal.
1516Specifying a
1517.Sy recordsize
1518greater than or equal to the record size of the database can result in
1519significant performance gains.
1520Use of this property for general purpose file systems is strongly discouraged,
1521and may adversely affect performance.
1522.Pp
1523The size specified must be a power of two greater than or equal to
1524.Ar 512 B
1525and less than or equal to
1526.Ar 128 KiB .
1527If the
1528.Sy large_blocks
1529feature is enabled on the pool, the size may be up to
1530.Ar 16 MiB .
1531See
1532.Xr zpool-features 7
1533for details on ZFS feature flags.
1534.Pp
1535However, blocks larger than
1536.Ar 1 MiB
1537can have an impact on i/o latency (e.g. tying up a spinning disk for
1538~300ms), and also potentially on the memory allocator.
1539.Pp
1540Note that maximum size is still limited by default to
1541.Ar 1 MiB
1542on x86_32, see
1543.Sy zfs_max_recordsize
1544module parameter.
1545.Pp
1546Changing the file system's
1547.Sy recordsize
1548affects only files created afterward; existing files are unaffected.
1549.Pp
1550This property can also be referred to by its shortened column name,
1551.Sy recsize .
1552.It Sy redundant_metadata Ns = Ns Sy all Ns | Ns Sy most Ns | Ns Sy some Ns | Ns Sy none
1553Controls what types of metadata are stored redundantly.
1554ZFS stores an extra copy of metadata, so that if a single block is corrupted,
1555the amount of user data lost is limited.
1556This extra copy is in addition to any redundancy provided at the pool level
1557.Pq e.g. by mirroring or RAID-Z ,
1558and is in addition to an extra copy specified by the
1559.Sy copies
1560property
1561.Pq up to a total of 3 copies .
1562For example if the pool is mirrored,
1563.Sy copies Ns = Ns 2 ,
1564and
1565.Sy redundant_metadata Ns = Ns Sy most ,
1566then ZFS stores 6 copies of most metadata, and 4 copies of data and some
1567metadata.
1568.Pp
1569When set to
1570.Sy all ,
1571ZFS stores an extra copy of all metadata.
1572If a single on-disk block is corrupt, at worst a single block of user data
1573.Po which is
1574.Sy recordsize
1575bytes long
1576.Pc
1577can be lost.
1578.Pp
1579When set to
1580.Sy most ,
1581ZFS stores an extra copy of most types of metadata.
1582This can improve performance of random writes, because less metadata must be
1583written.
1584In practice, at worst about 1000 blocks
1585.Po of
1586.Sy recordsize
1587bytes each
1588.Pc
1589of user data can be lost if a single on-disk block is corrupt.
1590The exact behavior of which metadata blocks are stored redundantly may change in
1591future releases.
1592.Pp
1593When set to
1594.Sy some ,
1595ZFS stores an extra copy of only critical metadata.
1596This can improve file create performance since less metadata
1597needs to be written.
1598If a single on-disk block is corrupt, at worst a single user file can be lost.
1599.Pp
1600When set to
1601.Sy none ,
1602ZFS does not store any copies of metadata redundantly.
1603If a single on-disk block is corrupt, an entire dataset can be lost.
1604.Pp
1605The default value is
1606.Sy all .
1607.It Sy refquota Ns = Ns Ar size Ns | Ns Sy none
1608Limits the amount of space a dataset can consume.
1609This property enforces a hard limit on the amount of space used.
1610This hard limit does not include space used by descendents, including file
1611systems and snapshots.
1612.It Sy refreservation Ns = Ns Ar size Ns | Ns Sy none Ns | Ns Sy auto
1613The minimum amount of space guaranteed to a dataset, not including its
1614descendents.
1615When the amount of space used is below this value, the dataset is treated as if
1616it were taking up the amount of space specified by
1617.Sy refreservation .
1618The
1619.Sy refreservation
1620reservation is accounted for in the parent datasets' space used, and counts
1621against the parent datasets' quotas and reservations.
1622.Pp
1623If
1624.Sy refreservation
1625is set, a snapshot is only allowed if there is enough free pool space outside of
1626this reservation to accommodate the current number of
1627.Qq referenced
1628bytes in the dataset.
1629.Pp
1630If
1631.Sy refreservation
1632is set to
1633.Sy auto ,
1634a volume is thick provisioned
1635.Po or
1636.Qq not sparse
1637.Pc .
1638.Sy refreservation Ns = Ns Sy auto
1639is only supported on volumes.
1640See
1641.Sy volsize
1642in the
1643.Sx Native Properties
1644section for more information about sparse volumes.
1645.Pp
1646This property can also be referred to by its shortened column name,
1647.Sy refreserv .
1648.It Sy relatime Ns = Ns Sy on Ns | Ns Sy off
1649Controls the manner in which the access time is updated when
1650.Sy atime Ns = Ns Sy on
1651is set.
1652Turning this property on causes the access time to be updated relative
1653to the modify or change time.
1654Access time is only updated if the previous
1655access time was earlier than the current modify or change time or if the
1656existing access time hasn't been updated within the past 24 hours.
1657The default value is
1658.Sy on .
1659The values
1660.Sy on
1661and
1662.Sy off
1663are equivalent to the
1664.Sy relatime
1665and
1666.Sy norelatime
1667mount options.
1668.It Sy reservation Ns = Ns Ar size Ns | Ns Sy none
1669The minimum amount of space guaranteed to a dataset and its descendants.
1670When the amount of space used is below this value, the dataset is treated as if
1671it were taking up the amount of space specified by its reservation.
1672Reservations are accounted for in the parent datasets' space used, and count
1673against the parent datasets' quotas and reservations.
1674.Pp
1675This property can also be referred to by its shortened column name,
1676.Sy reserv .
1677.It Sy secondarycache Ns = Ns Sy all Ns | Ns Sy none Ns | Ns Sy metadata
1678Controls what is cached in the secondary cache
1679.Pq L2ARC .
1680If this property is set to
1681.Sy all ,
1682then both user data and metadata is cached.
1683If this property is set to
1684.Sy none ,
1685then neither user data nor metadata is cached.
1686If this property is set to
1687.Sy metadata ,
1688then only metadata is cached.
1689The default value is
1690.Sy all .
1691.It Sy prefetch Ns = Ns Sy all Ns | Ns Sy none Ns | Ns Sy metadata
1692Controls what speculative prefetch does.
1693If this property is set to
1694.Sy all ,
1695then both user data and metadata are prefetched.
1696If this property is set to
1697.Sy none ,
1698then neither user data nor metadata are prefetched.
1699If this property is set to
1700.Sy metadata ,
1701then only metadata are prefetched.
1702The default value is
1703.Sy all .
1704.Pp
1705Please note that the module parameter zfs_prefetch_disable=1 can
1706be used to totally disable speculative prefetch, bypassing anything
1707this property does.
1708.It Sy setuid Ns = Ns Sy on Ns | Ns Sy off
1709Controls whether the setuid bit is respected for the file system.
1710The default value is
1711.Sy on .
1712The values
1713.Sy on
1714and
1715.Sy off
1716are equivalent to the
1717.Sy suid
1718and
1719.Sy nosuid
1720mount options.
1721.It Sy sharesmb Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Ar opts
1722Controls whether the file system is shared by using
1723.Sy Samba USERSHARES
1724and what options are to be used.
1725Otherwise, the file system is automatically shared and unshared with the
1726.Nm zfs Cm share
1727and
1728.Nm zfs Cm unshare
1729commands.
1730If the property is set to on, the
1731.Xr net 8
1732command is invoked to create a
1733.Sy USERSHARE .
1734.Pp
1735Because SMB shares requires a resource name, a unique resource name is
1736constructed from the dataset name.
1737The constructed name is a copy of the
1738dataset name except that the characters in the dataset name, which would be
1739invalid in the resource name, are replaced with underscore (_) characters.
1740Linux does not currently support additional options which might be available
1741on Solaris.
1742.Pp
1743If the
1744.Sy sharesmb
1745property is set to
1746.Sy off ,
1747the file systems are unshared.
1748.Pp
1749The share is created with the ACL (Access Control List) "Everyone:F" ("F"
1750stands for "full permissions", i.e. read and write permissions) and no guest
1751access (which means Samba must be able to authenticate a real user \(em
1752.Xr passwd 5 Ns / Ns Xr shadow 5 Ns - ,
1753LDAP- or
1754.Xr smbpasswd 5 Ns -based )
1755by default.
1756This means that any additional access control
1757(disallow specific user specific access etc) must be done on the underlying file
1758system.
1759.Pp
1760When the
1761.Sy sharesmb
1762property is updated with
1763.Nm zfs Cm set Fl u
1764, the property is set to desired value, but the operation to share, reshare
1765or unshare the the dataset is not performed.
1766.It Sy sharenfs Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Ar opts
1767Controls whether the file system is shared via NFS, and what options are to be
1768used.
1769A file system with a
1770.Sy sharenfs
1771property of
1772.Sy off
1773is managed with the
1774.Xr exportfs 8
1775command and entries in the
1776.Pa /etc/exports
1777file.
1778Otherwise, the file system is automatically shared and unshared with the
1779.Nm zfs Cm share
1780and
1781.Nm zfs Cm unshare
1782commands.
1783If the property is set to
1784.Sy on ,
1785the dataset is shared using the default options:
1786.Dl sec=sys,rw,crossmnt,no_subtree_check
1787.Pp
1788Please note that the options are comma-separated, unlike those found in
1789.Xr exports 5 .
1790This is done to negate the need for quoting, as well as to make parsing
1791with scripts easier.
1792.Pp
1793For
1794.Fx ,
1795there may be multiple sets of options separated by semicolon(s).
1796Each set of options must apply to different hosts or networks and each
1797set of options will create a separate line for
1798.Xr exports 5 .
1799Any semicolon separated option set that consists entirely of whitespace
1800will be ignored.
1801This use of semicolons is only for
1802.Fx
1803at this time.
1804.Pp
1805See
1806.Xr exports 5
1807for the meaning of the default options.
1808Otherwise, the
1809.Xr exportfs 8
1810command is invoked with options equivalent to the contents of this property.
1811.Pp
1812When the
1813.Sy sharenfs
1814property is changed for a dataset, the dataset and any children inheriting the
1815property are re-shared with the new options, only if the property was previously
1816.Sy off ,
1817or if they were shared before the property was changed.
1818If the new property is
1819.Sy off ,
1820the file systems are unshared.
1821.Pp
1822When the
1823.Sy sharenfs
1824property is updated with
1825.Nm zfs Cm set Fl u
1826, the property is set to desired value, but the operation to share, reshare
1827or unshare the the dataset is not performed.
1828.It Sy logbias Ns = Ns Sy latency Ns | Ns Sy throughput
1829Provide a hint to ZFS about handling of synchronous requests in this dataset.
1830If
1831.Sy logbias
1832is set to
1833.Sy latency
1834.Pq the default ,
1835ZFS will use pool log devices
1836.Pq if configured
1837to handle the requests at low latency.
1838If
1839.Sy logbias
1840is set to
1841.Sy throughput ,
1842ZFS will not use configured pool log devices.
1843ZFS will instead optimize synchronous operations for global pool throughput and
1844efficient use of resources.
1845.It Sy snapdev Ns = Ns Sy hidden Ns | Ns Sy visible
1846Controls whether the volume snapshot devices under
1847.Pa /dev/zvol/ Ns Aq Ar pool
1848are hidden or visible.
1849The default value is
1850.Sy hidden .
1851.It Sy snapdir Ns = Ns Sy disabled Ns | Ns Sy hidden Ns | Ns Sy visible
1852Controls whether the
1853.Pa .zfs
1854directory is disabled, hidden or visible in the root of the file system as
1855discussed in the
1856.Sx Snapshots
1857section of
1858.Xr zfsconcepts 7 .
1859The default value is
1860.Sy hidden .
1861.It Sy sync Ns = Ns Sy standard Ns | Ns Sy always Ns | Ns Sy disabled
1862Controls the behavior of synchronous requests
1863.Pq e.g. fsync, O_DSYNC .
1864.Sy standard
1865is the POSIX-specified behavior of ensuring all synchronous requests
1866are written to stable storage and all devices are flushed to ensure
1867data is not cached by device controllers
1868.Pq this is the default .
1869.Sy always
1870causes every file system transaction to be written and flushed before its
1871system call returns.
1872This has a large performance penalty.
1873.Sy disabled
1874disables synchronous requests.
1875File system transactions are only committed to stable storage periodically.
1876This option will give the highest performance.
1877However, it is very dangerous as ZFS would be ignoring the synchronous
1878transaction demands of applications such as databases or NFS.
1879Administrators should only use this option when the risks are understood.
1880.It Sy version Ns = Ns Ar N Ns | Ns Sy current
1881The on-disk version of this file system, which is independent of the pool
1882version.
1883This property can only be set to later supported versions.
1884See the
1885.Nm zfs Cm upgrade
1886command.
1887.It Sy volsize Ns = Ns Ar size
1888For volumes, specifies the logical size of the volume.
1889By default, creating a volume establishes a reservation of equal size.
1890For storage pools with a version number of 9 or higher, a
1891.Sy refreservation
1892is set instead.
1893Any changes to
1894.Sy volsize
1895are reflected in an equivalent change to the reservation
1896.Pq or Sy refreservation .
1897The
1898.Sy volsize
1899can only be set to a multiple of
1900.Sy volblocksize ,
1901and cannot be zero.
1902.Pp
1903The reservation is kept equal to the volume's logical size to prevent unexpected
1904behavior for consumers.
1905Without the reservation, the volume could run out of space, resulting in
1906undefined behavior or data corruption, depending on how the volume is used.
1907These effects can also occur when the volume size is changed while it is in use
1908.Pq particularly when shrinking the size .
1909Extreme care should be used when adjusting the volume size.
1910.Pp
1911Though not recommended, a
1912.Qq sparse volume
1913.Po also known as
1914.Qq thin provisioned
1915.Pc
1916can be created by specifying the
1917.Fl s
1918option to the
1919.Nm zfs Cm create Fl V
1920command, or by changing the value of the
1921.Sy refreservation
1922property
1923.Po or
1924.Sy reservation
1925property on pool version 8 or earlier
1926.Pc
1927after the volume has been created.
1928A
1929.Qq sparse volume
1930is a volume where the value of
1931.Sy refreservation
1932is less than the size of the volume plus the space required to store its
1933metadata.
1934Consequently, writes to a sparse volume can fail with
1935.Er ENOSPC
1936when the pool is low on space.
1937For a sparse volume, changes to
1938.Sy volsize
1939are not reflected in the
1940.Sy refreservation .
1941A volume that is not sparse is said to be
1942.Qq thick provisioned .
1943A sparse volume can become thick provisioned by setting
1944.Sy refreservation
1945to
1946.Sy auto .
1947.It Sy volmode Ns = Ns Sy default Ns | Ns Sy full Ns | Ns Sy geom Ns | Ns Sy dev Ns | Ns Sy none
1948This property specifies how volumes should be exposed to the OS.
1949Setting it to
1950.Sy full
1951exposes volumes as fully fledged block devices, providing maximal
1952functionality.
1953The value
1954.Sy geom
1955is just an alias for
1956.Sy full
1957and is kept for compatibility.
1958Setting it to
1959.Sy dev
1960hides its partitions.
1961Volumes with property set to
1962.Sy none
1963are not exposed outside ZFS, but can be snapshotted, cloned, replicated, etc,
1964that can be suitable for backup purposes.
1965Value
1966.Sy default
1967means that volumes exposition is controlled by system-wide tunable
1968.Sy zvol_volmode ,
1969where
1970.Sy full ,
1971.Sy dev
1972and
1973.Sy none
1974are encoded as 1, 2 and 3 respectively.
1975The default value is
1976.Sy full .
1977.It Sy vscan Ns = Ns Sy on Ns | Ns Sy off
1978Controls whether regular files should be scanned for viruses when a file is
1979opened and closed.
1980In addition to enabling this property, the virus scan service must also be
1981enabled for virus scanning to occur.
1982The default value is
1983.Sy off .
1984This property is not used by OpenZFS.
1985.It Sy xattr Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy dir Ns | Ns Sy sa
1986Controls whether extended attributes are enabled for this file system.
1987Two styles of extended attributes are supported: either directory-based
1988or system-attribute-based.
1989.Pp
1990Directory-based extended attributes can be enabled by setting the value to
1991.Sy dir .
1992This style of extended attribute imposes no practical limit
1993on either the size or number of attributes which can be set on a file.
1994Although under Linux the
1995.Xr getxattr 2
1996and
1997.Xr setxattr 2
1998system calls limit the maximum size to
1999.Sy 64K .
2000This is the most compatible
2001style of extended attribute and is supported by all ZFS implementations.
2002.Pp
2003System-attribute-based xattrs can be enabled by setting the value to
2004.Sy sa
2005(default and equal to
2006.Sy on
2007) .
2008The key advantage of this type of xattr is improved performance.
2009Storing extended attributes as system attributes
2010significantly decreases the amount of disk I/O required.
2011Up to
2012.Sy 64K
2013of data may be stored per-file in the space reserved for system attributes.
2014If there is not enough space available for an extended attribute
2015then it will be automatically written as a directory-based xattr.
2016System-attribute-based extended attributes are not accessible
2017on platforms which do not support the
2018.Sy xattr Ns = Ns Sy sa
2019feature.
2020OpenZFS supports
2021.Sy xattr Ns = Ns Sy sa
2022on both
2023.Fx
2024and Linux.
2025.Pp
2026The use of system-attribute-based xattrs is strongly encouraged for users of
2027SELinux or POSIX ACLs.
2028Both of these features heavily rely on extended
2029attributes and benefit significantly from the reduced access time.
2030.Pp
2031The values
2032.Sy on
2033and
2034.Sy off
2035are equivalent to the
2036.Sy xattr
2037and
2038.Sy noxattr
2039mount options.
2040.It Sy jailed Ns = Ns Sy off Ns | Ns Sy on
2041Controls whether the dataset is managed from a jail.
2042See
2043.Xr zfs-jail 8
2044for more information.
2045Jails are a
2046.Fx
2047feature and this property is not available on other platforms.
2048.It Sy zoned Ns = Ns Sy off Ns | Ns Sy on
2049Controls whether the dataset is managed from a non-global zone or namespace.
2050See
2051.Xr zfs-zone 8
2052for more information.
2053Zoning is a
2054Linux
2055feature and this property is not available on other platforms.
2056.El
2057.Pp
2058The following three properties cannot be changed after the file system is
2059created, and therefore, should be set when the file system is created.
2060If the properties are not set with the
2061.Nm zfs Cm create
2062or
2063.Nm zpool Cm create
2064commands, these properties are inherited from the parent dataset.
2065If the parent dataset lacks these properties due to having been created prior to
2066these features being supported, the new file system will have the default values
2067for these properties.
2068.Bl -tag -width ""
2069.It Xo
2070.Sy casesensitivity Ns = Ns Sy sensitive Ns | Ns
2071.Sy insensitive Ns | Ns Sy mixed
2072.Xc
2073Indicates whether the file name matching algorithm used by the file system
2074should be case-sensitive, case-insensitive, or allow a combination of both
2075styles of matching.
2076The default value for the
2077.Sy casesensitivity
2078property is
2079.Sy sensitive .
2080Traditionally,
2081.Ux
2082and POSIX file systems have case-sensitive file names.
2083.Pp
2084The
2085.Sy mixed
2086value for the
2087.Sy casesensitivity
2088property indicates that the file system can support requests for both
2089case-sensitive and case-insensitive matching behavior.
2090Currently, case-insensitive matching behavior on a file system that supports
2091mixed behavior is limited to the SMB server product.
2092For more information about the
2093.Sy mixed
2094value behavior, see the "ZFS Administration Guide".
2095.It Xo
2096.Sy normalization Ns = Ns Sy none Ns | Ns Sy formC Ns | Ns
2097.Sy formD Ns | Ns Sy formKC Ns | Ns Sy formKD
2098.Xc
2099Indicates whether the file system should perform a
2100.Sy unicode
2101normalization of file names whenever two file names are compared, and which
2102normalization algorithm should be used.
2103File names are always stored unmodified, names are normalized as part of any
2104comparison process.
2105If this property is set to a legal value other than
2106.Sy none ,
2107and the
2108.Sy utf8only
2109property was left unspecified, the
2110.Sy utf8only
2111property is automatically set to
2112.Sy on .
2113The default value of the
2114.Sy normalization
2115property is
2116.Sy none .
2117This property cannot be changed after the file system is created.
2118.It Sy utf8only Ns = Ns Sy on Ns | Ns Sy off
2119Indicates whether the file system should reject file names that include
2120characters that are not present in the
2121.Sy UTF-8
2122character code set.
2123If this property is explicitly set to
2124.Sy off ,
2125the normalization property must either not be explicitly set or be set to
2126.Sy none .
2127The default value for the
2128.Sy utf8only
2129property is
2130.Sy off .
2131This property cannot be changed after the file system is created.
2132.El
2133.Pp
2134The
2135.Sy casesensitivity ,
2136.Sy normalization ,
2137and
2138.Sy utf8only
2139properties are also new permissions that can be assigned to non-privileged users
2140by using the ZFS delegated administration feature.
2141.
2142.Ss Temporary Mount Point Properties
2143When a file system is mounted, either through
2144.Xr mount 8
2145for legacy mounts or the
2146.Nm zfs Cm mount
2147command for normal file systems, its mount options are set according to its
2148properties.
2149The correlation between properties and mount options is as follows:
2150.Bl -tag -compact -offset Ds -width "rootcontext="
2151.It Sy atime
2152atime/noatime
2153.It Sy canmount
2154auto/noauto
2155.It Sy devices
2156dev/nodev
2157.It Sy exec
2158exec/noexec
2159.It Sy readonly
2160ro/rw
2161.It Sy relatime
2162relatime/norelatime
2163.It Sy setuid
2164suid/nosuid
2165.It Sy xattr
2166xattr/noxattr
2167.It Sy nbmand
2168mand/nomand
2169.It Sy context Ns =
2170context=
2171.It Sy fscontext Ns =
2172fscontext=
2173.It Sy defcontext Ns =
2174defcontext=
2175.It Sy rootcontext Ns =
2176rootcontext=
2177.El
2178.Pp
2179In addition, these options can be set on a per-mount basis using the
2180.Fl o
2181option, without affecting the property that is stored on disk.
2182The values specified on the command line override the values stored in the
2183dataset.
2184The
2185.Sy nosuid
2186option is an alias for
2187.Sy nodevices , Ns Sy nosetuid .
2188These properties are reported as
2189.Qq temporary
2190by the
2191.Nm zfs Cm get
2192command.
2193If the properties are changed while the dataset is mounted, the new setting
2194overrides any temporary settings.
2195.
2196.Ss User Properties
2197In addition to the standard native properties, ZFS supports arbitrary user
2198properties.
2199User properties have no effect on ZFS behavior, but applications or
2200administrators can use them to annotate datasets
2201.Pq file systems, volumes, and snapshots .
2202.Pp
2203User property names must contain a colon
2204.Pq Qq Sy \&:
2205character to distinguish them from native properties.
2206They may contain lowercase letters, numbers, and the following punctuation
2207characters: colon
2208.Pq Qq Sy \&: ,
2209dash
2210.Pq Qq Sy - ,
2211period
2212.Pq Qq Sy \&. ,
2213and underscore
2214.Pq Qq Sy _ .
2215The expected convention is that the property name is divided into two portions
2216such as
2217.Ar module : Ns Ar property ,
2218but this namespace is not enforced by ZFS.
2219User property names can be at most 256 characters, and cannot begin with a dash
2220.Pq Qq Sy - .
2221.Pp
2222When making programmatic use of user properties, it is strongly suggested to use
2223a reversed DNS domain name for the
2224.Ar module
2225component of property names to reduce the chance that two
2226independently-developed packages use the same property name for different
2227purposes.
2228.Pp
2229The values of user properties are arbitrary strings, are always inherited, and
2230are never validated.
2231All of the commands that operate on properties
2232.Po Nm zfs Cm list ,
2233.Nm zfs Cm get ,
2234.Nm zfs Cm set ,
2235and so forth
2236.Pc
2237can be used to manipulate both native properties and user properties.
2238Use the
2239.Nm zfs Cm inherit
2240command to clear a user property.
2241If the property is not defined in any parent dataset, it is removed entirely.
2242Property values are limited to 8192 bytes.
2243