慢盘为什么危害大
慢盘(slow disk)指响应时间显著高于同批盘、但错误计数与状态都正常的盘。由于条带化后的每次逻辑 IO 都要等最慢的那块成员盘完成,一块慢盘就能把整卷的延迟抬上去,业务侧看到的却是「整体变慢」而没有明确报错。同时慢盘往往是介质老化或链路亚健康的前兆,属于必须处理但不能鲁莽处理的对象。
基本信息
| 识别口径 | 同一时间窗、同一负载下与同槽位批次的成员盘横向对比延迟 |
|---|---|
| 关键指标 | 平均服务时间、P99 延迟、队列长度、错误计数与链路计数 |
| 典型表现 | 整卷延迟上升但无 IO 错误;单盘延迟是同伴的倍数 |
| 隔离手段 | 阵列侧标记故障或手动离线、软件阵列中剔除成员、必要时降级并重建 |
| 处置代价 | 隔离即意味着冗余下降或进入重建窗口,需要备件与时间 |
| 易混淆对象 | 应用侧并发过高、缓存未命中、后台任务也能造成「整体变慢」 |
典型使用场景
- 业务反馈整体变慢但存储无告警,需要用同批盘对比锁定个别盘时
- 巡检发现某槽位盘平均服务时间长期高于同伴,评估是否预防性更换时
- 扩容后新老盘混用,需要确认性能差异是否来自批次而不是配置时
- 重建期间业务明显受影响,判断是重建带宽问题还是某块盘本身过慢时
- 同一槽位反复出现延迟异常,区分盘、背板、插槽三种可能时
定位慢盘
定位慢盘
# 主机侧:并排看各设备的平均服务时间与利用率,异常值一眼可见
iostat -x 1 20
# 只挑出平均等待时间明显偏离同批盘的那几块
# 字段名随 sysstat 版本略有差异,以本机输出为准
# 内核日志:长时间命令、重试与重置往往伴随慢盘出现
journalctl -k --since '3 days ago' | grep -Ei 'timeout|reset|long'
# 软件阵列场景确认成员盘与状态
mdadm --detail /dev/md0
# 阵列侧按盘查看延迟与错误计数(字段名以厂商手册为准)
storcli /c0/eall/sall show all | grep -Ei 'error|timeout'证据对照与判断
| 证据特征 | 倾向结论 | 处置方向 |
|---|---|---|
| 延迟高、错误计数正常 | 典型慢盘 | 先隔离观察,再评估更换 |
| 延迟高、重分配扇区增长 | 介质能力退化 | 尽快准备备件并更换 |
| 同批盘普遍偏慢 | 批次或固件差异 | 对比固件版本与型号,别单独换盘 |
| 仅某一槽位长期异常 | 背板、插槽或供电 | 把盘换到其他槽位验证 |
慢盘判断必须用横向对比:只看单盘延迟的绝对值无法判断快慢,因为负载与条带大小都会影响量级。同一时间窗、同一批盘、同一负载才有可比性。
隔离慢盘会让阵列进入降级或触发重建,等于主动压缩冗余。只有在确认慢盘对业务的影响大于降级风险,且备件与窗口就绪时才执行。