日期:2014-05-16 浏览次数:21417 次
#!/bin/sh
#$1    md device
#exit 1 scsi1 disk is faulty
#exit 2 scsi2 disk is faulty
#exit 0
disks=`ls /sys/block/$1/md | grep dev-sd*`
gotfaulty(){
    for i in $disks
    do
        if $(grep faulty /sys/block/$1/md/$i/state > /dev/null)
        then
            bad=`echo $i | awk 'BEGIN {FS="-"} {print $2}'`
            if [ -e /sys/bus/scsi/devices/0\:0\:0\:0/block\:sd*/$bad ]
            then
                exit 1
            else
                exit 2
            fi
        fi
    done
    exit 0
}
#No faulty disk found, faulty disk has been removed
nofaulty(){
    for i in $disks
    do
        if $(grep in_sync /sys/block/$1/md/$i/state > /dev/null)
        then
            good=`echo $i | awk 'BEGIN {FS="-"} {print $2}'`
            if [ -e /sys/bus/scsi/devices/0\:0\:0\:0/block\:sd*/$good ]
            then
                exit 2
            else
                exit 1
            fi
        fi
    done
}
if [ $2 == "no" ]
then
    nofaulty $1
else
    gotfaulty $1
fi
if [ -e /sys/bus/scsi/devices/0\:0\:0\:0/block\:sd*/$bad ]