IT Rescue IT関連Tips情報

さくらインターネット専用サーバのRAID監視

2012年6月21日サーバ管理

さくらインターネットの専用サーバでRAIDの状態を監視するシェルスクリプトの例を紹介します。
専用サーバのモデル・世代によって採用されているRAIDコントローラが異なります。RAIDコントローラ毎に異なるスクリプトを用意しています。

* 2012年6月現在提供されている「エクスプレスシリーズ」の場合

このサーバはHPの ProLiant DL170e G6 というハードウェアでRAIDコントローラには Smart Array P410 が使用されています。Smarty Array RAIDコントローラの情報取得・設定は hpacucli コマンドで可能です。以下のようなシェルスクリプトを使用しています。

#!/bin/sh
PATH=/bin:/usr/sbin:/usr/bin
export PATH
ALERTTO=admin@example.com

cmd=$(basename $0)

function getstatus () {
  hpacucli ctrl slot=1 show config | \
   grep "logicaldrive" | \
   awk -F "," '{print $3}' |
   tr -d " )"
}

raidstatus=$(getstatus)
logger -t "[$cmd]" "RAID $raidstatus"
if [ "X$raidstatus" != "XOK" ]; then
  hpacucli ctrl slot=1 show config | \
   egrep "[logical|physical]drive" | \
   sed 's/^[ ]*//' | logger -t "[$cmd]"
   host=$(hostname)
   mail -s "RAID Alert : $host" $ALERTTO << EOF
RAID Status is *NOT* Good.

hpacucli commands reports :
====================================
`hpacucli ctrl slot=1 show config`
EOF
fi

exit 0

* さくら専用サーバの第2世代でアドバンスドプラン 富士通サーバの場合

このプランでは富士通の「PRIMERGY RX100 S6」が採用されています。RAIDコントローラは dmesg の出力では「 LSI       Model: MegaRAID SAS RMB」と出ました。情報取得・設定は /opt/MegaRAID/MegaCli/MegaCli というコマンドで可能です。以下のようなスクリプトを使用しています。

#!/bin/sh
PATH=/bin:/usr/bin:/opt/MegaRAID/MegaCli/
export PATH
ALERTTO=admin@example.com

raidstatus=$(MegaCli -LDInfo -Lall -aALL |grep ^State|awk -F : '{print $2}'|tr -d " " | tr '[:lower:]' '[:upper:]')

logger -t "[MegaCli]" "RAID $raidstatus"
if [ X$raidstatus != "XOPTIMAL" ] ; then
host=$(hostname)
mail -s "RAID Alert : $host" $ALERTTO <RAID Status is *NOT* Good.

MegaCLI commands reports:
$(MegaCli -LDInfo -Lall -aALL)
EOF
fi

exit 0

* さくら専用サーバの第2世代でRAIDプランの場合
このプランはさくらインターネット独自ハードウェアのサーバです。RAIDコントローラには 3ware 9650SE-2LP が使用されています。このRAIDコントローラは /usr/local/bin/tw_cli により情報取得が可能です。以下のスクリプトを使用しています。

#!/bin/sh

ALERTTO=admin@example.com
CNUM=c0

PATH=/usr/local/bin:/bin:/usr/bin
export PATH

raidstatus=`tw_cli info $CNUM unitstatus |grep "RAID-1" |awk '{print $3}'| tr '[:lower:]' '[:upper:]'`

logger -t "[tw_cli]" "RAID $raidstatus"
if [ X$raidstatus = "XDEGRADED" -o X$raidstatus = "XINOPERABLE" ]; then
  tw_cli info $CNUM |grep -v ^- |grep -v ^$ | logger -t "[tw_cli]"
  host=`hostname`
  mail -s "RAID Alert : $host" $ALERTTO << EOF
RAID Status is *NOT* Good.

tw_cli commands reports :
====================================
`tw_cli info $CNUM`
EOF
fi

exit 0

* 上記のスクリプトを /etc/cron.hourly/ に実行属性を付けて放り込んでおけば1時間ごとにRAIDの状態を確認して syslog 経由で /var/log/messages に記録してくれます。障害が発生した場合はログに記録すると共に ALERTTO 宛てにメールを送信します。

警告メールが届いたらさくらのサポートに連絡してディスク交換を手配します。
http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?QID=000494


コメントをどうぞ

免責事項

著作権者の文書による承諾を得ずに、本サイトの内容の一部、全部を無断で複写、複製、転載することは、禁じられています。
また、当ウェブサイト に記載された情報の完全性・正確性に対して一切の保証を与えるものではありません。当ウェブサイトに含まれる情報もしくは内容を利用することで直接・間接的に生じた損失に関し一切責任を負わないものとします。