前言:

MegaCli 是LSI公司官方提供的SCSI卡管理工具,由于LSI被收购变成了现在的Broadcom,所以现在想下载MegaCli,需要去Broadcom官网查找Legacy产品支持,搜索MegaRAID即可。现在官方有storcli,整合了LSI和3ware所有产品。但是个人认为Megacli用起来更顺手,而且线上用了几家国产厂商服务器,用Megacli都能管理好RAID,所以换不换无所谓。

准备: 

新版本的 MegaCli-1.01.39-0.i386.rpm (下载地址:http://docs.avagotech.com/docs-and-downloads/legacy-raid-controllers/legacy-raid-controllers-common-files/1-01-39_Linux_Cli.zip)(在文章结尾已上传,方便下载)该包会把程序安装在/opt下,当然也可以自定义安装目录,例如:rpm --relocate /opt/=/usr/sbin/ -i MegaCli-1.01.39-0.i386.rpm (即把安装目录 /opt 替换成 /usr/sbin)。

(linux文件夹下有个MegaCli文件里面有I386 RPM)

相关命令及其解析: 
查看机器型号    # dmidecode | grep "Product" 
查看厂商    # dmidecode| grep  "Manufacturer" 
查看序列号    # dmidecode | grep  "Serial Number" 
查看CPU信息    # dmidecode | grep  "CPU" 
查看CPU个数    # dmidecode | grep  "Socket Designation: CPU" |wc –l 
查看出厂日期    # dmidecode | grep "Date" 
查看充电状态    # MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Charger Status" 
显示BBU状态信息    # MegaCli -AdpBbuCmd -GetBbuStatus –aALL 
显示BBU容量信息    # MegaCli -AdpBbuCmd -GetBbuCapacityInfo –aALL 
显示BBU设计参数    # MegaCli -AdpBbuCmd -GetBbuDesignInfo –aALL 
显示当前BBU属性    # MegaCli -AdpBbuCmd -GetBbuProperties –aALL 
查看充电进度百分比    # MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep "Relative State of Charge" 
查询Raid阵列数    # MegaCli -cfgdsply -aALL |grep "Number of DISK GROUPS:" 
显示Raid卡型号,Raid设置,Disk相关信息      # MegaCli -cfgdsply –aALL 
显示所有物理信息    # MegaCli -PDList -aALL 
显示所有逻辑磁盘组信息    # MegaCli -LDInfo -LALL –aAll 
查看物理磁盘重建进度(重要)    # MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0 
查看适配器个数    #MegaCli –adpCount 
查看适配器时间    #MegaCli -AdpGetTime –aALL 
显示所有适配器信息    #MegaCli -AdpAllInfo –aAll 
查看Cache 策略设置    # MegaCli -cfgdsply -aALL |grep Polic

硬盘方面:

1、查看所有物理磁盘信息 
MegaCli -PDList -aALL

Adapter #0

Enclosure Number: 1 
Slot Number: 5 
Device Id: 5 
Sequence Number: 2 
Media Error Count: 0 
Other Error Count: 0 
Predictive Failure Count: 0 
Last Predictive Failure Event Seq Number: 0 
Raw Size: 140014MB [0x11177328 Sectors] 
Non Coerced Size: 139502MB [0x11077328 Sectors] 
Coerced Size: 139392MB [0x11040000 Sectors] 
Firmware state: Hotspare 
SAS Address(0): 0x5000c50008e5cca9 
SAS Address(1): 0x0 
Inquiry Data: SEAGATE ST3146855SS     S5273LN4Y1X0 
..... 
2、查看磁盘缓存策略 
MegaCli -LDGetProp -Cache -L0 -a0

Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct 
or 
MegaCli -LDGetProp -Cache -L1 -a0

Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct 
or 
MegaCli -LDGetProp -Cache -LALL -a0

Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct 
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct 
or 
MegaCli -LDGetProp -Cache -LALL -aALL

Adapter 0-VD 0: Cache Policy:WriteBack, ReadAheadNone, Direct 
Adapter 0-VD 1: Cache Policy:WriteBack, ReadAheadNone, Direct 
or 
MegaCli -LDGetProp -DskCache -LALL -aALL

Adapter 0-VD 0: Disk Write Cache : Disk's Default 
Adapter 0-VD 1: Disk Write Cache : Disk's Default 
3、设置磁盘缓存策略 
缓存策略解释: 
WT    (Write through 
WB    (Write back) 
NORA  (No read ahead) 
RA    (Read ahead) 
ADRA  (Adaptive read ahead) 
Cached 
Direct 
例子: 
MegaCli -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0 
or 
MegaCli -LDSetProp -Cached|-Direct -L0 -a0 
or 
enable / disable disk cache 
MegaCli -LDSetProp -EnDskCache|-DisDskCache -L0 -a0 
4、创建/删除 阵列 
    4.1 创建一个 raid5 阵列,由物理盘 2,3,4 构成,该阵列的热备盘是物理盘 5 
MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] –a0 
    4.2 创建阵列,不指定热备 
MegaCli -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct –a0 
    4.3 删除阵列 
MegaCli -CfgLdDel -L1 –a0 
    4.4 在线添加磁盘 
MegaCli -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0 
意思是,重建逻辑磁盘组1,raid级别是5,添加物理磁盘号:1:4。重建完后,新添加的物理磁盘会自动处于重建(同步)状态,这个 时候 fdisk -l是看不到阵列的空间变大的,只有在系统重启后才能看见。 
5、查看阵列初始化信息 
    5.1 阵列创建完后,会有一个初始化同步块的过程,可以看看其进度。 
MegaCli -LDInit -ShowProg -LALL -aALL 
或者以动态可视化文字界面显示 
MegaCli -LDInit -ProgDsply -LALL –aALL 
    5.2 查看阵列后台初始化进度 
MegaCli -LDBI -ShowProg -LALL -aALL 
或者以动态可视化文字界面显示 
MegaCli -LDBI -ProgDsply -LALL -aALL 
6、创建全局热备 
指定第 5 块盘作为全局热备 
MegaCli -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0 
也可以指定为某个阵列的专用热备 
MegaCli -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0 
7、删除全局热备 
MegaCli -PDHSP -Rmv -PhysDrv[1:5] -a0 
8、将某块物理盘下线/上线 
MegaCli -PDOffline -PhysDrv [1:4] -a0 
MegaCli -PDOnline -PhysDrv [1:4] -a0 
9、查看物理磁盘重建进度 
MegaCli -PDRbld -ShowProg -PhysDrv [1:5] -a0


MegaCli64 -PDRbld -ShowProg -PhysDrv [32:4] -a0

PhysDrv 参数32代表" Enclosure Device ID", 参数4代表 "Slot Number"


RAID Level对应关系:

RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0 RAID 1
RAID Level : Primary-0, Secondary-0, RAID Level Qualifier-0 RAID 0
RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3 RAID 5
RAID Level : Primary-1, Secondary-3, RAID Level Qualifier-0 RAID 10


1、Slot Number:slot号,应该跟机器外观上的标识一致。如果机器上有多块盘,直接告诉现场工程师slot X的硬盘有问题,工程师就会直接换盘。

2、Inquiry Data: 这里是磁盘的序列号,跟磁盘标签上一致。磁盘标签需要拔盘才能看到,按slot拔盘看到磁盘的序列号应该跟Inquiry Data一致。

3、Firmware state: 这里能看到磁盘的状态,Online是我们期望看到的最好状态,除此之外还有 Unconfigured Offline Failed等等,大多表达一个悲伤的事实:你要加班报修/修复他们了。。。

4、需要特别关注这几个指标:Media Error / Other Error / Predictive Failure Count / Last Predictive Failure Event Seq Number 都有可能不是0。这意味着磁盘虽然能用但已经不再可靠,很有可能存在坏簇、坏道之类的问题,必须尽快换掉这块盘。如果坚持使用,那磁盘就离彻底坏掉不远了。网上流传的说法是前3个Count越大代表磁盘状态越差,实际并不是这样,以下2个截图就可以说明。

同事为这个问题专门与服务器RAID卡磁盘厂家沟通,得到的反馈是:
查到之前的资料,Medium error、other error数值的绝对值,不能直接反应硬盘的状态。
根据与RAID卡、硬盘厂家的沟通,建议做法是监控Predictive Failure 的数值,不为零说明硬盘有问题。另外,如果硬盘failed,也可以直接报修。
Predictive Failure Count
指令:storcli /c0/eall/sall show all
监控关键字Predictive Failure Count,标准为不能大于0,若有计数,将对应的硬盘换掉;
Predictive Failure中已经涵盖media error,而且比media error的范围更广、更全面。
硬盘的 SMART 子系统已经具备一套完整的算法来评估硬盘的健康状况
SMART 子系统算法会参考硬盘运行时各个方面的参数,media error 是其中一项
SMART 对于 media error 的评估是基于单位时间增长数来计算的
当 SMART 子系统中任何一个评估项达到对应的阈值时,硬盘会报告 Sense Code: 01 5D 00 (FAILURE PREDICTION THRESHOLD EXCEEDED)
遵循 SCSI 协议标准的 host (OS SCSI 子系统,SAS 控制器, RAID 卡等) 可以正确解析出该 Sense Code
综上,由于 media error 已经被硬盘 SMART 子系统所涵盖,并且会依据 SCSI 协议标准上报 predictive failure,所有硬盘部分只需要在Raid卡下监控Predictive Failure就好,标准为不能大于0。


查看生产商:

dmidecode -s system-manufacturer


查看主机型号:

dmidecode -s system-product-name


查看主机序列号:

dmidecode -s system-serial-number 


参考:http://fangpeishi.com/raid_cheatsheet1.html

          https://segmentfault.com/a/1190000011402256

          https://blog.51cto.com/1130739/1771506