]>
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() { | |
11 | sleep 0.5 | |
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 | |
29 | for attr in level raid_disks chunk_size layout | |
30 | do | |
31 | if [ $# -gt 0 ] ; then | |
32 | val=$1 | |
33 | shift | |
34 | if [ " `cat /sys/block/$dev/md/$attr`" != " $val" ] | |
35 | then echo "$attr doesn't match for $dev" | |
36 | exit 1 | |
37 | fi | |
38 | fi | |
39 | done | |
40 | } | |
41 | ||
42 | ||
487e48af N |
43 | bu=/tmp/md-test-backup |
44 | rm -f $bu | |
7d5c3964 | 45 | mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 -z 19968 |
ebe6ea0c | 46 | testdev $md0 1 $mdsize1a 64 |
487e48af N |
47 | dd if=/tmp/RandFile of=$md0 |
48 | dotest 1 | |
49 | ||
50 | mdadm --grow $md0 -l5 -n3 --chunk 64 | |
51 | dotest 2 | |
52 | ||
53 | mdadm $md0 --add $dev3 $dev4 | |
54 | mdadm --grow $md0 -n4 --chunk 32 | |
55 | dotest 3 | |
56 | ||
57 | mdadm -G $md0 -l6 --backup-file $bu | |
58 | dotest 3 | |
59 | ||
7d5c3964 | 60 | mdadm -G /dev/md0 --array-size 39936 |
487e48af N |
61 | mdadm -G $md0 -n4 --backup-file $bu |
62 | dotest 2 | |
63 | ||
64 | mdadm -G $md0 -l5 --backup-file $bu | |
65 | dotest 2 | |
66 | ||
7d5c3964 | 67 | mdadm -G /dev/md0 --array-size 19968 |
487e48af N |
68 | mdadm -G $md0 -n2 --backup-file $bu |
69 | dotest 1 | |
70 | ||
71 | mdadm -G --level=1 $md0 | |
72 | dotest 1 | |
471ac41e N |
73 | |
74 | # now repeat that last few steps only with a degraded array. | |
75 | mdadm -S $md0 | |
76 | mdadm -CR $md0 -l6 -n5 $dev0 $dev1 $dev2 $dev3 $dev4 | |
77 | dd if=/tmp/RandFile of=$md0 | |
78 | dotest 3 | |
79 | ||
80 | mdadm $md0 --fail $dev0 | |
81 | ||
7d5c3964 | 82 | mdadm -G /dev/md0 --array-size 39936 |
471ac41e N |
83 | mdadm -G $md0 -n4 --backup-file $bu |
84 | dotest 2 | |
85 | mdadm $md0 --fail $dev4 | |
86 | ||
87 | mdadm $md0 --fail $dev3 | |
88 | # now double-degraded. | |
89 | # switch layout to a DDF layout and back to make sure that works. | |
90 | ||
91 | mdadm -G /dev/md0 --layout=ddf-N-continue --backup-file $bu | |
5f175898 | 92 | checkgeo md0 raid6 4 $[512*1024] 10 |
471ac41e N |
93 | dotest 2 |
94 | mdadm -G /dev/md0 --layout=ra --backup-file $bu | |
5f175898 | 95 | checkgeo md0 raid6 4 $[512*1024] 1 |
471ac41e N |
96 | dotest 2 |
97 | ||
98 | mdadm -G $md0 -l5 --backup-file $bu | |
99 | dotest 2 | |
100 | ||
7d5c3964 | 101 | mdadm -G /dev/md0 --array-size 19968 |
471ac41e N |
102 | mdadm -G $md0 -n2 --backup-file $bu |
103 | dotest 1 | |
104 | mdadm $md0 --fail $dev2 | |
105 | ||
106 | mdadm -G --level=1 $md0 | |
107 | dotest 1 |