# # Test basic DDF functionality. # # Create a container with 5 drives # create a small raid0 across them all, 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. mdadm -CR /dev/md/ddf0 -e ddf -n 5 $dev8 $dev9 $dev10 $dev11 $dev12 mdadm -CR r0 -l0 -n5 /dev/md/ddf0 -z 5000 mdadm -CR r1 -l1 -n2 /dev/md/ddf0 mdadm -CR r5 -l5 -n3 /dev/md/ddf0 testdev /dev/md/r0 5 5000 512 # r0 will use 4608 due to chunk size, so that leaves 28160 for the rest testdev /dev/md/r1 1 28160 1 testdev /dev/md/r5 2 28160 512 dd if=/dev/sda of=/dev/md/r0 || true dd if=/dev/sda of=/dev/md/r1 || true dd if=/dev/sda of=/dev/md/r5 || true s0=`sha1sum /dev/md/r0` 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 s0a=`sha1sum /dev/md/r0` s1a=`sha1sum /dev/md/r1` s5a=`sha1sum /dev/md/r5` if [ "$s0" != "$s0a" ]; then echo r0 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/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. 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 -vv 2>&1 | wc -l > /tmp/cnt ./mdadm -I $i 2> /tmp/thing wc -l < /tmp/thing > /tmp/cnt # should find container and 2 devices, so 3 lines. [ `cat /tmp/cnt` -eq 3 ] done check nosync 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