以 MegaCLI 指令查看 PERC 5i RAID Controller 狀態

1、前言

使用 SAS MegaRAID Linux MegaCLI 可以在文字模式 (Command Line) 下很方便的查看目前 RAID 及 HDD 狀態。






文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.下載 MegaCli (擇一下載即可)
          步驟2.安裝 MegaCli RPM (對照剛才下載的版本安裝)
          步驟3.了解 Dell RAID 相關名詞
          步驟4.開始使用 MegaCli 指令
          步驟5.撰寫 MegaCli Script
          步驟6.MegaCli Script 測試
4、參考
5、Me FAQ
          Q1.smartd[2687]: Device: /dev/sda, Bad IEC (SMART) mode page, err=2, skip device?





2、實作環境

  • CentOS 5.x 
  • 主機硬體型號:Dell PowerEdge 1950
  • 硬碟規格:SAS HDD 146 G * 2 (Build RAID-1)
  • 磁碟陣列卡型號:Dell RAID Controller PERC 5/i (scsi0 : LSI Logic SAS based MegaRAID driver)
  • 2.00.12_Linux_Cli.zip (MegaCli-2.00.12-1.i386.rpm)
  • 1.01.39_Linux_Cli.zip (MegaCli-1.01.39-0.i386.rpm)





3、安裝及設定

步驟1.下載 MegaCli (擇一下載即可)

下載 MegaCLI 1.x 版 (1.01.39_Linux_Cli.zip),請至 LSI Corporation 下載 1.01.39_Linux_Cli.zip
wget http://www.lsi.com/support/downloads/megaraid/miscellaneous/linux/1.01.39_Linux_Cli.zip
解壓縮 1.01.39_Linux_Cli.zip
unzip 1.01.39_Linux_Cli.zip
 Archive:  1.01.39_Linux_Cli.zip
   inflating: MegaCli-1.01.39-0.i386.rpm
   inflating: 1.01.39_Linux_Cli.txt

下載 MegaCLI 2.x 版 (2.00.12_Linux_Cli.zip),請至  LSI Corporation 下載 2.00.12_Linux_Cli.zip
wget http://www.lsi.com/DistributionSystem/AssetDocument/support/downloads/megaraid/miscellaneous/linux/2.00.12_Linux_Cli.zip
解壓縮 2.00.12_Linux_Cli.zip
unzip 2.00.12_Linux_Cli.zip
 Archive:  2.00.12_Linux_Cli.zip
  extracting: MegaCliLin.zip
   inflating: 2.00.12_Linux_Cli.txt

解壓縮 MegaCliLin.zip
unzip MegaCliLin.zip
 Archive:  MegaCliLin.zip
   inflating: MegaCli-2.00.12-1.i386.rpm




步驟2.安裝 MegaCli RPM (對照剛才下載的版本安裝)

安裝 MegaCli-1.01.39-0.i386.rpm
rpm -ivh MegaCli-1.01.39-0.i386.rpm
 Preparing...                ############################### [100%]
    1:MegaCli                ############################### [100%]

安裝 MegaCli-2.00.12-1.i386.rpm
rpm -ivh MegaCli-2.00.12-1.i386.rpm
 Preparing...                ################################## [100%]
    1:MegaCli                ################################## [100%]




步驟3.了解 Dell RAID 相關名詞

在開始使用 MegaCli 之前有些名詞我們必須先了解

Virtual Drive (VD):虛擬硬碟,多顆硬碟組合起來的虛擬硬碟,簡單說就是 RAID
  • VD State Optimal:RAID 目前狀態為正常 (最優)
  • VD State Degraded:RAID 目前狀態為不正常 (退化、降級)

Physical Drive (PD):實體硬碟,簡單說就是主機上有幾顆硬碟
  • PD State Online:實體硬碟目前狀態為正常
  • PD State Fail、Unconfigured:實體硬碟目前狀態為不正常 (失敗、未設定)
  • PD State Rebuild:實體硬碟目前狀態為重建中

以下表格為當主機硬碟正常時、發生損壞時其 VD 及 PD 的狀態。



步驟4.開始使用 MegaCli 指令

查看 RAID 狀態指令 (32 bit)
/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL       //查看 Raid Card 型號、Disk 相關資訊
/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL   //關於 Raid Card 功能詳細內容


查看 RAID 狀態指令 (64 bit)
/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL     //查看 Raid Card 型號、Disk 相關資訊
/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL   //關於 Raid Card 功能詳細內容




步驟5.撰寫 MegaCli Script

因為 MegaCli 指令執行後會出來非常詳細的資訊,不過我最主要是想看 VD 及 PD 的狀態而以,所以就寫個簡單的 Shell Script 只抓我要看的資訊(有需要就參考看看吧),如果作業系統為 32 bit 則指令為 MegaCli,若作業系統為 64 bit 則指令為 MegaCli64
#!/bin/sh
#$Id: check_perc5i.sh, v0.2 2008/4/15 weithenn Exp $
#Check RAID Card PERC 5/i VD and PD State
#CentOS 32 bit use command MegaCli
#CentOS 64 bit use command MegaCli64
HOSTNAME=`/bin/hostname`
CARD=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL |grep "Product Name" | cut -d ':' -f2`
VDSTATE1=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "State"`
VDSTATE2=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Degraded"`
VDSTATE3=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "  Offline"`
PDSTATE1=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "Online" | wc -l | sed 's/       //'`
PDSTATE2=`/opt/MegaRAID/MegaCli/MegaCli -cfgdsply -aALL | grep "Rebuild" | wc -l | sed 's/       //'`
PDSTATE3=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Critical Disks"`
PDSTATE4=`/opt/MegaRAID/MegaCli/MegaCli -AdpAllInfo -aALL | grep "Failed Disks"`
echo "##### Host Informationi #####"
echo "Host              : $HOSTNAME"
echo "Raid Card         :$CARD"
echo ""
echo "##### Virtual Disk State #####"
echo "Virtual Disk $VDSTATE1"
echo "$VDSTATE2"
echo "$VDSTATE3"
echo ""
echo "##### Physical Disk State #####"
echo "Online Disk       : $PDSTATE1"
echo "Rebuild Disk      : $PDSTATE2"
echo "$PDSTATE3"
echo "$PDSTATE4"




步驟6.MegaCli Script 測試

上面的 Shell Script 再 RAID 正常時執行結果如下,可看到 VD 狀態為 Optimal,而 PD 狀態為 Online Disk 有 2 顆。
##### Host Informationi #####
Host              : dell.weithenn.org
Raid Card         : PERC 5/i Integrated
##### Virtual Disk State #####
Virtual Disk State: Optimal
  Degraded        : 0
  Offline         : 0
##### Physical Disk State #####
Online Disk       : 2
Rebuild Disk      : 0
  Critical Disks  : 0
  Failed Disks    : 0


一顆硬碟拔掉時 (模擬硬碟損壞) 訊息如下,可看到 VD 狀態由 Optimal 變成 Degraded,而 VD Disk 有 1 顆為 Degraded。
##### Host Informationi #####
Host                : dell.weithenn.org
Raid Card           : PERC 5/i Integrated
##### Virtual Disk State #####
Virtual Disk State  : Degraded
  Degraded          : 1
  Offline           : 0
##### Physical Disk State #####
Online Disk         : 2
Rebuild Disk        : 0
  Critical Disks    : 0
  Failed Disks      : 0


今天遇到的狀況有一顆 HDD 亮黃燈,可看到 VD 狀態還是 Optimal (因為那顆 HDD 還沒死,目前狀態為要死不死中),而 VD 中有 1 顆 Disk 狀態為 Critical。
##### Host Informationi #####
Host                : dell.weithenn.org
Raid Card           : PERC 5/i Integrated
##### Virtual Disk State #####
Virtual Disk State  : Optimal
  Degraded          : 0
  Offline           : 0
##### Physical Disk State #####
Online Disk         : 2
Rebuild Disk        : 0
  Critical Disks    : 1
  Failed Disks      : 0


插入新 HDD 在做 Rebuild 時 VD 狀態會由 Degraded 變回 Optimal,以下狀態為正在 Rebuild 中 2 顆 HDD (1 顆正常,1 顆重建中)。
##### Host Informationi #####
Host                : dell.weithenn.org
Raid Card           : PERC 5/i Integrated
##### Virtual Disk State #####
Virtual Disk State  : Degraded
  Degraded          : 1
  Offline           : 0
##### Physical Disk State #####
Physical Online     : 1
Physical Rebuild    : 1
  Critical Disks    : 0
  Failed Disks      : 0






4、參考






5、Me FAQ

Q1.smartd[2687]: Device: /dev/sda, Bad IEC (SMART) mode page, err=2, skip device?

Error Message:
今天看一下 /var/log/message 發現 smartd 的服務似乎無法抓到 Dell RAID Controller PERC 5/i 而發生錯誤,錯誤訊息如下
Apr 11 11:46:55 centos1 smartd[2687]: Device: /dev/sda, opened
Apr 11 11:46:55 centos1 smartd[2687]: Device: /dev/sda, Bad IEC (SMART) mode page, err=2, skip device
Apr 11 11:46:55 centos1 smartd[2687]: Unable to register SCSI device /dev/sda at line 32 of file /etc/smartd.conf


Ans:
Dell™ PowerEdge™ 可擴充的 RAID 控制卡 5/i 和 5/E 使用者指南 在這份文件的第 79 頁可發現對此問題的解說:
這些錯誤訊息是由直接來自使用者應用程式的不受支援的指令所導致的。 這是一個已知問題,其中使用者應用程式嘗試引導指令描述元圖塊至 RAID 磁卷。此錯誤訊息對使用者沒有影響,並且此錯誤不會導致功能遺失。PERC 5 上的韌體支援 Mode Sense/Select 指令。但是,Linux 核心常駐程式將指令傳送至虛擬磁碟而不是磁碟機 IOCTL 節點。 不支援此動作。
另外一個解決的方式就是去修改 smartd.conf 設定檔,使 smartd 支援你的 raid card 但因為我已經裝了 MegaCLI 來監控我的 raid 狀態,所以就先不管了把 smartd 服務停掉。