linux下用mdadm监控raid,最关键是掌握高频指令组合:cat /proc/mdstat实时查看状态(如[u_]降级、recovery重建),mdadm --detail /dev/md0查详细健康信息,mdadm --examine /dev/sdb1验元数据,配合mailaddr邮件告警与echo check > /sys/block/md0/md/sync_action定期校验,故障时用--fail、--remove、--add在线恢复。

Linux下用mdadm监控磁盘阵列,关键不是记全所有参数,而是掌握几个高频、实用的指令组合,能快速看状态、查问题、做响应。
实时查看阵列运行状态
最常用也最直观的方式是读取内核暴露的接口:
- cat /proc/mdstat:显示所有md设备的当前活动状态,包括是否运行中、降级([U_])、重建(recovery)、同步进度等。输出简洁,适合日常巡检
- watch -n1 'cat /proc/mdstat':每秒刷新一次,方便观察重建或同步过程的实时进展
- 注意识别关键标记:[UU]表示全部成员正常,[_U]或[U_]说明已降级,(F)代表某成员已被标记为故障
获取指定阵列的详细健康信息
当/proc/mdstat提示异常时,需深入一层确认细节:
- mdadm --detail /dev/md0:列出该阵列的RAID级别、设备数量、活动/备用盘、超级块版本、创建时间、每个成员盘的状态(如Active sync、Spare、Faulty)
- mdadm --examine /dev/sdb1:单独检查某块物理分区的RAID元数据,可确认它是否属于某个阵列、UUID是否匹配、最后写入时间等,对排查“盘被误拔后无法自动重组”特别有用
- 若输出中出现state = active, not clean,通常意味着阵列未正常停止过,下次启动可能需要手动组装
主动触发状态检查与邮件告警
靠人工盯屏不可靠,生产环境应配置自动监控:
- 在/etc/mdadm/mdadm.conf中设置MAILADDR admin@example.com,并确保系统有可用的MTA(如ssmtp或postfix),mdadm检测到故障会自动发信
- 定期执行完整性校验:echo check > /sys/block/md0/md/sync_action,系统将在后台扫描所有数据块并报告不一致项(结果见/proc/mdstat或系统日志)
- 校验完成后,可通过grep -i "md0.*check" /var/log/syslog确认结果,正常应看到check done和no errors found
常见状态异常的快速响应
发现故障不等于数据丢失,多数情况可在线恢复:
- 若某盘显示(F)但阵列仍运行(如RAID5中一块盘故障),先用mdadm --fail /dev/md0 /dev/sdb1将其显式标记为故障,再用mdadm --remove /dev/md0 /dev/sdb1安全移除
- 换上新盘并创建相同类型分区后,执行mdadm --add /dev/md0 /dev/sdf1,系统将自动开始重建,期间阵列仍可读写(性能下降)
- 若阵列意外停用(如断电后未自动启动),用mdadm --assemble --scan尝试根据配置文件和超级块信息重新组装;失败时可加--force或指定UUID强制识别











