]> git.ipfire.org Git - thirdparty/mdadm.git/blob - tests/10ddf-create
12c38208cd37b6bd9f516742128ab7864126ecdd
[thirdparty/mdadm.git] / tests / 10ddf-create
1 #
2 # Test basic DDF functionality.
3 #
4 # Create a container with 5 drives
5 # create a small raid0 across them all, then a 2disk raid1
6 # and a 3disk raid5 using the remaining space
7 #
8 # add some data, tear down the array, reassemble
9 # and make sure it is still there.
10
11 mdadm -CR /dev/md/ddf0 -e ddf -n 5 $dev8 $dev9 $dev10 $dev11 $dev12
12 mdadm -CR r0 -l0 -n5 /dev/md/ddf0 -z 5000
13 mdadm -CR r1 -l1 -n2 /dev/md/ddf0
14 mdadm -CR r5 -l5 -n3 /dev/md/ddf0
15 testdev /dev/md/r0 5 5000 512
16 # r0 will use 4608 due to chunk size, so that leaves 28160 for the rest
17 testdev /dev/md/r1 1 28160 1
18 testdev /dev/md/r5 2 28160 512
19 dd if=/dev/sda of=/dev/md/r0 || true
20 dd if=/dev/sda of=/dev/md/r1 || true
21 dd if=/dev/sda of=/dev/md/r5 || true
22
23 s0=`sha1sum /dev/md/r0`
24 s1=`sha1sum /dev/md/r1`
25 s5=`sha1sum /dev/md/r5`
26
27
28 mdadm -Ss
29 mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12
30 mdadm -I /dev/md/ddf0
31
32 s0a=`sha1sum /dev/md/r0`
33 s1a=`sha1sum /dev/md/r1`
34 s5a=`sha1sum /dev/md/r5`
35
36 if [ "$s0" != "$s0a" ]; then
37 echo r0 did not match ; exit 1;
38 fi
39 if [ "$s1" != "$s1a" ]; then
40 echo r1 did not match ; exit 1;
41 fi
42 if [ "$s5" != "$s5a" ]; then
43 echo r5 did not match ; exit 1;
44 fi
45
46 # failure status just means it has completed already, so ignore it.
47 mdadm --wait /dev/md/r1 || true
48 mdadm --wait /dev/md/r5 || true
49
50 mdadm -Dbs > /var/tmp/mdadm.conf
51
52 mdadm -Ss
53
54 # Now try to assemble using mdadm.conf
55 mdadm -Asc /var/tmp/mdadm.conf
56 check nosync # This failed once. The raid5 was resyncing.
57
58 mdadm -Dbs | sort > /tmp/mdadm.conf
59 sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf -
60 mdadm -Ss
61
62 # and now assemble fully incrementally.
63 for i in $dev8 $dev9 $dev10 $dev11 $dev12
64 do
65 #./mdadm -I $i -vv 2>&1 | wc -l > /tmp/cnt
66 ./mdadm -I $i 2> /tmp/thing
67 wc -l < /tmp/thing > /tmp/cnt
68 # should find container and 2 devices, so 3 lines.
69 [ `cat /tmp/cnt` -eq 3 ]
70 done
71 check nosync
72
73 mdadm -Dbs | sort > /tmp/mdadm.conf
74 sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf -
75 mdadm -Ss
76 rm /tmp/mdadm.conf /var/tmp/mdadm.conf