create test raidz1 array, nuke one drive, replace it with spare
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 16 Aug 2011 22:53:20 +0000 (22:53 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 16 Aug 2011 22:53:20 +0000 (22:53 +0000)
git-svn-id: svn://svn.rot13.org/sysadmin-cookbook@266 191e9f34-6774-4a6d-acfc-7664dacd4a2a

recepies/zfs/replace-failing-drive.sh [new file with mode: 0755]

diff --git a/recepies/zfs/replace-failing-drive.sh b/recepies/zfs/replace-failing-drive.sh
new file mode 100755 (executable)
index 0000000..bf2be70
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh -x
+
+pool=t1
+
+# destroy existing pool
+zpool status $pool && zpool destroy $pool
+
+mkdisk() {
+       dd if=/dev/zero of=disk/$1 bs=1M count=64
+}
+
+test -d disk || mkdir disk
+mkdisk 1
+mkdisk 2
+mkdisk 3
+mkdisk 4
+mkdisk 5
+mkdisk 6
+mkdisk 7
+mkdisk 8
+mkdisk 9
+mkdisk 10
+mkdisk 11
+mkdisk spare
+
+d=`pwd`/disk
+
+zpool create $pool raidz1 $d/1 $d/2 $d/3 $d/4 $d/5 $d/6 $d/7 $d/8 $d/9 $d/10 $d/11 spare $d/spare
+
+zpool status $pool
+
+dd if=/dev/zero of=/$pool/foo bs=1M count=500
+
+zfs list $pool
+
+dd if=/dev/urandom of=$d/11 bs=1M count=20
+
+zpool status $pool
+
+zpool scrub $pool
+
+zpool status $pool
+
+zpool replace $pool $d/11 $d/spare
+
+zpool status $pool
+
+zpool detach $pool $d/11
+
+zpool status $pool
+
+mkdisk 11.replaced
+
+zpool replace $pool $d/spare $d/11.replaced
+
+zpool status $pool