diff options
author | NeilBrown <neilb@suse.de> | 2009-04-14 10:19:05 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-04-14 10:19:05 +1000 |
commit | 8ab2924c65bddce2b110275350ac519f9b0b5964 (patch) | |
tree | a7521f0bfe5a5c2590bb327dda51ee551101fb7a /tests | |
parent | 6161a7a0161a1d40afa704f3d62deef313c3cce5 (diff) |
tests: add some simple data integrity tests for raid5/raid6
Make sure the data is preserved even when the array is degraded.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/01r5integ | 29 | ||||
-rw-r--r-- | tests/01raid6integ | 53 |
2 files changed, 82 insertions, 0 deletions
diff --git a/tests/01r5integ b/tests/01r5integ new file mode 100644 index 00000000..714a57fb --- /dev/null +++ b/tests/01r5integ @@ -0,0 +1,29 @@ + +# Check integrity of raid5 in degraded mode +# Create a 4 disk raid5, create a filesystem and +# sh1sum it with each device failed + +for layout in ls rs la ra +do + mdadm -CR $md0 -l5 --layout $layout -n4 $dev0 $dev1 $dev2 $dev3 + check wait + tar cf - /etc > $md0 + sum=`sha1sum $md0` + + for i in $dev0 $dev1 $dev2 $dev3 + do + mdadm $md0 -f $i + mdadm $md0 -r $i + blockdev --flushbufs $md0 + sum1=`sha1sum $md0` + if [ $sum != $sum1 ] + then + echo $sum does not matc $sum1 with $i missing + exit 1 + fi + mdadm $md0 -a $i + check wait + done + mdadm -S $md0 +done + diff --git a/tests/01raid6integ b/tests/01raid6integ new file mode 100644 index 00000000..ed7cec57 --- /dev/null +++ b/tests/01raid6integ @@ -0,0 +1,53 @@ + +# Check integrity of raid6 in degraded modes +# Create a 5 disk raid6, dump some data to it, then +# sh1sum it with different pairs of devices failed + +layouts='ls rs la ra' +lv=`uname -r` +if expr $lv '>=' 2.6.30 > /dev/null +then + layouts="$layouts parity-first dd-zero-restart ddf-N-restart ddf-N-continue \ + left-asymmetric-6 right-asymmetric-6 left-symmetric-6 right-symmetric-6 parity-first-6" +fi +echo $layouts +for layout in $layouts +do + mdadm -CR $md0 -l6 --layout $layout -n5 $dev0 $dev1 $dev2 $dev3 $dev4 + check wait + tar cf - /etc > $md0 + sum=`sha1sum $md0` + + totest= + for second in $dev0 $dev1 $dev2 $dev3 $dev4 + do + mdadm $md0 -f $second + mdadm $md0 -r $second + blockdev --flushbufs $md0 + sum1=`sha1sum $md0` + if [ $sum != $sum1 ] + then + echo $sum does not matc $sum1 with $second missing + exit 1 + fi + for first in $totest + do + mdadm $md0 -f $first + mdadm $md0 -r $first + blockdev --flushbufs $md0 + sum1=`sha1sum $md0` + if [ $sum != $sum1 ] + then + echo $sum does not matc $sum1 with $first and $second missing + exit 1 + fi + mdadm $md0 -a $first + check wait + done + mdadm $md0 -a $second + check wait + totest="$totest $second" + done + mdadm -S $md0 +done + |