diff options
Diffstat (limited to 'sysutils/linux-megacli2/files/407.status-mfi-raid.in')
-rw-r--r-- | sysutils/linux-megacli2/files/407.status-mfi-raid.in | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/sysutils/linux-megacli2/files/407.status-mfi-raid.in b/sysutils/linux-megacli2/files/407.status-mfi-raid.in deleted file mode 100644 index 7cc22298aa9c..000000000000 --- a/sysutils/linux-megacli2/files/407.status-mfi-raid.in +++ /dev/null @@ -1,230 +0,0 @@ -#!/bin/sh -# -# Show status of LSI Logic's MegaRAID SAS RAID controllers. -# -# $FreeBSD$ -# - -# If there is a global system configuration file, suck it in. -# -if test -r /etc/defaults/periodic.conf; then - . /etc/defaults/periodic.conf - source_periodic_confs -fi - -# Defaults. -: ${daily_status_mfi_raid_enable:=NO} -: ${daily_status_mfi_raid_verbose:=NO} -: ${daily_status_mfi_raid_persist_logs:=YES} - -megacli=${megacli:-%%PREFIX%%/sbin/megacli} -logdir=${logdir:-/var/log} - -case "$daily_status_mfi_raid_enable" in - [Yy][Ee][Ss]) - echo - echo 'Checking status of MFI RAID controllers:' - ;; - *) - exit 0 - ;; -esac - -if test `id -u` -ne 0; then - echo "You must be root to run `basename $0`." >&2 - exit 1 -fi - -ADPCOUNT=$(${megacli} -adpCount | \ - awk '/Controller Count:/ { gsub("\\.", ""); print $3 }') - -case ${ADPCOUNT} in - 0) echo "Error: Cannot find an adapter." >&2 - exit 1 - ;; - [1-9]|[1-9][0-9]|[1-2][0-9][0-9]) - ;; - *) - echo "Error: Cannot get the number of adapters: ${ADPCOUNT}" >&2 - exit 1 - ;; -esac - -ADPMINIDX=0 -ADPMAXIDX=`expr ${ADPCOUNT} - 1` - -rc=0 -for ctrl in `jot ${ADPCOUNT} ${ADPMINIDX} ${ADPMAXIDX}`; do - echo "Adapter: ${ctrl}" - - # Print summary information. - echo "------------------------------------------------------------------------" - echo "Physical Drive Information:" - echo "ENC SLO DEV SEQ MEC OEC PFC LPF STATE" - ${megacli} -PDList -a${ctrl} | \ - awk ' - BEGIN { - E=-1; S=-1; D=-1; s=-1; mec=-1; oec=-1; pfc=-1; lpfeqn=-1; - state=""; - } - /^Enclosure (Number|Device ID):/ { E=$3; } - /^Slot Number:/ { S=$3; } - /^Device Id:/ { D=$3; } - /^Sequence Number:/ { s=$3; } - /^Media Error Count:/ { mec=$4; } - /^Other Error Count:/ { oec=$4; } - /^Predictive Failure Count:/ { pfc=$4; } - /^Last Predictive Failure Event Seq Number:/ { lpfeqn=$7 } - /^Firmware state:/ { state=$3; } - /^$/ { - if (E!=-1 && S!=-1 && D!=-1) { - printf "%-3d %-3d %-3d %-3d %-3d %-3d %-3d %-3d %s\n", - E, S, D, s, mec, oec, pfc, lpfeqn, state; - } - E=-1; S=-1; D=-1; s=-1; mec=-1; oec=-1; pfc=-1; lpfeqn=-1; - state=""; - } - ' | sort -n -k1 -k2 -k3 - echo - echo "Virtual Drive Information:" - ${megacli} -LDInfo -lall -a${ctrl} | \ - awk ' - BEGIN { - drvs=-1; vd=-1; state=""; name=""; s=-1; strs=-1; - rlp=-1; rls=-1; rlq=-1; - printf "VD DRV RLP RLS RLQ STS SIZE STATE NAME\n"; - } - /^Name:/ { sub("^Name:", ""); name=$0; } - /^RAID Level:/ { - #Primary-1, Secondary-0, RAID Level Qualifier-0 - _p=_s=_q=$0; - sub(".*Primary-", "", _p); - sub(", Secondary.*", "", _p); - rlp=_p; - sub(".*Secondary-", "", _s); - sub(", RAID Level.*", "", _s); - rls=_s; - sub(".*Qualifier-", "", _q); - rlq=_q; - } - /^Size:/ { sub("^Size:", ""); s=$0; } - /^State:/ { state=$2; } - /^Stripe Size:/ { strs=$3; } - /^Number Of Drives:/ { sub("Drives:", "", $3); drvs=$3; } - /^Virtual Disk:/ { - if (vd!=-1) { - printf "%-3d %-3d %-3d %-3d %-3d %-6s %-11s %-13s %s\n", - vd, drvs, rlp, rls, rlq, strs, s, state, name; - } - drvs=-1; vd=-1; state=""; name=""; s=-1; strs=-1; - rlp=-1; rls=-1; rlq=-1; - vd=$3; - } - END { - if (vd!=-1) { - printf "%-3d %-3d %-3d %-3d %-3d %-6s %-11s %-13s %s\n", - vd, drvs, rlp, rls, rlq, strs, s, state, name; - } - } - ' - # Print BBU Information, if we found something - ${megacli} -AdpBbuCmd -a${ctrl} | \ - awk ' - BEGIN { - type=""; temp=-1; isok="-"; rsoc=-1; asoc=-1; - rc=-1; cc=-1; me=-1; - } - /^BatteryType:/ { type=$2; } - /^Temperature:/ { temp=$2; } - /^isSOHGood:/ { isok=$2; } - /^Relative State of Charge:/ { rsoc=$5; } - /^Absolute State of charge:/ { asoc=$5; } - /^Remaining Capacity:/ { rc=$3; } - /^Cycle Count:/ { cc=$3; } - /^Max Error:/ { me=$3; } - END { - if (type == "") { exit 0 }; - printf "\nBBU Information:\n" - printf "TYPE TEMP OK RSOC ASOC RC CC ME\n"; - printf "%-5s %2dC %-3s %4d%% %4d%% %4dmAh %4d %2d%%\n", - type, temp, isok, rsoc, asoc, rc, cc, me; - - } - ' - echo - - # Give very long outputs. - case "$daily_status_mfi_raid_verbose" in - [Yy][Ee][Ss]) - ${megacli} -AdpAllInfo -a${ctrl} - ${megacli} -EncInfo -a${ctrl} - ${megacli} -PDList -a${ctrl} - ${megacli} -LDGetNUm -a${ctrl} - ${megacli} -LDInfo -Lall -a${ctrl} - ${megacli} -AdpBbuCmd -GetBbuStatus -a${ctrl} - ;; - *) - ;; - esac - - # Diff daily logs. - echo "Controller Logs:" - ctrl_log=${logdir}/mfi_raid_${ctrl} - case "$daily_status_mfi_raid_persist_logs" in - [Yy][Ee][Ss]) - if test ! -f ${ctrl_log}.today; then - touch ${ctrl_log}.today - fi - mv -f ${ctrl_log}.today ${ctrl_log}.yesterday - ;; - *) - ;; - esac - ${megacli} -AdpEventLog -GetEvents -f ${ctrl_log}.tmp -a${ctrl} - awk ' - BEGIN { - inrecord=0; - } - printed=0; - /^seqNum: / { - inrecord=0; - print ""; - print "====================================" \ - "===================================="; - } - /^Event Data:/ { inrecord=1; printed=1; } - /^seqNum: /, /^Event Data:/ - /^===========/ { printed=1; } - /^$/ { printed=1; } - { if (inrecord && !printed) { printf "\t%s\n", $0; } } - ' < ${ctrl_log}.tmp > ${ctrl_log}.today - rm -f ${ctrl_log}.tmp - # Now show the differences or the entire log. - case "$daily_status_mfi_raid_persist_logs" in - [Yy][Ee][Ss]) - cmp -s ${ctrl_log}.yesterday ${ctrl_log}.today - raid_rc=$? - if test $raid_rc -ne 0; then - diff -u ${ctrl_log}.yesterday ${ctrl_log}.today | \ - grep -v '^-\|^$' - fi - ;; - *) - # XXX we might consider clearing the logs here - # ${megacli} -AdpEventLog -Clear -a${ctrl} - raid_rc=0 - lines=`wc -l ${ctrl_log}.today | awk '{ print $1 }'` - if test $lines -gt 4; then - cat ${ctrl_log}.today - raid_rc=1 - fi - esac - if test $raid_rc -eq 0; then - echo " No new log messages." - fi - [ $rc -eq 0 ] && [ $raid_rc -ne 0 ] && rc=3 -done - -exit ${rc} - -# end |