CentOS看RAID信息:Megacli、storcli、perccli对比
在CentOS里想一眼看清RAID卡到底在干嘛,很多人第一反应是装个工具就跑,结果三条命令甩出去,屏幕刷得比春运还热闹,却找不到盘阵到底掉没掉盘。MegaCli、storcli、perccli这三兄弟名字像亲戚,脾气却各不同,用错一个,查询结果都能给你整成“谜语”。这篇就把它们拎出来,一条一条对比,看完直接知道该敲谁。

为什么要专门挑工具
RAID卡不吭声,硬盘灯也不闪,业务却开始卡顿,这种场景最磨人。系统自带的lspci、lsblk只能看到内核识别的磁盘,阵列内部是“黑盒”。想拿到“黑盒”里的温度、Rebuild进度、掉盘槽位,必须走RAID卡原厂命令行。MegaCli老牌、storcli新宠、perccli戴尔专供,选错版本直接“command not found”,耽误排障黄金时间。
安装门槛:谁更省事
MegaCli最老,32位依赖让人头大,CentOS 7以后默认没32位库,装完还得手动ln -s libsysfs.so,新手常卡在这一步。storcli直接给rpm包,x86_64一次过,一条yum localinstall就完事。perccli同理,戴尔机器开箱自带仓库,启用EPel也能秒装,非戴尔机强制装会提示“Unsupported hardware”,直接劝退。
命令结构:谁更顺口
MegaCli参数又臭又长,

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL
大小写混用,少一个“-”就报错,复制粘贴都容易漏空格。storcli改成统一子命令:
storcli /c0 /vall show
层级清晰,tab补全能直接补出控制器号。perccli基本照抄storcli,只是路径换成/perccli64,戴尔工程师换平台零学习成本。
输出可读性:谁一眼看懂
MegaCli返回纯文本,条带、缓存策略挤在一行,关键状态“Firmware state: Failed”混在十几列里,眼睛看花。storcli默认表格,列对齐,掉盘直接标“DGD”,黄底高亮。perccli再加一列“Slot Number”,热插拔现场对照灯号秒定位。要做脚本解析,storcli加“-json”直接吐结构化,awk都不用写。

功能覆盖:谁更全
三者都能查逻辑卷、物理盘、BBU,但MegaCli不支持NVMe RAID,旧卡刷到新固件也识别不了。storcli从2016版开始统一支持SAS/SATA/NVMe,同一条命令看混合盘池。perccli跟随戴尔PERC9/10/11,HBA模式切换一键完成,不用再重启进BIOS。想在线开CacheCade,MegaCli得额外敲二次命令,storcli单条set就生效,省下的都是停机时间。
性能刷新:谁更快
盘阵Rebuild时,进度刷新频率决定你能不能及时止损。MegaCli默认poll 30秒,手动加“-NoLog”才能压到5秒,依旧卡顿。storcli内部接口走SAS2.0,进度条秒级跳动,perccli再快一点,戴尔机型实测2秒刷新,对大盘T级阵列尤其友好。监控脚本里,storcli sleep 3就能平滑绘图,MegaCli得sleep 10才不丢数据。
日志导出:谁方便甩锅
出故障要写报告,日志必须一键打包。MegaCli需要分别抓RAID、SAS、BBU三个日志,漏一条就被厂商怼回来。storcli /c0 show all > raid.txt,一个文件囊括所有固件事件。perccli再送“/c0/eall/sall download”直抽硬盘日志,连SMART一起拖下来,售后邮件一次发齐,来回扯皮的次数直线下降。
实际场景:该敲哪条命令
1. 紧急看掉盘:
MegaCli: -PDList -aALL |grep "Firmware state"
storcli: /c0 /eall /sall show |grep DGD
perccli: 同上,关键字高亮,现场最省眼神。
2. 计划扩容:
MegaCli先 -CfgSave 再 -CfgForeign -Clear,两步缺一不可。
storcli直接 /c0 /fall delete,一条清掉外来配置,再上 /c0 add vd,扩容时间砍半。
3. 定时巡检脚本:
storcli -json -LDInfo -lall -a0 |jq '.Controllers[0].Response.Data.Virtual Drives[].State'
jq解析稳如老狗,MegaCli得自己写正则,多一个空格就匹配崩。
选型结论
老机器LSI 9260、9271,MegaCli是唯一选择,记得把32位库一起打包进脚本,迁移系统别漏。新平台Avago 3508、9400,storcli通杀,NVMe RAID也能管,直接弃用MegaCli。戴尔PowerEdge,perccli原厂加持,开Case时工程师第一句话就是“请提供perccli日志”,别的格式他不认。
一句话:看硬件世代选工具,看平台品牌再确认,装完第一件事跑“show all”存底,后面排障才能心不慌。
常见坑合集
1. 拷贝旧脚本路径还是MegaCli64,新系统装完storcli,定时任务直接失效,记得改PATH。
2. 虚拟机直通RAID卡,固件版本低于5.0,storcli识别成Unsupported,升级iDRAC或卡固件再测。
3. 多卡堆叠,-aALL会把所有控制器混一起,脚本里一定循环“-a0 -a1”,否则告警邮件发错目标。
4. 中文locale下MegaCli偶发乱码,export LANG=C再执行,输出才能被grep。
5. 用perccli非戴尔主板,虽然能装但创建VD会写保护,别在生产线作死。
把上面几条写进部署手册,半夜报警电话至少少一半。
快速备忘清单
装包:storcli → yum localinstall storcli.rpm
查卷:storcli /c0 /vall show
查盘:storcli /c0 /eall /sall show
进度:storcli /c0 /e252 /s5 show rebuild
日志:storcli /c0 show events file=raid.log
照抄即用,贴到终端就能出结果。
