#!/bin/bash

DEVICES="/dev/sd[a-f]"
NO_OF_DEVICES=6
ARRAY=/dev/md5
CHUNKS="4 8 16 32 64 128 256 512 1024"
MOUNT=/storage
LOG=/var/log/raid-test.log
LOGDEBUG=/var/log/raid-test-debug.log
LEVEL="0 5 6 10"
TESTFILE=$MOUNT/test.bin
TESTFILESIZE=10000
TRIES=5

echo "| CHUNKS | LEVEL | WRITE | READ |" > $LOG
echo "| CHUNKS | LEVEL | WRITE | READ |" > $LOGDEBUG

for x in $CHUNKS
do
    for y in $LEVEL
    do
        i=0
        READ=0
        WRITE=0
        while [ "$i" -lt $TRIES ]
        do
            umount $MOUNT
            mdadm -S $ARRAY
            mdadm --zero $DEVICES
            yes | mdadm --create $ARRAY --assume-clean --level $y --chunk $x --raid-devices $NO_OF_DEVICES $DEVICES
            sleep 5
            mkfs.xfs $ARRAY -f 2>&1 >> /dev/null
            mount $ARRAY $MOUNT

            TMP_W=`dd if=/dev/zero of=$TESTFILE bs=1M count=$TESTFILESIZE 2>&1 | grep bytes | awk '{ print $8 }' | cut -d "." -f 1`
            WRITE=$(($WRITE+$TMP_W))
            TMP_R=`dd if=$TESTFILE of=/dev/null bs=1M count=$TESTFILESIZE 2>&1 | grep bytes | awk '{ print $8 }' | cut -d "." -f 1`
            READ=$(($READ+$TMP_R))
            printf "%8.0f %7.0f %7.0f %6.0f\n" $x $y $WRITE $READ >> $LOGDEBUG
            ((i++))
        done 
        WRITE=$(($WRITE/$TRIES))
        READ=$(($READ/$TRIES))
        printf "%8.0f %7.0f %7.0f %6.0f\n" $x $y $WRITE $READ >> $LOG
    done
done




