mirror_zfs/cmd/zed/zed.d
Brian Behlendorf 9a49d3f3d3
Add device rebuild feature
The device_rebuild feature enables sequential reconstruction when
resilvering.  Mirror vdevs can be rebuilt in LBA order which may
more quickly restore redundancy depending on the pools average block
size, overall fragmentation and the performance characteristics
of the devices.  However, block checksums cannot be verified
as part of the rebuild thus a scrub is automatically started after
the sequential resilver completes.

The new '-s' option has been added to the `zpool attach` and
`zpool replace` command to request sequential reconstruction
instead of healing reconstruction when resilvering.

    zpool attach -s <pool> <existing vdev> <new vdev>
    zpool replace -s <pool> <old vdev> <new vdev>

The `zpool status` output has been updated to report the progress
of sequential resilvering in the same way as healing resilvering.
The one notable difference is that multiple sequential resilvers
may be in progress as long as they're operating on different
top-level vdevs.

The `zpool wait -t resilver` command was extended to wait on
sequential resilvers.  From this perspective they are no different
than healing resilvers.

Sequential resilvers cannot be supported for RAIDZ, but are
compatible with the dRAID feature being developed.

As part of this change the resilver_restart_* tests were moved
in to the functional/replacement directory.  Additionally, the
replacement tests were renamed and extended to verify both
resilvering and rebuilding.

Original-patch-by: Isaac Huang <he.huang@intel.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: John Poduska <jpoduska@datto.com>
Co-authored-by: Mark Maybee <mmaybee@cray.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #10349
2020-07-03 11:05:50 -07:00
..
.gitignore systemd mount generator and tracking ZEDLET 2018-04-06 14:11:09 -07:00
all-debug.sh Allow to limit zed's syslog chattiness 2018-03-06 15:41:52 -08:00
all-syslog.sh Allow to limit zed's syslog chattiness 2018-03-06 15:41:52 -08:00
data-notify.sh Add a statechange notify zedlet 2016-11-10 13:52:59 -08:00
generic-notify.sh Replace "email" ZEDLETs with "notify" ZEDLETs 2015-04-27 12:08:07 -07:00
history_event-zfs-list-cacher.sh.in Systemd mount generator: Generate noauto units; add control properties 2020-02-14 15:32:55 -08:00
Makefile.am Add trim_finish notify script for ZED 2020-06-24 16:57:13 -07:00
pool_import-led.sh Enclosure LED fixes 2017-02-10 16:09:45 -08:00
README Fix broken URL 2017-02-15 11:15:38 -08:00
resilver_finish-notify.sh OpenZFS 5997 - FRU field not set during pool creation and never updated 2016-08-12 13:06:48 -07:00
resilver_finish-start-scrub.sh Add device rebuild feature 2020-07-03 11:05:50 -07:00
scrub_finish-notify.sh OpenZFS 5997 - FRU field not set during pool creation and never updated 2016-08-12 13:06:48 -07:00
statechange-led.sh Fix typos in cmd/ 2019-08-30 09:43:30 -07:00
statechange-notify.sh Enable shellcheck to run for select scripts 2017-03-09 10:20:15 -08:00
trim_finish-notify.sh Add trim_finish notify script for ZED 2020-06-24 16:57:13 -07:00
vdev_attach-led.sh Fix statechange-led.sh & unnecessary libdevmapper warning 2016-10-25 11:05:30 -07:00
vdev_clear-led.sh Multipath autoreplace, control enclosure LEDs, event rate limiting 2016-10-19 12:55:59 -07:00
zed-functions.sh Adding slack notifier 2019-09-26 09:52:10 -07:00
zed.rc Adding slack notifier 2019-09-26 09:52:10 -07:00

Shell scripts are the recommended choice for ZEDLETs that mostly call
other utilities and do relatively little data manipulation.

Shell scripts MUST work on both bash and dash.

Shell scripts MUST run cleanly through ShellCheck:
  http://www.shellcheck.net/

General functions reside in "zed-functions.sh".  Use them where applicable.

Additional references that may be of use:

  Google Shell Style Guide
  https://github.com/google/styleguide/blob/gh-pages/shell.xml

  Dash as /bin/sh
  https://wiki.ubuntu.com/DashAsBinSh

  Common shell script mistakes
  http://www.pixelbeat.org/programming/shell_script_mistakes.html

  Filenames and Pathnames in Shell: How to do it Correctly
  http://www.dwheeler.com/essays/filenames-in-shell.html

  Autoconf: Portable Shell Programming
  https://www.gnu.org/software/autoconf/manual/autoconf.html#Portable-Shell

Please BE CONSISTENT with the existing style, check for errors,
minimize dependencies where possible, try to be portable,
and comment anything non-obvious.  Festina lente.