Vdev Properties Feature

Add properties, similar to pool properties, to each vdev.
This makes use of the existing per-vdev ZAP that was added as
part of device evacuation/removal.

A large number of read-only properties are exposed,
many of the members of struct vdev_t, that provide useful
statistics.

Adds support for read-only "removing" vdev property.
Adds the "allocating" property that defaults to "on" and
can be set to "off" to prevent future allocations from that
top-level vdev.

Supports user-defined vdev properties.
Includes support for properties.vdev in SYSFS.

Co-authored-by: Allan Jude <allan@klarasystems.com>
Co-authored-by: Mark Maybee <mark.maybee@delphix.com>
Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Mark Maybee <mark.maybee@delphix.com>
Signed-off-by: Allan Jude <allan@klarasystems.com>
Closes #11711
This commit is contained in:
Allan Jude
2021-11-30 09:46:25 -05:00
committed by GitHub
parent 5f64bf7fde
commit 2a673e76a9
33 changed files with 2746 additions and 243 deletions
+79
View File
@@ -40,11 +40,27 @@
.Op Fl o Ar field Ns Oo , Ns Ar field Oc Ns …
.Sy all Ns | Ns Ar property Ns Oo , Ns Ar property Oc Ns …
.Oo Ar pool Oc Ns …
.
.Nm zpool
.Cm get
.Op Fl Hp
.Op Fl o Ar field Ns Oo , Ns Ar field Oc Ns …
.Sy all Ns | Ns Ar property Ns Oo , Ns Ar property Oc Ns …
.Ar pool
.Oo Sy all-vdevs Ns | Ns
.Ar vdev Oc Ns …
.
.Nm zpool
.Cm set
.Ar property Ns = Ns Ar value
.Ar pool
.
.Nm zpool
.Cm set
.Ar property Ns = Ns Ar value
.Ar pool
.Ar vdev
.
.Sh DESCRIPTION
.Bl -tag -width Ds
.It Xo
@@ -91,6 +107,56 @@ Display numbers in parsable (exact) values.
.El
.It Xo
.Nm zpool
.Cm get
.Op Fl Hp
.Op Fl o Ar field Ns Oo , Ns Ar field Oc Ns …
.Sy all Ns | Ns Ar property Ns Oo , Ns Ar property Oc Ns …
.Ar pool
.Oo Sy all-vdevs Ns | Ns
.Ar vdev Oc Ns …
.Xc
Retrieves the given list of properties
.Po
or all properties if
.Sy all
is used
.Pc
for the specified vdevs
.Po
or all vdevs if
.Sy all-vdevs
is used
.Pc
in the specified pool.
These properties are displayed with the following fields:
.Bl -tag -compact -offset Ds -width "property"
.It Sy name
Name of vdev.
.It Sy property
Property name.
.It Sy value
Property value.
.It Sy source
Property source, either
.Sy default No or Sy local .
.El
.Pp
See the
.Xr vdevprops 7
manual page for more information on the available pool properties.
.Bl -tag -compact -offset Ds -width "-o field"
.It Fl H
Scripted mode.
Do not display headers, and separate fields by a single tab instead of arbitrary
space.
.It Fl o Ar field
A comma-separated list of columns to display, defaults to
.Sy name , Ns Sy property , Ns Sy value , Ns Sy source .
.It Fl p
Display numbers in parsable (exact) values.
.El
.It Xo
.Nm zpool
.Cm set
.Ar property Ns = Ns Ar value
.Ar pool
@@ -100,9 +166,22 @@ See the
.Xr zpoolprops 7
manual page for more information on what properties can be set and acceptable
values.
.It Xo
.Nm zpool
.Cm set
.Ar property Ns = Ns Ar value
.Ar pool
.Ar vdev
.Xc
Sets the given property on the specified vdev in the specified pool.
See the
.Xr vdevprops 7
manual page for more information on what properties can be set and acceptable
values.
.El
.
.Sh SEE ALSO
.Xr vdevprops 7 ,
.Xr zpool-features 7 ,
.Xr zpoolprops 7 ,
.Xr zpool-list 8