Нашёл в рассылке неплохой скрипт для проверки жёстких дисков на ошибки. Недостатки скрипта в том, что он даёт поверхностную информацию. Более полную можно вытащить из вывода команды
$ kstat -pm sderr
Скрипт ниже.
#!/bin/bash
# check disk in all pools for errors.
# partially failing (or slow) disks
# may result in horribly degradded
# performance of zpools despite the fact
# the pool is still healthy
# exit codes
# 0 OK
# 1 WARNING
# 2 CRITICAL
# 3 UNKONOWN
OUTPUT=""
WARNING="0"
CRITICAL="0"
SOFTLIMIT="5"
HARDLIMIT="20"
LIST=$(zpool status | grep "c[0-9].*d0 " | awk '{print $1}')
for DISK in $LIST
do
ERROR=$(iostat -enr $DISK | cut -d "," -f 4 | grep "^[0-9]")
if [[ $ERROR -gt $SOFTLIMIT ]]
then
OUTPUT="$OUTPUT, $DISK:$ERROR"
WARNING="1"
fi
if [[ $ERROR -gt $HARDLIMIT ]]
then
OUTPUT="$OUTPUT, $DISK:$ERROR"
CRITICAL="1"
fi
done
if [[ $CRITICAL -gt 0 ]]
then
echo "CRITICAL: Disks with error count >= $HARDLIMIT found: $OUTPUT"
exit 2
fi
if [[ $WARNING -gt 0 ]]
then
echo "WARNING: Disks with error count >= $SOFTLIMIT found: $OUTPUT"
exit 1
fi
echo "OK: No significant disk errors found"
exit 0
2 коментарі “Мониторинг жёстких дисков в Solaris без SMART’a”
в строке
LIST=$(zpool status | grep “c[1-9].*d0 ” | awk ‘{print $1}’)
надо испаравить 1 на 0
grep “c[0-9].*d0 “
Спасибо, исправил.