このエントリーをはてなブックマークに追加

DELLサーバのハードウェア RAID カードの状態を取得する方法

DELL サーバのハードウェア RAID カード (SAS6iR) の状態を CentOS 5.3 x86_64 で取得する方法を調査してみてやっとできたのでブログに公開しておきます。

まず、試したサーバは DELL PowerEdge R300 という Xeon L5410 x 1、8GB RAM です。このサーバに DELL 製のハードウェア RAID カードが搭載されています。

いろいろとネット情報の調査したところ、やっとこのブログが見つかりました。まさにピンポイントで、mpt-status コマンドをインストールすればよいみたいでした。

まず、mpt-status をコンパイルするには、カーネルの SRPM が必要なのでダウンロードしてきてインストールします。updates に該当するカーネルがない場合は kernel パッケージをアップグレードしておきます。

$  wget http://mirror.centos.org/centos/5/updates/SRPMS/kernel-`uname -r`.src.rpm

$ sudo rpm -i kernel-`uname -r`.src.rpm

そうすると、/usr/src/redhat/SPECS/kernel-2.6.spec がインストールされます。kernel をビルドするために必要なパッケージをインストールしてからビルドします。

$ sudo yum -y install gcc rpm-build redhat-rpm-config unifdef

$ sudo rpmbuild -bp –target=$(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec

ビルドが終了したら、mpt-status をダウンロードして展開します。

$ wget http://www.drugphish.ch/~ratz/mpt-status/mpt-status-1.2.0.tar.bz2

$ tar jxf mpt-status-1.2.0

mpt-status をビルドするために Makefile を次のように変更します。

— ./Makefile-org      2009-07-13 12:10:14.000000000 +0900
+++ ./Makefile  2009-07-13 12:10:37.000000000 +0900
@@ -4,6 +4,7 @@
KERNEL_PATH_B  := /lib/modules/`uname -r`/build
KERNEL_PATH_S  := /lib/modules/`uname -r`/source
CFLAGS         := -Iincl -Wall -W -O2 \
+                       -I${KERNEL_PATH}/include \
-I${KERNEL_PATH}/drivers/message/fusion \
-I${KERNEL_PATH_B}/drivers/message/fusion \
-I${KERNEL_PATH_S}/drivers/message/fusion

mpt-status をビルドします。

$  make KERNEL_PATH=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.`uname -i`

ビルドしたら、make install して mpt-status コマンドをインストールして modprobe mptctl すれば使えるようになりますが、他にも RAID が組んであるサーバがあったので RPM にしてみました。

mpt-status の配布サイトに昔のバージョンの SRPM があるのでこれをダウンロードしてきて、インストールします。

$  wget http://www.drugphish.ch/~ratz/mpt-status/RPMS/1.1.6/mpt-status-1.1.6-0.el4.src.rpm

$ sudo rpm -i mpt-status-1.1.6-0.el4.src.rpm

インストールされた mpt-status の SPEC ファイルを次のように変更します。

— mpt-status.spec-org 2006-03-08 17:44:30.000000000 +0900
+++ mpt-status.spec     2009-07-13 21:44:32.000000000 +0900
@@ -1,7 +1,7 @@
Summary: MPT Fusion raid inquiry tool
Name: mpt-status
-Version: 1.1.6
-Release: 0.el4
+Version: 1.2.0
+Release: 0
License: GPL
Group: Applications/System
URL: http://www.drugphish.ch/~ratz/mpt-status/
@@ -13,14 +13,18 @@
Source: http://www.drugphish.ch/~ratz/mpt-status/mpt-status-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

+Patch0: mpt-status-makefile.patch
+
%description
mpt-status give informations about raid status for LSI Fusion controllers.
This is quite a modified version to the original mpt-status-1.0 package.
%prep
-%setup
+%setup -q
+
+%patch0 -p1

%build
-%{__make}
+%{__make} KERNEL_PATH=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.%{_arch}

%install
%{__rm} -rf %{buildroot}
@@ -34,8 +38,18 @@
%doc doc/*
%{_sbindir}/mpt-status

+%post
+lsmod | grep mptsas >/dev/null
+if [ “$?” = “0” ]; then
+    echo modprobe mptctl >> /etc/rc.modules
+    chmod +x /etc/rc.modules
+fi
+

mpt-status-makefile.patch というパッチは、さきほど作成した mpt-status の Makefile 用のパッチです。さらに自動的に mpt-status を認識させるために post セクションも追加しています。mpt-status の RPM を作成したらサーバを再起動します。

さっそく、mpt-status を実行してみます。

$ sudo mpt-status

ioc0 vol_id 0 type IM, 2 phy, 465 GB, state OPTIMAL, flags ENABLED
ioc0 phy 1 scsi_id 9 ATA      ST3500320NS      MA08, 465 GB, state ONLINE, flags NONE
ioc0 phy 0 scsi_id 1 ATA      ST3500320NS      MA08, 465 GB, state ONLINE, flags NONE

$ sudo mpt-status -n -s

vol_id:0 OPTIMAL
phys_id:1 ONLINE
phys_id:0 ONLINE
scsi_id:1 100%
scsi_id:0 100%

ちゃんと動いているようです。あとは、実際にホットスワップのハードディスクをファイルオーバーさせて mpt-status の状態がどう変わればよいかをチェックすればよさそうです。

mpt-status.c を見ると、次の状態が定義されています。

  • MISSING
  • NOT_COMPATIBLE
  • FAILED
  • INITIALIZING
  • OFFLINE_REQUESTED
  • FAILED_REQUESTED
  • OTHER_OFFLINE
  • UNKNOWN

念のため、mpt-status の README を読んでおくといいと思います。

あとは、自動的に監視できるように cron や snmp や nagios-nrpe でチェックするのがいいと思います。

ハードウェア RAID も壊れることがあるので、どのメーカーのハードウェア RAID を使っていてもちゃんと監視するように設定したいものです。

他にも DELL から提供されている OMSA (Open Manage Server Administrator) というパッケージを使うとできるらしいのですが、CentOS 5.3 x86_64 ではインストールすることができませんでした。

3 Comments

Comments are closed.