]>
Commit | Line | Data |
---|---|---|
487e48af N |
1 | |
2 | # Test changing of level, chunksize etc. | |
3 | # Create a RAID1, convert to RAID5, add a disk, add another disk | |
4 | # convert to RAID6, back to RAID5 and ultimately to RAID1 | |
5 | ||
6 | testK=$[64*3*6] | |
7 | dd if=/dev/urandom of=/tmp/RandFile bs=1024 count=$testK | |
8 | export MDADM_GROW_VERIFY=1 | |
9 | ||
10 | dotest() { | |
4ccc2562 | 11 | sleep 2 |
487e48af | 12 | check wait |
ebe6ea0c | 13 | testdev $md0 $1 19968 64 nd |
487e48af N |
14 | blockdev --flushbufs $md0 |
15 | cmp -s -n $[textK*1024] $md0 /tmp/RandFile || { echo cmp failed; exit 2; } | |
16 | # write something new - shift chars 4 space | |
17 | tr ' -~' '$-~ -#' < /tmp/RandFile > /tmp/RandFile2 | |
18 | mv /tmp/RandFile2 /tmp/RandFile | |
19 | dd if=/tmp/RandFile of=$md0 | |
20 | } | |
21 | ||
471ac41e N |
22 | checkgeo() { |
23 | # check the geometry of an array | |
24 | # level raid_disks chunk_size layout | |
25 | dev=$1 | |
26 | shift | |
27 | sleep 0.5 | |
28 | check wait | |
20c993e2 | 29 | sleep 1 |
bcbb92d4 | 30 | for attr in level raid_disks chunk_size layout |
471ac41e N |
31 | do |
32 | if [ $# -gt 0 ] ; then | |
33 | val=$1 | |
34 | shift | |
35 | if [ " `cat /sys/block/$dev/md/$attr`" != " $val" ] | |
36 | then echo "$attr doesn't match for $dev" | |
37 | exit 1 | |
38 | fi | |
39 | fi | |
40 | done | |
41 | } | |
20c993e2 | 42 | |
471ac41e | 43 | |
487e48af N |
44 | bu=/tmp/md-test-backup |
45 | rm -f $bu | |
7d5c3964 | 46 | mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 -z 19968 |
ebe6ea0c | 47 | testdev $md0 1 $mdsize1a 64 |
487e48af N |
48 | dd if=/tmp/RandFile of=$md0 |
49 | dotest 1 | |
50 | ||
51 | mdadm --grow $md0 -l5 -n3 --chunk 64 | |
52 | dotest 2 | |
53 | ||
54 | mdadm $md0 --add $dev3 $dev4 | |
55 | mdadm --grow $md0 -n4 --chunk 32 | |
56 | dotest 3 | |
57 | ||
58 | mdadm -G $md0 -l6 --backup-file $bu | |
59 | dotest 3 | |
60 | ||
7d5c3964 | 61 | mdadm -G /dev/md0 --array-size 39936 |
487e48af | 62 | mdadm -G $md0 -n4 --backup-file $bu |
15604480 | 63 | checkgeo md0 raid6 4 $[32*1024] |
487e48af N |
64 | dotest 2 |
65 | ||
66 | mdadm -G $md0 -l5 --backup-file $bu | |
15604480 | 67 | checkgeo md0 raid5 3 $[32*1024] |
487e48af N |
68 | dotest 2 |
69 | ||
7d5c3964 | 70 | mdadm -G /dev/md0 --array-size 19968 |
487e48af | 71 | mdadm -G $md0 -n2 --backup-file $bu |
15604480 | 72 | checkgeo md0 raid5 2 $[32*1024] |
487e48af N |
73 | dotest 1 |
74 | ||
75 | mdadm -G --level=1 $md0 | |
76 | dotest 1 | |
471ac41e N |
77 | |
78 | # now repeat that last few steps only with a degraded array. | |
79 | mdadm -S $md0 | |
80 | mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 | |
81 | dd if=/tmp/RandFile of=$md0 | |
82 | dotest 3 | |
83 | ||
84 | mdadm $md0 --fail $dev0 | |
85 | ||
15604480 | 86 | mdadm -G /dev/md0 --array-size 37888 |
471ac41e N |
87 | mdadm -G $md0 -n4 --backup-file $bu |
88 | dotest 2 | |
15604480 | 89 | checkgeo md0 raid6 4 $[512*1024] |
471ac41e N |
90 | mdadm $md0 --fail $dev4 |
91 | ||
92 | mdadm $md0 --fail $dev3 | |
93 | # now double-degraded. | |
94 | # switch layout to a DDF layout and back to make sure that works. | |
95 | ||
96 | mdadm -G /dev/md0 --layout=ddf-N-continue --backup-file $bu | |
5f175898 | 97 | checkgeo md0 raid6 4 $[512*1024] 10 |
471ac41e N |
98 | dotest 2 |
99 | mdadm -G /dev/md0 --layout=ra --backup-file $bu | |
5f175898 | 100 | checkgeo md0 raid6 4 $[512*1024] 1 |
471ac41e N |
101 | dotest 2 |
102 | ||
103 | mdadm -G $md0 -l5 --backup-file $bu | |
104 | dotest 2 | |
105 | ||
15604480 | 106 | mdadm -G /dev/md0 --array-size 18944 |
471ac41e N |
107 | mdadm -G $md0 -n2 --backup-file $bu |
108 | dotest 1 | |
15604480 | 109 | checkgeo md0 raid5 2 $[512*1024] |
471ac41e N |
110 | mdadm $md0 --fail $dev2 |
111 | ||
112 | mdadm -G --level=1 $md0 | |
113 | dotest 1 | |
15604480 | 114 | checkgeo md0 raid1 2 |