# # Test various RAID geometries, creation and deletion of subarrays # assert_fail() { if mdadm "$@"; then echo mdadm "$@" must fail return 1 else return 0 fi } assert_kill() { local dev=$1 n=$2 mdadm -S $dev mdadm --kill-subarray=$n /dev/md/ddf0 if mdadm -Dbs | grep -q $dev; then echo >&2 $dev should be deleted return 1 fi return 0 } set -e mdadm -CR /dev/md/ddf0 -e ddf -n 6 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13 # RAID1 geometries # Use different sizes to make offset calculation harder mdadm -CR l1s -l1 -n2 /dev/md/ddf0 -z 8000 mdadm -CR l1m -l1 -n3 $dev8 $dev9 $dev10 -z 10000 assert_fail -CR badl1 -l1 -n4 /dev/md/ddf0 # RAID10 geometries mdadm -CR l10_0 -l10 -n3 /dev/md/ddf0 -z 1000 mdadm -CR l10_1 -l10 -n5 /dev/md/ddf0 -z 1000 assert_fail mdadm -CR badl10 -l10 -n4 -pn3 /dev/md/ddf0 mdadm -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 4000 mdadm -CR l10_3 -l10 -n6 -pn3 /dev/md/ddf0 -z 4000 assert_fail -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 assert_kill /dev/md/l10_2 4 # gone now, must be able to create it again mdadm -CR l10_2 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 # Now stop and reassemble mdadm -Ss mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13 # Same as above, on inactive container assert_fail -CR l10_3 -l10 -n6 -pn2 /dev/md/ddf0 -z 5000 # Kill subarray without having started anything (no mdmon) mdadm --kill-subarray=5 /dev/md/ddf0 mdadm -I /dev/md/ddf0 mdadm -CR l10_3 -l10 -n6 -pn3 /dev/md/ddf0 -z 5000 assert_kill /dev/md/l10_2 4 assert_kill /dev/md/l10_3 5 # RAID5 geometries mdadm -CR l5la -l5 -n3 --layout=ddf-N-restart /dev/md/ddf0 -z 5000 mdadm -CR l5ra -l5 -n3 --layout=ddf-zero-restart /dev/md/ddf0 -z 5000 mdadm -CR l5ls -l5 -n3 --layout=ddf-N-continue /dev/md/ddf0 -z 5000 assert_fail -CR l5rs -l5 -n3 -prs /dev/md/ddf0 -z 5000 # Stop and reassemble mdadm -Ss mdadm -A /dev/md/ddf0 $dev8 $dev9 $dev10 $dev11 $dev12 $dev13 mdadm -I /dev/md/ddf0 assert_kill /dev/md/l5la 4 assert_kill /dev/md/l5ls 6 assert_kill /dev/md/l5ra 5 # RAID6 geometries assert_fail -CR l6la -l6 -n3 -pla /dev/md/ddf0 -z 5000 assert_fail -CR l6rs -l5 -n4 -prs /dev/md/ddf0 -z 5000 mdadm -CR l6la -l6 -n4 --layout=ddf-N-restart /dev/md/ddf0 -z 5000 mdadm -CR l6ra -l6 -n4 --layout=ddf-zero-restart $dev8 $dev9 $dev10 $dev11 -z 5000 mdadm -CR l6ls -l6 -n4 --layout=ddf-N-continue $dev13 $dev8 $dev9 $dev12 -z 5000 mdadm -Ss