mdadm/tests/10ddf-create
mwilck@arcor.de abbc450fc2 tests/10ddf-create: create RAID5 first
Let the first created array be RAID5 rather than RAID0. This makes
the test harder than before, because everything after the first
Create has do be done indirectly through mdmon.

Signed-off-by: NeilBrown <neilb@suse.de>
2013-07-22 16:56:32 +10:00

88 lines
2.3 KiB
Plaintext

#
# Test basic DDF functionality.
#
# Create a container with 5 drives
# create a small raid0 across them all,
# then a small raid10 using 4 drives, then a 2disk raid1
# and a 3disk raid5 using the remaining space
#
# add some data, tear down the array, reassemble
# and make sure it is still there.
set -e
mdadm -CR /dev/md/ddf0 -e ddf -n 5 $dev8 $dev9 $dev10 $dev11 $dev12
mdadm -CR r5 -l5 -n5 /dev/md/ddf0 -z 5000
if mdadm -CR r5 -l1 -n2 /dev/md/ddf0 -z 5000
then echo >&2 create with same name should fail ; exit 1
fi
mdadm -CR r10 -l10 -n4 -pn2 /dev/md/ddf0 -z 5000
mdadm -CR r1 -l1 -n2 /dev/md/ddf0
mdadm -CR r0 -l0 -n3 /dev/md/ddf0
testdev /dev/md/r5 4 5000 512
testdev /dev/md/r10 2 5000 512
# r0/r10 will use 4608 due to chunk size, so that leaves 23552 for the rest
testdev /dev/md/r1 1 23552 64
testdev /dev/md/r0 3 23552 512
dd if=/dev/sda of=/dev/md/r0 || true
dd if=/dev/sda of=/dev/md/r10 || true
dd if=/dev/sda of=/dev/md/r1 || true
dd if=/dev/sda of=/dev/md/r5 || true
s0=`sha1sum /dev/md/r0`
s10=`sha1sum /dev/md/r10`
s1=`sha1sum /dev/md/r1`
s5=`sha1sum /dev/md/r5`
mdadm -Ss
mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12
mdadm -I /dev/md/ddf0
udevadm settle
s0a=`sha1sum /dev/md/r0`
s10a=`sha1sum /dev/md/r10`
s1a=`sha1sum /dev/md/r1`
s5a=`sha1sum /dev/md/r5`
if [ "$s0" != "$s0a" ]; then
echo r0 did not match ; exit 1;
fi
if [ "$s10" != "$s10a" ]; then
echo r10 did not match ; exit 1;
fi
if [ "$s1" != "$s1a" ]; then
echo r1 did not match ; exit 1;
fi
if [ "$s5" != "$s5a" ]; then
echo r5 did not match ; exit 1;
fi
# failure status just means it has completed already, so ignore it.
mdadm --wait /dev/md/r1 || true
mdadm --wait /dev/md/r10 || true
mdadm --wait /dev/md/r5 || true
mdadm -Dbs > /var/tmp/mdadm.conf
mdadm -Ss
# Now try to assemble using mdadm.conf
mdadm -Asc /var/tmp/mdadm.conf
check nosync # This failed once. The raid5 was resyncing.
udevadm settle
mdadm -Dbs | sort > /tmp/mdadm.conf
sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf -
mdadm -Ss
# and now assemble fully incrementally.
for i in $dev8 $dev9 $dev10 $dev11 $dev12
do
mdadm -I $i -c /var/tmp/mdadm.conf
done
check nosync
udevadm settle
mdadm -Dbs | sort > /tmp/mdadm.conf
sort /var/tmp/mdadm.conf | diff /tmp/mdadm.conf -
mdadm -Ss
rm /tmp/mdadm.conf /var/tmp/mdadm.conf