MegaCli常用参数介绍

常用命令参数:

MegaCli -adpCount [显示适配器个数]
MegaCli -AdpGetTime –aALL [显示适配器时间]
MegaCli -AdpAllInfo -aAll     [显示所有适配器信息]
MegaCli -LDInfo -LALL -aAll    [显示所有逻辑磁盘组信息,RAID Level]
MegaCli -PDList -aAll    [显示所有的物理信息]
MegaCli -cfgdsply -aALL    [显示Raid卡型号,Raid设置,Disk相关信息]
MegaCli -LDBI -ProgDsply -LALL -aALL  [raid building进度]
MegaCli64 -LDInit -ShowProg -LALL -aALL  [查看初始化同步块的过程的进度]
MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ [查看充电状态]
MegaCli -AdpBbuCmd -GetBbuStatus -aALL[显示BBU状态信息]
MegaCli -AdpBbuCmd -GetBbuCapacityInfo -aALL[显示BBU容量信息]
MegaCli -AdpBbuCmd -GetBbuDesignInfo -aALL    [显示BBU设计参数]
MegaCli -AdpBbuCmd -GetBbuProperties -aALL    [显示当前BBU属性]
MegaCli -ShowSummary -aALL                    [显示所有 adaptor 的逻辑盘信息]
MegaCli -LDGetProp -Cache -LAll -aAll         [显示 RAID 卡的缓存策略]
MegaCli -LDSetProp WT -L0 -a0                 [修改 adaptor 0 中第 1 块逻辑盘的缓存策略为 writethrough]
MegaCli -pdrbld -showprog -physdrv[E:S] -aALL   [查询磁盘 rebuild 进度, E 为磁盘的 Enclosure Device ID, S 为 slot 编号]
MegaCli -PDOffline -PhysDrv [E:S] -a0  [手动 offline 一块磁盘, E 为磁盘的 Enclosure Device ID, S 为 slot 编号, -a0 表示 adaptor 0]
MegaCli -PDMakeGood -PhysDrv [E:S] -Force -a0  [手动将 JBOD 状态的盘设置为 good 状态]
MegaCli -PDHSP -set -PhysDrv [E:S] -a0 [手动将一块磁盘设置为 Hotspare 状态]
MegaCli -AdpAllinfo -aALL | grep -i rebuild    [查看 RAID 卡 Rebuild 参数]
MegaCli -CfgForeign -Import -aall    [替换故障盘后可以直接导入, 新盘开始 rebuild]
MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN   [The number N of the array parameter is the Span Reference you get using “MegaCli -CfgDsply -aALL” and the number N of the row parameter is the Physical Disk in that span or array starting with zero (it’s not the physical disk’s slot!).]

磁带状态的变化,从拔盘,到插盘的过程中。

Device            |Normal|Damage|Rebuild|Normal
Virtual Drive     |Optimal|Degraded|Degraded|Optimal
Physical Drive    |Online|Failed –> [Jbod]|Unconfigured|Rebuild|Online

处于 ‘JBOD’ 状态的盘可以设置为 ‘Unconfigured(good)’ 状态, 更多见 megacli-jbod. 处于 ‘Unconfigured(good)’ 状态的盘, 需要手动设置为 Hotspare 状态才能起到热备的作用.

一些老机器可能不会自动改变状态, 也可以通过清理外部盘的方式重新设置新盘的状态:

MegaCli -cfgdsply -aALL
MegaCli -CfgForeign -Scan -a0  # 查看是否有外部盘
MegaCli -CfgForeign -Clear -a0 # 清空外部盘
MegaCli -CfgForeign -Scan -a0  # 再次检查

1. 可以替换并重新 rebuild
MegaCli -PdReplaceMissing -PhysDrv[32:1]] -array0 -row0 -a0
MegaCli -PDRbld -Start -PhysDrv[32:1] -a0
MegaCli -PDRbld -ShowProg -PhysDrv[32:1] -aALL

2. 也可以将盘作为全局 raid 的热备, 如果有多个 raid 组, 哪个有问题, 热备就顶哪个. 注意热备盘需要和其它 raid 的盘大小一致.
MegaCli -PDHSP -Set -Dedicated -Array0 -PhysDrv [32:5] -a0

增加磁盘创建新的虚拟设备

如果不想对现有的根盘(比如 RAID 1) 做改动, 可以增加一些磁盘单独做一个数据盘(比如 RAID5), 这种方式简单方便, 也不需要重启机器. 如下步骤所示:

查看插入的磁盘状态

如下所示, 假如我们新插入 3 块 600G 的磁盘:

 # MegaCli -PDList -aALL | egrep 'Adapter|Enclosure|Slot'
Adapter #0
.....
Slot Number: 3
Enclosure position: 1
Enclosure Device ID: 32
Slot Number: 4
Enclosure position: 1
Enclosure Device ID: 32
Slot Number: 5
Enclosure position: 1
Enclosure Device ID: 32

创建新的 RAID 5 虚拟设备

有些时候, 磁盘可能是从其它机器拿过来的, 这种情况下需要清理下 Foreign 状态, 如下所示:

# MegaCli64 -CfgForeign -Scan -aALL
                                     
There are 1 foreign configuration(s) on controller 0.

Exit Code: 0x00

# MegaCli64 -CfgForeign -Clear -a0

Foreign configuration 0 is cleared on controller 0.

Exit Code: 0x00

adaptor 0 适配器中的三块磁盘 (slot 3, slot 4, slot 5) 做成 RAID 5:

# MegaCli64 -CfgLdAdd r5[32:3,32:4,32:5] -a0

Adapter 0: Created VD 1

Adapter 0: Configured the Adapter!!

Exit Code: 0x00

再来查看设备信息, 如下:

# MegaCli64 -ShowSummary -a0
Storage

       Virtual Drives
              Virtual drive      : Target Id 0 ,VD name zonheng
              Size               : 278.875 GB
              State              : Optimal
              RAID Level         : 1 

              Virtual drive      : Target Id 1 ,VD name 
              Size               : 1.089 TB
              State              : Optimal
              RAID Level         : 5 

通过 fdisk -l 即可看到新的设备信息, 格式话设备后, 即可挂载使用:

# mkfs.xfs -f /dev/sdb 
# mount -t xfs /dev/sdb /data

可能的错误处理

# 单独做 raid 0 的时候, 出现下面的错误, 可能是 raid 中包含该 slot 的配置信息:
MegaCli -CfgLdAdd r0[32:4] -a0


Adapter 0: Configure Adapter Failed

FW error description:
 The current operation is not allowed because the controller has data in cache for offline or missing virtual disks.


# 查看该盘目前属于哪个 raid 组
# MegaCli -GetPreservedCacheList -a0

Adapter #0

Virtual Drive(Target ID 02): Missing.

# 清理 cache
# MegaCli -DiscardPreservedCache -L02 -a0

Adapter #0

Virtual Drive(Target ID 02): Preserved Cache Data Cleared.

# 重新创建 raid0 
# MegaCli -CfgLdAdd r0[32:4] -a0

Adapter 0: Created VD 2

Adapter 0: Configured the Adapter!!

参考

megacli-cheatsheet
ahelpme.com/software/megacli/megacli-fw-error-description