cat /proc/mdstat是最快速的raid状态入口,其中[uu]表示全盘正常,[u_]或[_u]表明已降级,(f)标识故障盘;mdadm --detail需重点关注state(如degraded)和active devices数值是否匹配预期;mdadm --examine用于验证单盘元数据一致性,尤其在盘更换或识别异常时不可或缺。

cat /proc/mdstat 显示实时状态但容易误读括号含义
这是最快速的入口,但输出里那些 [UU]、[U_]、[_U] 不是随机字符,而是关键健康信号:[UU] 表示所有成员盘在线且同步完成;[U_] 或 [_U] 说明至少一块盘已失效或未参与同步;(F) 出现在设备名后(如 /dev/sdb1(F))代表该盘已被标记为故障。
常见误判点:
- 看到
recovery = 95.2%就以为快好了——其实 RAID5/6 重建后期速度会骤降,最后 5% 可能卡住十几分钟 - 忽略
Personalities : [raid1] [raid5]这行,导致把 RAID1 状态套用到 RAID5 场景里 - 没注意
unused devices: <none></none>—— 如果这里列出设备,说明阵列配置文件没加载或设备未被识别
mdadm --detail /dev/md0 查状态但得盯住 State 和 Active Devices 两行
mdadm --detail /dev/md0 不只是罗列参数,真正要盯的是输出中紧挨着的两行:
State : clean, degraded —— 注意逗号分隔,degraded 比 active 更具警示性;
Active Devices : 3 —— 必须和你预期的盘数一致,比如 RAID5 四盘阵列这里写 3,就确认已掉盘。
其他易漏细节:
-
Rebuild Status : 67% complete只在重建中出现,但不会显示预计剩余时间 -
Update Time :时间戳如果明显早于当前系统时间,可能意味着阵列上次非正常关机 - 若看到
Array is not clean,下次重启可能无法自动组装,需手动mdadm --assemble
mdadm --examine /dev/sdb1 验证单盘是否还属于阵列
当 /proc/mdstat 显示某盘消失,或换新盘后阵列不自动识别时,必须用 mdadm --examine /dev/sdb1 直接读取物理分区上的 RAID 元数据。
重点看三处:
-
MD UUID :必须和mdadm --detail /dev/md0输出里的Array UUID完全一致 -
Events :数值应接近其他成员盘,差值过大(如相差 >100)说明该盘长期离线或元数据损坏 -
Device Role :若显示spare而不是active,即使盘已插入,也不会自动加入重建
注意:该命令不依赖阵列是否运行,哪怕 /dev/md0 当前不存在也能查——这是定位“盘被拔过但没重插对槽位”的核心手段。
硬件 RAID 不能只看 mdadm,得用厂商工具查控制器层
如果服务器用了 LSI MegaRAID 或 HP Smart Array,cat /proc/mdstat 可能为空或只显示 md126 这类伪设备,因为底层由控制器管理,Linux 内核不暴露完整状态。
必须切换工具:
- LSI 卡:用
/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LAll -aAll查逻辑盘状态,State字段必须是Optimal才算健康 - HP 服务器(Gen9+):用
hpssacli ctrl all show status,关注Controller Status和Cache Status,后者为OK才代表写缓存启用 - 通用 fallback:
lspci -k | grep -A 3 -i raid确认控制器驱动是否加载,lsmod | grep raid看内核模块有无冲突
一个硬伤:硬件 RAID 的 SMART 健康(如坏道、重映射扇区)不会透传给 mdadm,必须单独跑 smartctl -a /dev/sdb。
cat /proc/mdstat 快扫一眼,再进 mdadm --detail 确认降级细节,接着对异常盘做 --examine,最后根据控制器类型补厂商工具——漏掉任意一层,都可能把硬件故障当成软件配置问题去折腾。











