Solstice DiskSuite 4.2.1 ユーザーズガイド

メタデバイス内のスライスエラーのチェックを自動化する方法 (コマンド行)

メタデバイス内の不良スライスを連続して自動的にチェックする 1 つの方法は、cron によって呼び出されるスクリプトを記述する方法です。次にその例を示します。


#
#ident "@(#)metacheck.sh   1.3     96/06/21 SMI"
#
# Copyright (c) 1992, 1993, 1994, 1995, 1996 by Sun Microsystems, Inc.
#
 
#
# DiskSuite コマンド
#
MDBIN=/usr/sbin
METADB=${MDBIN}/metadb
METAHS=${MDBIN}/metahs
METASTAT=${MDBIN}/metastat
 
#
# システムコマンド
#
AWK=/usr/bin/awk
DATE=/usr/bin/date
MAILX=/usr/bin/mailx
RM=/usr/bin/rm
 
#
# 初期化
#
eval=0
date=`${DATE} '+%a %b %e %Y'`
SDSTMP=/tmp/sdscheck.${$}
${RM} -f ${SDSTMP}
 
MAILTO=${*:-"root"}			# default to root, or use arg list
 
#
# 複製の障害をチェック。フラグ内の大文字はエラーを示す。
#
dbtrouble=`${METADB} | tail +2 | ¥
    ${AWK} '{ fl = substr($0,1,20); if (fl ‾ /[A-Z]/) print $0 }'`
if [ "${dbtrouble}" ]; then
        echo ""   >>${SDSTMP}
        echo "SDS replica problem report for ${date}"	>>${SDSTMP}
        echo ""   >>${SDSTMP}
        echo "Database replicas are not active:"     >>${SDSTMP}
        echo ""   >>${SDSTMP}
        ${METADB} -i >>${SDSTMP}
        eval=1
fi
 
#
# メタデバイスの状態をチェック。状態が正常でない場合、何かが発生。
#
mdtrouble=`${METASTAT} | ¥
    ${AWK} '/State:/ { if ( $2 != "Okay" ) print $0 }'`
if [ "${mdtrouble}" ]; then
        echo ""  >>${SDSTMP}
        echo "SDS metadevice problem report for ${date}"  >>${SDSTMP}
        echo ""  >>${SDSTMP}
        echo "Metadevices are not Okay:"  >>${SDSTMP}
        echo ""  >>${SDSTMP}
        ${METASTAT} >>${SDSTMP}
        eval=1
fi
 
#
# ホットスペアが使用されているかどうかをチェック。
#
hstrouble=`${METAHS} -i | ¥
    ${AWK} ' /blocks/ { if ( $2 != "Available" ) print $0 }'`
if [ "${hstrouble}" ]; then
        echo ""  >>${SDSTMP}
        echo "SDS Hot spares in use  ${date}"  >>${SDSTMP}
        echo ""  >>${SDSTMP}
        echo "Hot spares in usage:"  >>${SDSTMP}
        echo ""  >>${SDSTMP}
        ${METAHS} -i >>${SDSTMP}
        eval=1
fi
#
# 何かのエラーが発生した場合、ルート、またはコマンド行で指定された相手に
# レポートをメールする。
#
if [ ${eval} -ne 0 ]; then
        ${MAILX} -s "SDS problems ${date}" ${MAILTO} <${SDSTMP}
        ${RM} -f ${SDSTMP}
fi
 
exit ${eval}

このようにスクリプトを呼び出す方法については、cron(1M) のマニュアルページを参照してください。


注 -

このスクリプトは、DiskSuite のエラーチェックを自動化するための出発点として利用できます。このスクリプトは、使用する構成に合わせて変更する必要があります。