From: Alan J. Pippin Date: Tue, 11 Mar 2008 02:16:09 +0000 (-0600) Subject: Added new script to scrub a USB backup drive X-Git-Url: http://git.pippins.net/embedvideo/.git/%22%22.%24thumbnail.%22/%24link?a=commitdiff_plain;h=e9c8adf7c0e7f76ad301816589201a05c004a6aa;p=zfs-nexenta%2F.git Added new script to scrub a USB backup drive --- diff --git a/zfs-scrub-usb-drive b/zfs-scrub-usb-drive new file mode 100755 index 0000000..8a07e5c --- /dev/null +++ b/zfs-scrub-usb-drive @@ -0,0 +1,60 @@ +#!/bin/bash + +# Author: Alan J. Pippin +# Description: This script will attempt to scrub a given USB drive +# This script ensures that only 1 scrub operation is +# running at any given time. This serializes the zfs +# scrub process for any pool. + +maxsleeptime=360 +mailto=root + +for i in backups +do + # Check to see if any zfs filesystem has a scrub being performed on it now. + # If it does, we cannot perform more than one scrub operation at a time. + while true; do + /sbin/zpool status | grep scrub: | grep "in progress" > /dev/null 2>&1 + if [ $? == 0 ]; then + # Another zpool scrub operation is already running + # Wait until it is done before continuing + ransleep=$(($RANDOM % $maxsleeptime)) + sleep $ransleep + else + # Another zpool scrub operation is not running + break + fi + done + + echo "Scrubing zfs pool $i" + /usr/local/etc/bin/usb-drive-power on + /sbin/zpool import $i + /sbin/zpool scrub $i + + # Wait until the scrub completes, and check for any errors + while true; do + /sbin/zpool status $i | grep scrub: | grep "in progress" > /dev/null 2>&1 + if [ $? == 0 ]; then + # Our zpool scrub operation is still running + # Wait until it is done before continuing + ransleep=$(($RANDOM % $maxsleeptime)) + sleep $ransleep + else + # Our scrub operation has completed + break + fi + done + + # Check for any scrub errors + /sbin/zpool status $i | grep scrub: | grep "with 0 errors" > /dev/null 2>&1 + if [ $? != 0 ]; then + # The scrub found errors + /sbin/zpool status $i | /usr/bin/mailx -s "zpool scrub $i found errors" $mailto + fi + + # Power off the USB drive + /sbin/zpool export $i + /usr/local/etc/bin/usb-drive-power off + +done +