确认软硬RAID需执行三命令:lsblk -S | grep -i "raid\|mega\|hp\|lsi\|perc"查厂商关键词;cat /proc/mdstat 2>/dev/null | grep "md[0-9]"有输出即软RAID;lspci -k | grep -A3 -i "raid\|mass\|storage" | grep -E "(MegaRAID|Smart Array|PERC|LSI)"匹配即硬件RAID在位。

怎么确认是软 RAID 还是硬件 RAID 控制器
直接执行这三行命令,5 秒内就能定位控制器类型:
-
lsblk -S | grep -i "raid\|mega\|hp\|lsi\|perc"—— 看设备名里有没有厂商关键词 -
cat /proc/mdstat 2>/dev/null | grep "md[0-9]"—— 有输出说明存在软 RAID(/dev/md0类设备) -
lspci -k | grep -A3 -i "raid\|mass\|storage" | grep -E "(MegaRAID|Smart Array|PERC|LSI)"—— 匹配到即为硬件 RAID 控制器在位
关键区别:软 RAID 的逻辑设备是 /dev/md0,元数据写在成员盘末尾;硬件 RAID 表现为标准块设备(如 /dev/sda),由控制器固件抽象,mdadm 对它完全不可见。
LSI/MegaRAID 控制器用 MegaCli64 查状态
这是 LSI(现 Broadcom)官方工具,路径通常为 /opt/MegaRAID/MegaCli/MegaCli64。不装它,cat /proc/mdstat 和 mdadm 都看不到硬件层真实状态。
- 查所有逻辑磁盘(LD):
sudo /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LAll -aAll,重点看State是否为Optimal - 查所有物理磁盘(PD):
sudo /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll | grep -E "(Enclosure|Slot|Media|Firmware|State)",关注State是Online还是Failed,以及Firmware state是否为Online, Spun Up - 查 BBU/Cache 状态:
sudo /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aAll,BBU 异常会导致写缓存被禁用,性能骤降
注意:MegaCli64 输出中若出现 Pd:0 Information 后跟 Media Error Count: X 或 Other Error Count: Y,数值非零就代表该盘已开始掉扇区,别等 Failed 才换。
HP Smart Array 控制器用 hpssacli 或 hpacucli
Gen9 及更新机型用 hpssacli,Gen8 及更早用 hpacucli。两者命令结构一致,只是二进制名不同。
- 查控制器和逻辑驱动器:
sudo hpssacli ctrl all show config,输出里Controller Status必须是OK,Logical Drive下的Status必须是OK - 查物理硬盘详情:
sudo hpssacli ctrl slot=0 pd all show detail(slot=0按实际控制器槽位调整),重点看Drive Type、Firmware Revision、Current Temperature和Status - 查阵列重建进度:
sudo hpssacli ctrl slot=0 ld 1 show,若输出含Rebuilding字样,会显示百分比和预估剩余时间
常见坑:hpssacli 在某些旧固件上对 NVMe 背板支持不全,pd all show 可能漏掉部分盘,此时必须配合 smartctl -a /dev/nvme0n1 单独验证。
没装厂商工具时,靠 dmesg 和 /proc/scsi/scsi 快速兜底
当无法安装 MegaCli64 或 hpssacli(比如容器环境、最小化系统),这两个内核接口能提供最基础的控制器识别信息。
-
dmesg | grep -i "raid\|megaraid\|cciss\|hpsa"—— 启动日志里会打印控制器型号、固件版本、是否检测到 LD/PD -
cat /proc/scsi/scsi | grep -A2 -B2 "RAID\|HP\|LSI"—— 显示 SCSI 总线上挂载的设备,能看到类似Vendor: HP Model: P420i Rev: 6.64这样的关键行
但注意:/proc/scsi/scsi 不提供健康状态或错误计数,仅用于“有没有”和“是什么”,不能替代专用工具做故障诊断。真正出问题时,它连哪块盘 Firmware state 是 Unconfigured(good) 还是 Failed 都不会说。
控制器状态不是只看“在线”就行;Optimal 和 OK 背后可能藏着 BBU 充电失败、缓存策略被强制关闭、某块盘 Media Error Count 已上千却还没被踢出——这些细节只有对应厂商工具才能暴露。


















