站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

MptStatus-查看 SAS 6iR RAID Controller 狀態

前言

由於 MegaCLI 只能查看 PERC xi 系列的 LSI RAID Controller,而此次採購的伺服器其 LSI RAID Controller 為 SAS 6iR 所以找了一下網路,發現有人寫了工具 [Ratz mpt-status] 可以在文字模式 (Command Line) 下很方便的查看目前 RAID 及 HDD 狀態。

實作環境

安裝及設定

步驟1.下載 mpt-status 及 kernal source rpm

[Ratz Web Site] 下載 mpt-status-1.2.0.tar.gz

 #wget http://www.drugphish.ch/~ratz/mpt-status/mpt-status-1.2.0.tar.gz

[CentOS Mirror Site] 下載 kernel-2.6.18-92.1.22.el5.src.rpm

 #wget http://mirror.centos.org/centos/5/updates/SRPMS/kernel-2.6.18-92.1.22.el5.src.rpm

步驟2.安裝相依套件

在安裝 kernel Source rpm 及 mpt-status 前我們先檢查系統是不是有安裝等一下會用到的相依性套件,沒有的話就利用 YUM 來安裝,後續的安裝動作才不會中斷。

 #yum -y install gcc rpm-build redhat-rpm-config unifdef

步驟3.建立安裝 kernel Source rpm 的使用者

建立待會需要用來安裝 kernel Source rpm 的使用者帳號,如下指令為建立 mockbuild 使用者帳號於 /home/user 下.

 #adduser -d /home/user/mockbuild mockbuild

步驟4.安裝 kernel Source rpm

利用 rpm 指令來安裝 kernel Source rpm

 #rpm -ivh kernel-2.6.18-92.1.22.el5.src.rpm
 1:kernel                 ########################################### [100%]

步驟5.建立 mpt-status rpm 環境

因為 mpt-status-1.2.0.tar.gz 是 Source Tarball with spec file 所以我們必須利用指令 rpmbuild 來建立 rpm 環境

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

步驟6.安裝 mpt-status

解壓縮 mpt-status

 #tar zxvf mpt-status-1.2.0.tar.gz

在執行 make 指令以前,我們先修改 mpt-status 的 Makefile,讓 mpt-status 能正確找到 /usr/src/redhat/SPECS/kernel-2.6.spec 中的檔案

 #cd mpt-status-1.2.0
 #vi Makefile
 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

執行 make 指令

 #make KERNEL_PATH=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64
 gcc  -Iincl -Wall -W -O2 -I/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/include -I/usr/src/redhat/BUILD/kernel-2.6.18/ \
 linux-2.6.18.x86_64/drivers/message/fusion -I/lib/modules/`uname -r`/build/drivers/message/fusion -I/lib/modules/`uname -r`/source/ \
 drivers/message/fusion -o mpt-status mpt-status.c

執行 make install 指令

 #make install
 install -D -s -o root -g root -m 0500 mpt-status \
                /usr/sbin

步驟7.載入 mptctl 至 kernel

安裝 mpt-status 後會發現並無法使用 (因為此時 kernel 未載入 mptctl),我們可以利用下列指令來讓系統載入 mptctl 至 Kernel 中

 #echo modprobe mptctl >> /etc/rc.modules
 #chmod +x /etc/rc.modules
 #sync;sync;sync;reboot

步驟8.開始使用 mpt-status

重開機後系統應該載入 mptctl 至 kernel 中,因此我們可以開始使用 mpt-status 了.

 #mpt-status -n -s
 vol_id:0 OPTIMAL
 phys_id:1 ONLINE
 phys_id:0 ONLINE
 scsi_id:1 100%
 scsi_id:0 100%

參考

[Dell™ PowerEdge™ 1950 Document]

[戴爾 PowerEdge 1950 III 伺服器産品詳細資料]

[Dell™ SAS RAID Storage Manager User Guide]

[Dell Perc6/i RAID Monitoring Script using MegaCli (LSI) on CentOS 5.2 - 64 bits | BXTra.net]

[LSIMegaRAIDSAS – HWraid]

[LSISAS1068E : SAS ICs : Standard Product ICs : Products : Storage : LSI]

[MegaRAID Storage Manager (MSM) Installation]

[Index of /centos/5/updates/SRPMS]

[LSI MegaCli and SAS6/iR in PowerEdge R200]

[RHEL 5.2 (CentOS) and the LSI / Symbios Logic SAS1068E Checking RAID Status]

[Building mpt-status for CentOS 5.2 « Ben’s Place]

[Blog O’ Matty » Blog Archive » Monitoring LSI Logic RAID controllers]

[Red Hat Enterprise Linux 4 System Administration Guide - Persistent Module Loading]

Me FAQ

Q1.gcc: command not found ?

Error Meaage:

執行 make 指令要產生 mpt-status 編譯 (compiler) 相關檔案時發生如下錯誤訊息

 #cd cd mpt-status-1.2.0
 #make
 gcc  -Iincl -Wall -W -O2 -I/usr/src/linux/drivers/message/fusion -I/lib/modules/`uname -r`/build/drivers/message/fusion -I/lib/modules
 /`uname -r`/source/drivers/message/fusion -o mpt-status mpt-status.c /bin/sh: 
 gcc: command not found
 make: *** [mpt-status] Error 127

Ans:

系統沒有安裝 gcc 套件所以無法編譯 (compiler),安裝完 gcc 後便可順利編譯

 #yum -y install gcc

Q2.linux/compiler.h: No such file or directory ?

Error Meaage:

安裝完 gcc 後似乎可以順利編譯 (compiler) 了,但跑了一下出現如下錯誤訊息

 #make
 gcc  -Iincl -Wall -W -O2 -I/usr/src/linux/drivers/message/fusion -I/lib/modules/`uname -r`/build/drivers/message/fusion -I/lib/modules
 /`uname -r`/source/drivers/message/fusion -o mpt-status mpt-status.c
 In file included from mpt-status.c:38:
 mpt-status.h:6:28: error: linux/compiler.h: No such file or directory
 mpt-status.h:19:26: error: lsi/mpi_type.h: No such file or directory
 ...略
 make: *** [mpt-status] Error 1

Ans:

因為 mpt-status-1.2.0.tar.gz 是 Source Tarball with spec file 所以我們必須利用指令 rpmbuild 來建立 rpm 環境

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

在執行 make 指令以前,我們先修改 mpt-status 的 Makefile,讓 mpt-status 能正確找到 /usr/src/redhat/SPECS/kernel-2.6.spec 中的檔案

 #cd mpt-status-1.2.0
 #vi Makefile
 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

執行 make 指令

 #make KERNEL_PATH=/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64
 gcc  -Iincl -Wall -W -O2 -I/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64/include -I/usr/src/redhat/BUILD/kernel-2.6.18/ \
 linux-2.6.18.x86_64/drivers/message/fusion -I/lib/modules/`uname -r`/build/drivers/message/fusion -I/lib/modules/`uname -r`/source/ \
 drivers/message/fusion -o mpt-status mpt-status.c

Q3.warning: group mockbuild does not exist - using root ?

Error Meaage:

無法安裝 kernel source rpm 檔案並出現如下錯誤訊息

 #rpm -ivh kernel-2.6.18-92.1.22.el5.src.rpm
 warning: group mockbuild does not exist - using root

Ans:

建立用來安裝 kernel source rpm 的帳號後便可順利安裝

 #adduser -d /home/user/mockbuild mockbuild
 #rpm -ivh kernel-2.6.18-92.1.22.el5.src.rpm
  1:kernel                 ########################################### [100%]

Q4.redhat-rpm-config is needed by kernel-2.6.18-92.1.22.el5.x86_64

Error Meaage:

執行 rpmbuild 指令時出現如下錯誤訊息

 #rpmbuild -bp --target=$(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec
 Building target platforms: x86_64
 Building for target x86_64
 error: Failed build dependencies:
        redhat-rpm-config is needed by kernel-2.6.18-92.1.22.el5.x86_64
        unifdef is needed by kernel-2.6.18-92.1.22.el5.x86_64

Ans:

系統需要安裝 kernel source rpm 的相依套件 redhat-rpm-config 及 unifdef,安裝完成後便可順利執行 rpmbuild 指令

 #yum -y install redhat-rpm-config unifdef

Q5.open /dev/mptctl: No such file or directory

Error Meaage:

安裝 mpt-status 完成後執行指令出現如下錯誤訊息

 #/usr/sbin/mpt-status
 open /dev/mptctl: No such file or directory
    Try: mknod /dev/mptctl c 10 220
 Make sure mptctl is loaded into the kernel

Ans:

查看後發現 /dev 下並沒有 mptctl 檔案,試了指令 mknod /dev/mptctl c 10 220 後雖然成功建立該檔案不過還是出現如下訊息

 ##/usr/sbin/mpt-status
 open /dev/mptctl: No such device
   Are you sure your controller is supported by mptlinux?
 Make sure mptctl is loaded into the kernel

問題的重點在於錯誤訊息的最後一行,也就是 mptctl 並未載入至 kernel 中執行下列指令並重開機後便可順利執行 mpt-status 指令了

 #echo modprobe mptctl >> /etc/rc.modules
 #chmod +x /etc/rc.modules
 #sync;sync;sync;reboot
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com