首页/系统/服务器硬件与 RAID 速查/盘响应变慢的分层排查
硬盘故障与更换68 条

盘响应变慢的分层排查

单盘响应变慢会拖慢整个阵列:排查按「盘 SMART → 链路计数 → 卡日志 → 系统队列」分层核对,避免在应用层空转。

盘响应变慢怎么分层排查

单盘响应变慢会拖慢整个阵列:同一卷的请求会在最慢的成员盘上排队,最终表现为应用端的延迟抖动。排查要按层收集证据:先看盘侧 SMART 属性与自测结果,再看链路计数与卡侧错误统计,然后核对系统侧逐盘利用率与等待,最后才回到应用层。跳过中间层直接怀疑应用,通常只是把时间花在错误的地方。

基本信息

适用平台Linux 系统侧用 iostat、dmesg,盘侧用 smartctl,卡侧用 storcli
关键属性188 命令超时、197 待映射扇区、5 已重映射扇区
链路信号卡侧超时与复位计数、SAS PHY 错误计数
系统信号逐盘利用率、平均等待与队列长度
权限要求读取盘与卡信息需要 root

典型使用场景

  • 业务延迟抖动:应用层找不到原因时,先确认是否存在单盘拖尾
  • 虚拟化环境排查:确认宿主机磁盘视图与阵列状态,再进入虚拟机层
  • 重建期间性能下降:判断是正常负载上升还是成员盘异常
  • 巡检发现慢盘:属性或计数异常时提前隔离观察并准备替换
  • 故障后复盘:用留存的历史数据还原慢盘的恶化过程

分层证据收集

分层证据收集
smartctl -A /dev/sdb | grep -E "188|199| 5 "  # 盘侧超时与扇区相关属性
iostat -x 5 | grep -E "sd[b-h]"  # 系统侧逐盘利用率与等待
storcli /c0/e252/s4 show all | grep -i -E "error|timeout"  # 卡侧盘级错误与超时
for p in /sys/class/sas_phy/*; do grep -H . $p/invalid_dword_count; done 2>/dev/null | head  # 链路层错误
dmesg -T | grep -i -E "sdb|timeout" | tail -20  # 内核侧超时与重试记录

分层证据与含义

层级观察对象指向问题
盘属性 188、197、5 的变化盘面介质或固件侧异常
链路PHY 错误与 CRC 类计数线缆、连接器或背板
阵列卡盘级超时与复位计数卡到盘的传输稳定性
系统逐盘利用率与队列单盘拖尾导致整体变慢
慢盘与坏盘是两种处理方式:慢盘先隔离观察并准备备件,坏盘按故障流程立即更换。
只盯平均延迟会把问题掩盖掉:阵列的平均值正常,但单块盘的等待时间可能已经远高于同伴。

易错点

  • 只盯平均延迟:单盘异常被阵列平均值淹没,排查长时间没有方向
  • 在虚拟化层反复排查:忽略了宿主机磁盘视图与阵列状态这个更近的观测点
  • 只看盘不看链路:CRC 与 PHY 计数增长指向的是线缆与背板,换盘解决不了
  • 不保留历史数据:慢盘是渐进退化的,没有趋势就只能等它彻底故障

数据来源与参考

  • man 1 iostat(sysstat)
  • smartmontools 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌