do final rsync with --inplace to conserve disk space
[sysadmin-cookbook] / recepies / zfs / replace-failing-drive.sh
1 #!/bin/sh -x
2
3 pool=t1
4
5 # destroy existing pool
6 zpool status $pool && zpool destroy $pool
7
8 mkdisk() {
9         dd if=/dev/zero of=disk/$1 bs=1M count=64
10 }
11
12 test -d disk || mkdir disk
13 mkdisk 1
14 mkdisk 2
15 mkdisk 3
16 mkdisk 4
17 mkdisk 5
18 mkdisk 6
19 mkdisk 7
20 mkdisk 8
21 mkdisk 9
22 mkdisk 10
23 mkdisk 11
24 mkdisk spare
25
26 d=`pwd`/disk
27
28 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
29
30 zpool status $pool
31
32 dd if=/dev/zero of=/$pool/foo bs=1M count=500
33
34 zfs list $pool
35
36 dd if=/dev/urandom of=$d/11 bs=1M count=20
37
38 zpool status $pool
39
40 zpool scrub $pool
41
42 zpool status $pool
43
44 zpool replace $pool $d/11 $d/spare
45
46 zpool status $pool
47
48 zpool detach $pool $d/11
49
50 zpool status $pool
51
52 mkdisk 11.replaced
53
54 zpool replace $pool $d/spare $d/11.replaced
55
56 zpool status $pool