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 ではインストールすることができませんでした。
Tags: dell infra