RAID 级别与计算68 条

mdadm 阵列状态查看

日常巡检用 mdadm --detail 与 /proc/mdstat 两个入口:前者给出盘级细节与重建进度,后者一眼看出降级与同步状态。

软 RAID 巡检入口

md 阵列有两个日常入口:/proc/mdstat 适合一眼看全局,用方括号里的字母直观表示每个成员盘是否正常;mdadm --detail 给出盘级细节、状态位、条带参数与重建进度。两者配合使用,再叠加 mdadm --examine 看单块盘上的元数据,基本能覆盖软 RAID 的日常巡检与排障场景。

巡检命令组合

巡检命令组合
cat /proc/mdstat                     # 全局:级别、成员状态、同步进度
mdadm --detail /dev/md0              # 细节:状态位、成员盘、条带与 UUID
mdadm --detail --scan                # 输出可写入 mdadm.conf 的配置行
mdadm --examine /dev/sdb1            # 看单块盘上的阵列元数据
cat /sys/block/md0/md/sync_action    # 当前同步动作(idle/check/resync)

关键状态字段

字段含义异常示例
State阵列整体状态clean / degraded / resyncing / inactive
Active Devices在线成员盘数3/4 表示缺一块盘
Working Devices可用盘数(含热备)与 Active 不一致说明有盘在待命或异常
Failed Devices故障盘数大于 0 必须处理
Spare Devices热备盘数量0 表示坏盘后需人工介入
Resync / Recovery同步或重建进度显示百分比与预计剩余时间
Chunk Size条带元素大小与规划值不一致要核对建阵列记录

日常巡检动作

  • 每天看一次 /proc/mdstat,确认没有下划线与 resync 字样
  • 每周用 mdadm --detail 核对成员盘序列号与槽位台账是否一致
  • 每月或每季度执行一次数据巡检(echo check),把静默坏道提前暴露
  • 把同步动作与进度纳入监控,重建中或校验中的告警要能区分对待

从状态到动作

  • [UUUU] 且无 resync:正常,按常规周期执行数据巡检即可
  • 出现下划线且 Failed Devices 为 1:立即定位坏盘、核对序列号并按流程换盘
  • 状态 inactive 或成员缺失过多:先停止写入、确认数据可读性,再决定是否强制组装
  • sync_action 显示 resync 或 recovery:属正常运行,但要压低业务负载并监控进度
degraded 状态的阵列仍可正常读写,只是失去了容错;重建进度与预计完成时间可以直接在 /proc/mdstat 里读到,不必额外工具。

易错点

  • 只看 mdstat 的 [UU_U] 缩写不核对盘序列号:换盘时容易换错盘位,把好盘拔下来
  • 把 resync 中的阵列当异常强行中断:会引入一致性风险,应让它跑完再判断
  • 忽略 Spare Devices 为 0:坏盘后只能等人工更换,重建窗口被无限拉长
  • 不把巡检命令纳入监控:靠人工登录查阵列,故障往往在业务受影响后才发现
  • 对 inactive 阵列直接强制组装:成员盘状态未核清就强跑,可能把残余数据进一步破坏
  • 巡检只记录「正常」而不记录盘序列号与状态:故障时缺少基线,只能靠现场猜哪块盘坏了

数据来源与参考

  • man 8 mdadm(--detail)
  • man 4 md(/proc/mdstat 格式)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌