重建为什么会卡住
重建进度长时间停在同一数字,通常不是卡坏了,而是任务在等某一端响应:可能是目标盘遇到坏道反复重试,可能是链路在复位循环,也可能是源盘读不出数据导致重建反复回退,或者卡上同时跑着巡检与一致性检查在抢 IO。处理这类问题的第一步是把证据收全,再决定是等、是调参数还是换盘。
基本信息
| 常见原因 | 目标盘坏道重试、链路复位循环、源盘读错误、卡上任务冲突 |
|---|---|
| 取证要点 | 虚拟盘重建进度、物理盘错误计数、内核日志、控制器事件日志 |
| 可调手段 | 调整重建速率占用、错开巡检与一致性检查 |
| 危险动作 | 反复重启服务或复位卡会破坏现场 |
| 权限要求 | root |
排查方向
- 目标盘:SMART 指标是否异常增长,是否反复 reset
- 源盘:读取错误会让重建暂停或反复回退
- 链路:背板与线缆是否反复复位
- 卡状态:是否同时跑了巡检或一致性检查抢占任务
- 系统层:内核日志里是否有超时与复位记录
- 业务层:是否有大量写压力挤占重建带宽
取证与检查
取证与检查
storcli /c0/v0 show rebuild # 看当前重建进度
storcli /c0/eall/sall show all | grep -i -E "error|timeout|reset" # 物理盘错误与复位计数
dmesg -T | grep -i -E "reset|timeout|error" | tail -30 # 内核侧超时与复位
storcli /c0 show events | tail -40 # 控制器事件日志
smartctl -d megaraid,4 -a /dev/sda | grep -iE "reallocat|pending" # 目标盘坏道指标现象与可能原因
| 现象 | 可能原因 | 处置方向 |
|---|---|---|
| 进度完全不动 | 链路反复复位 | 查背板与线缆,必要时换槽位 |
| 进度缓慢前进 | 目标盘坏道重试 | 看目标盘 SMART 与重试计数 |
| 进度回退 | 源盘读取失败 | 优先保护数据,评估换盘 |
| 进度忽快忽慢 | 业务 IO 竞争 | 排期错开巡检与业务高峰 |
证据收集完成前不要反复重启服务或复位卡:现场被破坏后,根因更难定。