RAID 管理工具 MegaCli 的安装使用

MegaCli 介绍

MegaCli 是一款管理维护硬件 RAID 软件,可以通过它来了解当前 raid 卡的所有信息,包括 raid 卡的型号,raid 的阵列类型,raid 上各磁盘状态,等等。

MegaCli 安装

下载安装

方案一

apt-get install alien
wget --user=hetzner --password=download http://download.hetzner.de/tools/LSI/tools/MegaCLI/8.07.14_MegaCLI.zip
unzip 8.07.14_MegaCLI.zip -d megacli
cd megacli/Linux
sudo alien MegaCli-8.07.14-1.noarch.rpm
sudo dpkg -i megacli_8.07.14-2_all.deb
ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli

方案二

apt-get -y install  rpm2cpio libsysfs2 libsysfs-dev unzip
unzip 8.00.48_Linux_MegaCLI.zip
unzip MegaCliLin.zip
rpm2cpio Lib_Utils-1.00-09.noarch.rpm | cpio -idmv
rpm2cpio MegaCli-8.00.48-1.i386.rpm | cpio -idmv
ln -s opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli64
ln -s opt/MegaRAID/MegaCli/MegaCli /usr/bin/megacli

验证安装

$  megacli -v
      MegaCLI SAS RAID Management Tool  Ver 8.07.14 Dec 16, 2013
    (c)Copyright 2013, LSI Corporation, All Rights Reserved.
Exit Code: 0x00

安装异常

问题:

$ megacli
megacli: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

解决

$ apt-get install libncurses5

命令汇总

  • 查看 raid 卡日志

    megacli -FwTermLog -Dsply -aALL

  • 显示适配器个数

    megacli -adpCount

  • 显示适配器时间

    megacli -AdpGetTime –aALL

  • 显示所有适配器信息

    megacli -AdpAllInfo -aAll

  • 显示所有逻辑磁盘组信息

    megacli -LDInfo -LALL -aAll

  • 查 raid 卡信息 (生产商、电池信息及所支持的 raid 级别)

    megacli -AdpAllInfo -aALL |grep -E "Product Name|BBU|Memory Size|RAID Level Supported"

  • 查看虚拟化 (vd) 和物理盘 (pd) 的信息,比如查看物理硬盘数,是否有硬盘 offline 或者 degraded

    megacli -AdpAllInfo -aALL |grep -E "Device Present" -A9

  • 查看硬盘是否 online

    megacli -PDList -aALL |grep "Firmware state"

  • 查看硬盘是否存在物理错误 (error 不为 0,可能会有硬盘故障即将发生)

    megacli -PDList -aALL |grep -i error

  • 查看电池信息 (电池类型、电池状态、充电状态、温度等)

    megacli -AdpBbuCmd -aAll

  • raid 卡个数

    megacli –adpCount

  • 检测磁盘 ID 注意,该 ID 值用于标注磁盘

    megacli -PDlist -aALL | grep "ID" | uniq

  • 显示所有逻辑磁盘组信息 (做了几组 raid,raid cache 的默认和当前策略,做好 raid 后的虚拟盘容量)

    megacli -LDInfo -LALL -aAll

  • 显示所有物理盘 (物理磁盘个数、大小、是否存在 error)

    megacli -PDList -aAll

  • 显示所有物理盘物理错误

    megacli -PDList -aAll |grep -i error

  • 查看充电状态

    megacli -AdpBbuCmd -GetBbuStatus -aALL |grep 'Charger Status'

  • 显示 BBU 状态信息,比如电池是否,如果 issohgood 为 Yes 为正常,No 为异常

megacli -AdpBbuCmd -GetBbuStatus -aALL|grep -i issohgood

  • 显示 BBU 状态信息

    megacli -AdpBbuCmd -GetBbuStatus -aALL

  • 显示 BBU 容量信息

    megacli -AdpBbuCmd -GetBbuCapacityInfo -aALL

  • 显示 BBU 设计参数

    megacli -AdpBbuCmd -GetBbuDesignInfo -aALL

  • 显示当前 BBU 属性

    megacli -AdpBbuCmd -GetBbuProperties -aALL

  • 显示 Raid 卡型号,cache 大小、Raid 设置,cache 策略、Disk 相关信息

    megacli -cfgdsply -aALL |egrep "PDs|VDs|Product Name|Memory|BBU:"

  • 查看磁盘缓存策略 (查看 vd 的)

    megacli -LDGetProp -Cache -LALL -aALL

  • 查看磁盘缓存策略 (查看 pd 的)

    megacli -LDGetProp -DskCache -LALL -aALL

  • 查看物理磁盘重建进度

    megacli -PDRbld -ShowProg -PhysDrv [1:5] -a0

  • 以动态可视化文字界面显示

    megacli -PDRbld -ProgDsply -PhysDrv [1:5] -a0

  • 关闭缓存

    megacli -LDSetProp -DisDskCache -L0 -a0

  • 显示 Rebuid 进度

    megacli -PDRbld -ShowProg -physdrv[20:2] -aALL

  • 查看 E S

    megacli -PDList -aAll -NoLog | grep -Ei "(enclosure|slot)"

  • 查看所有硬盘的状态

    megacli -PDList -aAll -NoLog

  • 查看所有 Virtual Disk 的状态

    megacli -LdPdInfo -aAll -NoLog

  • 在线做 Raid

    megacli -CfgLdAdd -r0[0:11] WB NORA Direct CachedBadBBU -strpsz64 -a0 -NoLog

    megacli -CfgLdAdd -r5 [12:2,12:3,12:4,12:5,12:6,12:7] WB Direct -a0

  • 点亮指定硬盘 (定位)

    megacli -PdLocate -start -physdrv[252:2] -a0

  • 清除 Foreign 状态

    megacli -CfgForeign -Clear -a0

  • 查看 RAID 阵列中掉线的盘

    megacli -pdgetmissing -a0

  • 替换坏掉的模块

    megacli -pdreplacemissing -physdrv[12:10] -Array5 -row0 -a0

  • 手动开启 rebuid

    megacli -pdrbld -start -physdrv[12:10] -a0

  • 查看 Megacli 的 log

    megacli -FwTermLog dsply -a0 > adp2.log

  • 设置 HotSpare

    megacli -pdhsp -set [-Dedicated [-Array2]] [-EnclAffinity] [-nonRevertible] -PhysDrv[4:11] -a0

    megacli -pdhsp -set [-EnclAffinity] [-nonRevertible] -PhysDrv[32:1}] -a0

  • 关闭 Rebuild

    megacli -AdpAutoRbld -Dsbl -a0

  • 设置 rebuild 的速率

    megacli -AdpSetProp RebuildRate -30 -a0

  • 创建一个 raid5 阵列,由物理盘 2,3 4 构成,该阵列的热备盘是物理盘 5

    megacli-CfgLdA d -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0

  • 创建阵列,不指定热备

    megacli-CfgLdA d -r5 [1:2,1:3,1:4] WB Direct -a0

  • 删除阵列

    megacli-CfgLdDel -L1 -a0

  • 在线添加磁盘

    megacli-LDRecon -Star - 5 Ad -PhysDrv[1:4] -L1 -a0

  • 阵列创建完后,会有一个初始化同步块的过程,可以看 其进度。

    megacli-LDInit -ShowProg -LA L -aAL

  • 以动态可视化文字界面显示

    megacli-LDInit -ProgDsply -LA L -aAL

  • 查看阵列后台初始化进度

    megacli-LDBI -ShowProg -LA L -aAL

  • 或者以动态可视化文字界面显示

    megacli-LDBI -ProgDsply -LA L -aAL

  • 指定第 5 块盘作为全局热备

    megacli-PDHSP -Set [-EnclAf in ty] [-no Rev rtible] -PhysDrv[1:5] -a0

  • 指定为某个阵列的专用热备

    megacli-PDHSP -Set [-Dedicated [-Ar ay1] [-EnclAf in ty] [-no Rev rtible] -PhysDrv[1:5] -a0

  • 删除全局热备

    megacli-PDHSP -Rmv -PhysDrv[1:5] -a0

  • 将某块物理盘下线 / 上线

    megacli -PDOffline -PhysDrv [1:4] -a0

    megacli -PDOnline -PhysDrv [1:4] -a0

  • 查看物理磁盘重建进度

    megacli-PDRbld -ShowProg -PhysDrv [1:5] -a0

  • 或者以动态可视化文字界面显示

    megacli -PDRbld -ProgDsply -PhysDrv [1:5] -a0

  • 查看做 raid 的情况

    megacli -LDInfo -Lal -aAL | grep -E "RAID Lev l|Strip Size|NumberOf Drives|Span Depth|^Size"

  • 取 Enclosure Device ID

    uiqnum= megacli -PDlist -aAL | grep "ID" | uniq |awk -F: '{print $2}' | awk '{print $1}'

  • 取 Slot Number

    disknum=megacli -PDList -aAL | grep -E "DISK GROUP|Slot Number|postion:|Firmware sta e:" | grep Slot | awk -F[: ] '{print $NF}'

  • 算出总数

    diskto al=megacli -PDList -aAL | grep -E "DISK GROUP|Slot Number|postion:|Firmware sta e:" | grep Slot | awk -F[: ] '{print $NF}' | wc -l
    ar ay=($disknum)

  • 查看当前 raid 缓存状态,raid 缓存状态设置为 wb 的话要注意电池放电事宜,设置电池放电模式为自动学习模式

    megacli -ldgetprop -dskcache -lall -aall

  • raid 电池设置相关

    • 查看电池状态信息 (Display BBU Status Information)

      megacli -AdpBbuCmd -GetBbuStatus -aN|-a0,1,2|-aALL

      megacli -AdpBbuCmd -GetBbuStatus -aALL

    • 查看电池容量(Display BBU Capacity Information)

      megacli -AdpBbuCmd -GetBbuCapacityInfo -aN|-a0,1,2|-aALL

      megacli -AdpBbuCmd -GetBbuCapacityInfo –aALL

    • 查看电池设计参数 (Display BBU Design Parameters)

      megacli -AdpBbuCmd -GetBbuDesignInfo -aN|-a0,1,2|-aALL

      megacli -AdpBbuCmd -GetBbuDesignInfo –aALL

    • 查看电池属性(Display Current BBU Properties)

      megacli -AdpBbuCmd -GetBbuProperties -aN|-a0,1,2|-aALL

      megacli -AdpBbuCmd -GetBbuProperties –aALL

    • 设置电池为学习模式为循环模式(Start BBU Learning Cycle)

      megacli -AdpBbuCmd -BbuLearn -aN|-a0,1,2|-aALL

  • 查询 raid 级别,磁盘数量,容量,条带大小。

    megacli -cfgdsply -aALL |grep Policy

  • 查询控制器 cache 策略

    megacli -LDSetProp WB -L0 -a0

  • 设置 write back 功能

    megacli -LDSetProp CachedBadBBU -L0 -a0

  • 设置即使电池坏了还是保持 WB 功能

    megacli -AdpBbuCmd -BbuLearn a0

  • 手动充电

    megacli -FwTermLog -Dsply -aALL

  • 显示适配器个数:

    megacli -adpCount

  • 显示所有适配器信息:

    megacli -AdpAllInfo -aAll

  • 显示所有逻辑磁盘组信息:

    megacli -LDInfo -LALL -aAll

  • 显示所有的物理信息:

    megacli -PDList -aAll
    Media

  • 查看充电状态:

    megacli -AdpBbuCmd -GetBbuStatus -aALL

  • 显示 BBU (后备电池) 状态信息:

    megacli -AdpBbuCmd -GetBbuStatus -aALL

  • 显示 BBU 容量信息:

    megacli -AdpBbuCmd -GetBbuCapacityInfo -aALL

  • 显示 BBU 设计参数:

    megacli -AdpBbuCmd -GetBbuDesignInfo -aALL

  • 显示当前 BBU 属性:

    megacli -AdpBbuCmd -GetBbuProperties -aALL

  • 显示 Raid 卡型号,Raid 设置,Disk 相关信息:

    megacli -cfgdsply -aALL

  • 查看 Cache 策略设置:

    megacli -cfgdsply -aALL |grep -i Policy

  • 查看充电进度百分比:

    megacli -AdpBbuCmd -GetBbuStatus -aALL

参考资料

  • https://idc.wanyunshuju.com/cym/646.html
  • https://gist.github.com/fxkraus/595ab82e07cd6f8e057d31bc0bc5e779
  • https://blog.csdn.net/xinqidian_xiao/article/details/80940306