dsl_dataset: put IO-inducing frees on the pool deadlist
[zfs.git] / man / man7 / zpoolprops.7
blobf4fcc620e4d90a2a6f02fe29953b379a45583bb4
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) 2007, Sun Microsystems, Inc. All Rights Reserved.
22 .\" Copyright (c) 2012, 2018 by Delphix. All rights reserved.
23 .\" Copyright (c) 2012 Cyril Plisko. All Rights Reserved.
24 .\" Copyright (c) 2017 Datto Inc.
25 .\" Copyright (c) 2018 George Melikov. All Rights Reserved.
26 .\" Copyright 2017 Nexenta Systems, Inc.
27 .\" Copyright (c) 2017 Open-E, Inc. All Rights Reserved.
28 .\" Copyright (c) 2021, Colm Buckley <colm@tuatha.org>
29 .\" Copyright (c) 2023, Klara Inc.
30 .\"
31 .Dd July 29, 2024
32 .Dt ZPOOLPROPS 7
33 .Os
35 .Sh NAME
36 .Nm zpoolprops
37 .Nd properties of ZFS storage pools
39 .Sh DESCRIPTION
40 Each pool has several properties associated with it.
41 Some properties are read-only statistics while others are configurable and
42 change the behavior of the pool.
43 .Pp
44 User properties have no effect on ZFS behavior.
45 Use them to annotate pools in a way that is meaningful in your environment.
46 For more information about user properties, see the
47 .Sx User Properties
48 section.
49 .Pp
50 The following are read-only properties:
51 .Bl -tag -width "unsupported@guid"
52 .It Sy allocated
53 Amount of storage used within the pool.
54 See
55 .Sy fragmentation
56 and
57 .Sy free
58 for more information.
59 .It Sy bcloneratio
60 The ratio of the total amount of storage that would be required to store all
61 the cloned blocks without cloning to the actual storage used.
62 The
63 .Sy bcloneratio
64 property is calculated as:
65 .Pp
66 .Sy ( ( bclonesaved + bcloneused ) * 100 ) / bcloneused
67 .It Sy bclonesaved
68 The amount of additional storage that would be required if block cloning
69 was not used.
70 .It Sy bcloneused
71 The amount of storage used by cloned blocks.
72 .It Sy capacity
73 Percentage of pool space used.
74 This property can also be referred to by its shortened column name,
75 .Sy cap .
76 .It Sy dedupcached
77 Total size of the deduplication table currently loaded into the ARC.
78 See
79 .Xr zpool-prefetch 8 .
80 .It Sy dedup_table_size
81 Total on-disk size of the deduplication table.
82 .It Sy expandsize
83 Amount of uninitialized space within the pool or device that can be used to
84 increase the total capacity of the pool.
85 On whole-disk vdevs, this is the space beyond the end of the GPT –
86 typically occurring when a LUN is dynamically expanded
87 or a disk replaced with a larger one.
88 On partition vdevs, this is the space appended to the partition after it was
89 added to the pool – most likely by resizing it in-place.
90 The space can be claimed for the pool by bringing it online with
91 .Sy autoexpand=on
92 or using
93 .Nm zpool Cm online Fl e .
94 .It Sy fragmentation
95 The amount of fragmentation in the pool.
96 As the amount of space
97 .Sy allocated
98 increases, it becomes more difficult to locate
99 .Sy free
100 space.
101 This may result in lower write performance compared to pools with more
102 unfragmented free space.
103 .It Sy free
104 The amount of free space available in the pool.
105 By contrast, the
106 .Xr zfs 8
107 .Sy available
108 property describes how much new data can be written to ZFS filesystems/volumes.
109 The zpool
110 .Sy free
111 property is not generally useful for this purpose, and can be substantially more
112 than the zfs
113 .Sy available
114 space.
115 This discrepancy is due to several factors, including raidz parity;
116 zfs reservation, quota, refreservation, and refquota properties; and space set
117 aside by
118 .Sy spa_slop_shift
119 (see
120 .Xr zfs 4
121 for more information).
122 .It Sy freeing
123 After a file system or snapshot is destroyed, the space it was using is
124 returned to the pool asynchronously.
125 .Sy freeing
126 is the amount of space remaining to be reclaimed.
127 Over time
128 .Sy freeing
129 will decrease while
130 .Sy free
131 increases.
132 .It Sy guid
133 A unique identifier for the pool.
134 .It Sy health
135 The current health of the pool.
136 Health can be one of
137 .Sy ONLINE , DEGRADED , FAULTED , OFFLINE, REMOVED , UNAVAIL .
138 .It Sy leaked
139 Space not released while
140 .Sy freeing
141 due to corruption, now permanently leaked into the pool.
142 .It Sy load_guid
143 A unique identifier for the pool.
144 Unlike the
145 .Sy guid
146 property, this identifier is generated every time we load the pool (i.e. does
147 not persist across imports/exports) and never changes while the pool is loaded
148 (even if a
149 .Sy reguid
150 operation takes place).
151 .It Sy size
152 Total size of the storage pool.
153 .It Sy unsupported@ Ns Em guid
154 Information about unsupported features that are enabled on the pool.
156 .Xr zpool-features 7
157 for details.
160 The space usage properties report actual physical space available to the
161 storage pool.
162 The physical space can be different from the total amount of space that any
163 contained datasets can actually use.
164 The amount of space used in a raidz configuration depends on the characteristics
165 of the data being written.
166 In addition, ZFS reserves some space for internal accounting that the
167 .Xr zfs 8
168 command takes into account, but the
170 command does not.
171 For non-full pools of a reasonable size, these effects should be invisible.
172 For small pools, or pools that are close to being completely full, these
173 discrepancies may become more noticeable.
175 The following property can be set at creation time and import time:
176 .Bl -tag -width Ds
177 .It Sy altroot
178 Alternate root directory.
179 If set, this directory is prepended to any mount points within the pool.
180 This can be used when examining an unknown pool where the mount points cannot be
181 trusted, or in an alternate boot environment, where the typical paths are not
182 valid.
183 .Sy altroot
184 is not a persistent property.
185 It is valid only while the system is up.
186 Setting
187 .Sy altroot
188 defaults to using
189 .Sy cachefile Ns = Ns Sy none ,
190 though this may be overridden using an explicit setting.
193 The following property can be set only at import time:
194 .Bl -tag -width Ds
195 .It Sy readonly Ns = Ns Sy on Ns | Ns Sy off
196 If set to
197 .Sy on ,
198 the pool will be imported in read-only mode.
199 This property can also be referred to by its shortened column name,
200 .Sy rdonly .
203 The following properties can be set at creation time and import time, and later
204 changed with the
205 .Nm zpool Cm set
206 command:
207 .Bl -tag -width Ds
208 .It Sy ashift Ns = Ns Ar ashift
209 Pool sector size exponent, to the power of
210 .Sy 2
211 (internally referred to as
212 .Sy ashift ) .
213 Values from 9 to 16, inclusive, are valid; also, the
214 value 0 (the default) means to auto-detect using the kernel's block
215 layer and a ZFS internal exception list.
216 I/O operations will be aligned to the specified size boundaries.
217 Additionally, the minimum (disk)
218 write size will be set to the specified size, so this represents a
219 space/performance trade-off.
220 For optimal performance, the pool sector size should be greater than
221 or equal to the sector size of the underlying disks.
222 The typical case for setting this property is when
223 performance is important and the underlying disks use 4KiB sectors but
224 report 512B sectors to the OS (for compatibility reasons); in that
225 case, set
226 .Sy ashift Ns = Ns Sy 12
227 (which is
228 .Sy 1<<12 No = Sy 4096 ) .
229 When set, this property is
230 used as the default hint value in subsequent vdev operations (add,
231 attach and replace).
232 Changing this value will not modify any existing
233 vdev, not even on disk replacement; however it can be used, for
234 instance, to replace a dying 512B sectors disk with a newer 4KiB
235 sectors device: this will probably result in bad performance but at the
236 same time could prevent loss of data.
237 .It Sy autoexpand Ns = Ns Sy on Ns | Ns Sy off
238 Controls automatic pool expansion when the underlying LUN is grown.
239 If set to
240 .Sy on ,
241 the pool will be resized according to the size of the expanded device.
242 If the device is part of a mirror or raidz then all devices within that
243 mirror/raidz group must be expanded before the new space is made available to
244 the pool.
245 The default behavior is
246 .Sy off .
247 This property can also be referred to by its shortened column name,
248 .Sy expand .
249 .It Sy autoreplace Ns = Ns Sy on Ns | Ns Sy off
250 Controls automatic device replacement.
251 If set to
252 .Sy off ,
253 device replacement must be initiated by the administrator by using the
254 .Nm zpool Cm replace
255 command.
256 If set to
257 .Sy on ,
258 any new device, found in the same physical location as a device that previously
259 belonged to the pool, is automatically formatted and replaced.
260 The default behavior is
261 .Sy off .
262 This property can also be referred to by its shortened column name,
263 .Sy replace .
264 Autoreplace can also be used with virtual disks (like device
265 mapper) provided that you use the /dev/disk/by-vdev paths setup by
266 vdev_id.conf.
267 See the
268 .Xr vdev_id 8
269 manual page for more details.
270 Autoreplace and autoonline require the ZFS Event Daemon be configured and
271 running.
272 See the
273 .Xr zed 8
274 manual page for more details.
275 .It Sy autotrim Ns = Ns Sy on Ns | Ns Sy off
276 When set to
277 .Sy on
278 space which has been recently freed, and is no longer allocated by the pool,
279 will be periodically trimmed.
280 This allows block device vdevs which support
281 BLKDISCARD, such as SSDs, or file vdevs on which the underlying file system
282 supports hole-punching, to reclaim unused blocks.
283 The default value for this property is
284 .Sy off .
286 Automatic TRIM does not immediately reclaim blocks after a free.
287 Instead, it will optimistically delay allowing smaller ranges to be aggregated
288 into a few larger ones.
289 These can then be issued more efficiently to the storage.
290 TRIM on L2ARC devices is enabled by setting
291 .Sy l2arc_trim_ahead > 0 .
293 Be aware that automatic trimming of recently freed data blocks can put
294 significant stress on the underlying storage devices.
295 This will vary depending of how well the specific device handles these commands.
296 For lower-end devices it is often possible to achieve most of the benefits
297 of automatic trimming by running an on-demand (manual) TRIM periodically
298 using the
299 .Nm zpool Cm trim
300 command.
301 .It Sy bootfs Ns = Ns Sy (unset) Ns | Ns Ar pool Ns Op / Ns Ar dataset
302 Identifies the default bootable dataset for the root pool.
303 This property is expected to be set mainly by the installation and upgrade
304 programs.
305 Not all Linux distribution boot processes use the bootfs property.
306 .It Sy cachefile Ns = Ns Ar path Ns | Ns Sy none
307 Controls the location of where the pool configuration is cached.
308 Discovering all pools on system startup requires a cached copy of the
309 configuration data that is stored on the root file system.
310 All pools in this cache are automatically imported when the system boots.
311 Some environments, such as install and clustering, need to cache this
312 information in a different location so that pools are not automatically
313 imported.
314 Setting this property caches the pool configuration in a different location that
315 can later be imported with
316 .Nm zpool Cm import Fl c .
317 Setting it to the value
318 .Sy none
319 creates a temporary pool that is never cached, and the
321 .Pq empty string
322 uses the default location.
324 Multiple pools can share the same cache file.
325 Because the kernel destroys and recreates this file when pools are added and
326 removed, care should be taken when attempting to access this file.
327 When the last pool using a
328 .Sy cachefile
329 is exported or destroyed, the file will be empty.
330 .It Sy comment Ns = Ns Ar text
331 A text string consisting of printable ASCII characters that will be stored
332 such that it is available even if the pool becomes faulted.
333 An administrator can provide additional information about a pool using this
334 property.
335 .It Sy compatibility Ns = Ns Sy off Ns | Ns Sy legacy Ns | Ns Ar file Ns Oo , Ns Ar file Oc Ns …
336 Specifies that the pool maintain compatibility with specific feature sets.
337 When set to
338 .Sy off
339 (or unset) compatibility is disabled (all features may be enabled); when set to
340 .Sy legacy
341 no features may be enabled.
342 When set to a comma-separated list of filenames
343 (each filename may either be an absolute path, or relative to
344 .Pa /etc/zfs/compatibility.d
346 .Pa /usr/share/zfs/compatibility.d )
347 the lists of requested features are read from those files, separated by
348 whitespace and/or commas.
349 Only features present in all files may be enabled.
352 .Xr zpool-features 7 ,
353 .Xr zpool-create 8
355 .Xr zpool-upgrade 8
356 for more information on the operation of compatibility feature sets.
357 .It Sy dedup_table_quota Ns = Ns Ar number Ns | Ns Sy none Ns | Ns Sy auto
358 This property sets a limit on the on-disk size of the pool's dedup table.
359 Entries will not be added to the dedup table once this size is reached;
360 if a dedup table already exists, and is larger than this size, they
361 will not be removed as part of setting this property.
362 Existing entries will still have their reference counts updated.
364 The actual size limit of the table may be above or below the quota,
365 depending on the actual on-disk size of the entries (which may be
366 approximated for purposes of calculating the quota).
367 That is, setting a quota size of 1M may result in the maximum size being
368 slightly below, or slightly above, that value.
369 Set to
370 .Sy 'none'
371 to disable.
372 In automatic mode, which is the default, the size of a dedicated dedup vdev
373 is used as the quota limit.
376 .Sy dedup_table_quota
377 property works for both legacy and fast dedup tables.
378 .It Sy dedupditto Ns = Ns Ar number
379 This property is deprecated and no longer has any effect.
380 .It Sy delegation Ns = Ns Sy on Ns | Ns Sy off
381 Controls whether a non-privileged user is granted access based on the dataset
382 permissions defined on the dataset.
384 .Xr zfs 8
385 for more information on ZFS delegated administration.
386 .It Sy failmode Ns = Ns Sy wait Ns | Ns Sy continue Ns | Ns Sy panic
387 Controls the system behavior in the event of catastrophic pool failure.
388 This condition is typically a result of a loss of connectivity to the underlying
389 storage device(s) or a failure of all devices within the pool.
390 The behavior of such an event is determined as follows:
391 .Bl -tag -width "continue"
392 .It Sy wait
393 Blocks all I/O access until the device connectivity is recovered and the errors
394 are cleared with
395 .Nm zpool Cm clear .
396 This is the default behavior.
397 .It Sy continue
398 Returns
399 .Er EIO
400 to any new write I/O requests but allows reads to any of the remaining healthy
401 devices.
402 Any write requests that have yet to be committed to disk would be blocked.
403 .It Sy panic
404 Prints out a message to the console and generates a system crash dump.
406 .It Sy feature@ Ns Ar feature_name Ns = Ns Sy enabled
407 The value of this property is the current state of
408 .Ar feature_name .
409 The only valid value when setting this property is
410 .Sy enabled
411 which moves
412 .Ar feature_name
413 to the enabled state.
415 .Xr zpool-features 7
416 for details on feature states.
417 .It Sy listsnapshots Ns = Ns Sy on Ns | Ns Sy off
418 Controls whether information about snapshots associated with this pool is
419 output when
420 .Nm zfs Cm list
421 is run without the
422 .Fl t
423 option.
424 The default value is
425 .Sy off .
426 This property can also be referred to by its shortened name,
427 .Sy listsnaps .
428 .It Sy multihost Ns = Ns Sy on Ns | Ns Sy off
429 Controls whether a pool activity check should be performed during
430 .Nm zpool Cm import .
431 When a pool is determined to be active it cannot be imported, even with the
432 .Fl f
433 option.
434 This property is intended to be used in failover configurations
435 where multiple hosts have access to a pool on shared storage.
437 Multihost provides protection on import only.
438 It does not protect against an
439 individual device being used in multiple pools, regardless of the type of vdev.
440 See the discussion under
441 .Nm zpool Cm create .
443 When this property is on, periodic writes to storage occur to show the pool is
444 in use.
446 .Sy zfs_multihost_interval
447 in the
448 .Xr zfs 4
449 manual page.
450 In order to enable this property each host must set a unique hostid.
452 .Xr genhostid 1
453 .Xr zgenhostid 8
454 .Xr spl 4
455 for additional details.
456 The default value is
457 .Sy off .
458 .It Sy version Ns = Ns Ar version
459 The current on-disk version of the pool.
460 This can be increased, but never decreased.
461 The preferred method of updating pools is with the
462 .Nm zpool Cm upgrade
463 command, though this property can be used when a specific version is needed for
464 backwards compatibility.
465 Once feature flags are enabled on a pool this property will no longer have a
466 value.
469 .Ss User Properties
470 In addition to the standard native properties, ZFS supports arbitrary user
471 properties.
472 User properties have no effect on ZFS behavior, but applications or
473 administrators can use them to annotate pools.
475 User property names must contain a colon
476 .Pq Qq Sy \&:
477 character to distinguish them from native properties.
478 They may contain lowercase letters, numbers, and the following punctuation
479 characters: colon
480 .Pq Qq Sy \&: ,
481 dash
482 .Pq Qq Sy - ,
483 period
484 .Pq Qq Sy \&. ,
485 and underscore
486 .Pq Qq Sy _ .
487 The expected convention is that the property name is divided into two portions
488 such as
489 .Ar module : Ns Ar property ,
490 but this namespace is not enforced by ZFS.
491 User property names can be at most 255 characters, and cannot begin with a dash
492 .Pq Qq Sy - .
494 When making programmatic use of user properties, it is strongly suggested to use
495 a reversed DNS domain name for the
496 .Ar module
497 component of property names to reduce the chance that two
498 independently-developed packages use the same property name for different
499 purposes.
501 The values of user properties are arbitrary strings and
502 are never validated.
503 All of the commands that operate on properties
504 .Po Nm zpool Cm list ,
505 .Nm zpool Cm get ,
506 .Nm zpool Cm set ,
507 and so forth
509 can be used to manipulate both native properties and user properties.
511 .Nm zpool Cm set Ar name Ns =
512 to clear a user property.
513 Property values are limited to 8192 bytes.