1、前言
由於 MegaCLI 只能查看 PERC xi 系列的 LSI RAID Controller,而此次採購的伺服器其 LSI RAID Controller 為 SAS 6iR 所以找了一下網路,發現有人寫了工具 Ratz mpt-status 可以在文字模式 (Command Line) 下很方便的查看目前 RAID 及 HDD 狀態。文章目錄
1、前言2、實作環境
3、安裝及設定
步驟1.下載 mpt-status 及 kernal source rpm
步驟2.安裝相依套件
步驟3.建立安裝 kernel Source rpm 的使用者
步驟4.安裝 kernel Source rpm
步驟5.建立 mpt-status rpm 環境
步驟6.安裝 mpt-status
步驟7.載入 mptctl 至 kernel
步驟8.開始使用 mpt-status
4、參考
5、Me FAQ
Q1.gcc: command not found ?
Q2.linux/compiler.h: No such file or directory ?
Q3.warning: group mockbuild does not exist - using root ?
Q4.redhat-rpm-config is needed by kernel-2.6.18-92.1.22.el5.x86_64?
Q5.open /dev/mptctl: No such file or directory?
2、實作環境
- CentOS 5.2 64 bit (Linux 2.6.18-92.el5)
- Dell PowerEdge 1950
- Dell RAID Controller SAS 6i/R (SAS1068E)
- scsi0 : LSISAS1068E
- SAS HDD 146 G * 2 (Build RAID-1)
- kernel-2.6.18-92.1.22.el5.src.rpm
- mpt-status-1.2.0.tar.gz (Source Tarball with spec file)
3、安裝及設定
步驟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 來安裝,後續的安裝動作才不會中斷。- gcc:compiler mpt-status 需要用到。
- rpm-build:因為 mpt-status 沒有提供 rpm 所以我們要自行建立 mpt-status rpm。
- redhat-rpm-config:kernel Source rpm 相依套件。
- unifdef:kernel Source rpm 相依套件。
# 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%
4、參考
- Dell™ PowerEdge™ 1950 Document
- 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
- 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
5、Me FAQ
Q1.gcc: command not found ?
Error Message:執行 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 Message:安裝完 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 Message:無法安裝 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 Message:執行 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 Message:安裝 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