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