forked from openzfs/zfs
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Add a zed script to kick off a scrub after a resilver. The script is disabled by default. * Tweak the resilver_finish event timing so that it happens after the bad disk has been detached. Previously you would see the resilver_finish event and then then the vdev_detach event. * Add a test mode (-t) option to zed to allow it to use the native paths to the ZFS utilities. This is needed when you're running zed under the ZTS in a local workspace. Signed-off-by: Tony Hutter <[email protected]> Closes: openzfs#4662
- Loading branch information
1 parent
522db29
commit 9901d20
Showing
13 changed files
with
182 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
#!/bin/sh | ||
# resilver_finish-start-scrub.sh | ||
# Run a scrub after a resilver | ||
# | ||
# Exit codes: | ||
# 9: internal error | ||
# | ||
[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc" | ||
. "${ZED_ZEDLET_DIR}/zed-functions.sh" | ||
|
||
[ -n "${ZEVENT_POOL}" ] || exit 9 | ||
[ -n "${ZEVENT_SUBCLASS}" ] || exit 9 | ||
zed_check_cmd "${ZPOOL}" || exit 9 | ||
|
||
zed_log_msg "Starting scrub after resilver on ${ZEVENT_POOL}" | ||
${ZPOOL} scrub ${ZEVENT_POOL} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
66 changes: 66 additions & 0 deletions
66
tests/zfs-tests/tests/functional/fault/scrub_after_resilver.ksh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#!/bin/ksh -p | ||
# | ||
# This file and its contents are supplied under the terms of the | ||
# Common Development and Distribution License ("CDDL"), version 1.0. | ||
# You may only use this file in accordance with the terms of version | ||
# 1.0 of the CDDL. | ||
# | ||
# A full copy of the text of the CDDL should have accompanied this | ||
# source. A copy of the CDDL is also available via the Internet at | ||
# http://www.illumos.org/license/CDDL. | ||
# | ||
|
||
# | ||
# Copyright (c) 2018 by Lawrence Livermore National Security, LLC. | ||
# All rights reserved. | ||
# | ||
|
||
. $STF_SUITE/include/libtest.shlib | ||
. $STF_SUITE/tests/functional/fault/fault.cfg | ||
|
||
# | ||
# DESCRIPTION: | ||
# Test the scrub after resilver zedlet | ||
# | ||
# STRATEGY: | ||
# 1. Create a mirrored pool | ||
# 2. Fault a disk | ||
# 3. Replace the disk, starting a resilver | ||
# 4. Verify that a scrub happens after the resilver finishes | ||
# | ||
|
||
log_assert "Testing the scrub after resilver zedlet" | ||
|
||
# Backup our zed.rc | ||
old_zedrc="$(cat $ZEDLET_DIR/zed.rc)" | ||
|
||
# Enable ZED_SCRUB_AFTER_RESILVER | ||
log_must sed -i 's/\#ZED_SCRUB_AFTER_RESILVER/ZED_SCRUB_AFTER_RESILVER/g' $ZEDLET_DIR/zed.rc | ||
|
||
function cleanup | ||
{ | ||
# Restore our zed.rc | ||
log_must echo "$old_zedrc" > $ZEDLET_DIR/zed.rc | ||
|
||
default_cleanup | ||
} | ||
|
||
log_onexit cleanup | ||
|
||
verify_disk_count "$DISKS" 3 | ||
default_mirror_setup_noexit $DISKS | ||
|
||
log_must zpool offline -f $TESTPOOL $DISK1 | ||
log_must zpool detach $TESTPOOL $DISK2 | ||
|
||
# Write to our degraded pool so we have some data to resilver | ||
log_must mkfile 16M $TESTDIR/file1 | ||
|
||
# Replace the failed disks, forcing a resilver | ||
log_must zpool replace $TESTPOOL $DISK1 $DISK2 | ||
|
||
# Wait for the resilver to finish, and then the subsequent scrub to finish. | ||
# Waiting for the scrub has the effect of waiting for both. Timeout after 10 | ||
# seconds if nothing is happening. | ||
log_must wait_scrubbed $TESTPOOL 10 | ||
log_pass "Successfully ran the scrub after resilver zedlet" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,7 +28,7 @@ | |
|
||
verify_runnable "global" | ||
|
||
zed_setup | ||
zed_setup resilver_finish-start-scrub.sh | ||
zed_start | ||
|
||
log_pass |