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