直接看/proc/mdstat最轻量实时,重点读括号(如[UU]正常、[U_]降级、(F)故障)、重建百分比(末段易卡顿)及Personalities行以匹配RAID类型;再用mdadm --detail核验State和Active Devices,最后用mdadm --examine比对MD UUID、Events和Device Role确认单盘元数据一致性。

直接看 /proc/mdstat 就行,但得会读括号和百分比
这是最轻量、最实时的方式,内核每秒都在更新这个虚拟文件。执行 cat /proc/mdstat 后,重点盯三处:
- 每行开头的
mdX设备名后括号里的字符,比如[UU]表示两块盘都在线且同步完成;[U_]或[_U]说明已降级;(F)出现在设备路径后(如/dev/sdb1(F))代表该盘被标记为故障 - 若看到
resync = 45.2%或recovery = 92.7%,说明阵列正在重建或初始化——这不是“快好了”的信号,RAID5/6 末段常卡在最后 3–5%,可能持续十几分钟甚至更久 -
Personalities : [raid1] [raid5]这行不能跳过,它决定了括号含义和重建逻辑:RAID1 是镜像同步,RAID5 是奇偶校验重算,误套用会误判进度
mdadm --detail /dev/mdX 显示结构化元数据,但 State 和 Active Devices 才是关键
这个命令不反映实时进度,而是读取阵列元数据快照。真正要检查的是输出中紧挨着的两行:
-
State : clean, degraded—— 注意逗号分隔,degraded比active更具警示性;clean不等于健康,只是表示上次关闭时无异常 -
Active Devices : 3—— 必须和你预期盘数一致。比如 RAID5 四盘阵列这里写3,就确认已掉盘 - 如果看到
Rebuild Status : 67% complete,说明重建确实在进行,但它不提供 ETA;Update Time时间戳如果比系统时间早几小时,可能意味着上次非正常关机,阵列未 clean 关闭
别信“同步中”就万事大吉,mdadm --examine 才能验证单盘元数据一致性
当 /proc/mdstat 显示某盘消失,或换新盘后阵列不自动识别,必须查物理盘本身:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 运行
mdadm --examine /dev/sdb1(替换为你怀疑的分区),不依赖/dev/mdX是否存在 - 重点比对三处:
MD UUID必须和mdadm --detail /dev/md0输出的Array UUID完全一致;Events数值应接近其他成员盘,差值 >100 说明该盘长期离线或元数据损坏;Device Role若显示spare而非active,即使盘已插入也不会自动加入重建 - 这个命令能定位“盘被拔过但插回错槽位”或“新盘未正确写入 RAID 元数据”的问题,
/proc/mdstat和--detail都看不到这类底层不一致
硬件 RAID 不能套用这些命令,/proc/mdstat 可能为空或只显示伪设备
如果你用的是 LSI MegaRAID、HP Smart Array 或 Dell PERC,/proc/mdstat 很可能只显示 md126 这类伪设备,或者干脆为空。因为控制器在固件层管理 RAID,Linux 内核不暴露完整状态。
此时必须用厂商工具:
- LSI/Avago:用
MegaCli64 -LDInfo -LAll -aAll查逻辑卷,-PDList -aAll查物理盘,重点关注State是否为Online,Firmware state是否为Online, Spun Up - HP Smart Array:用
hpssacli ctrl all show config(Gen9+)或hpacucli ctrl all show config(Gen8-),它直接读控制器寄存器,不经过内核抽象层 - 别指望
dmesg | grep -i raid或cat /proc/scsi/scsi给出详细状态——它们只报型号和级别,不反映当前同步进度或盘健康
/proc/mdstat)、元数据一致性(mdadm --detail)、物理盘归属可信度(mdadm --examine)。漏掉任何一层,都可能把“正在重建”误读成“已就绪”,或者把“元数据损坏”当成“盘掉线”。

















