首页/系统与基础设施/存储速查/从主机侧定位存储性能问题
存储运维与性能60 条

从主机侧定位存储性能问题

主机侧排查的目标是分清慢在主机还是后端:用 iostat 拆解时延与队列、用 vmstat 看 IO 等待占比、用 iotop 定位进程,再结合多路径与内核回写参数判断。await 含排队成分,必须与队列长度和请求量一起读。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​​‌‌​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​‌‌​‌​‌‌​​​​‌​‌‌​‌‌‌​​‌‌​​​‌‌​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

先分清主机与后端

主机侧排查要回答的核心问题是:慢在主机内部(调度、队列、内存回写、协议栈、多路径),还是慢在后端。主机侧可见的 await 包含排队与设备服务两部分,光看绝对值无法区分责任,必须结合队列长度与并发请求数一起读。把「主机发出的请求量」与「后端能完成的请求量」对照起来,责任边界就清楚了。

基本信息

常用工具iostat、vmstat、sar、iotop、blktrace、multipath
关键文件/proc/diskstats、/sys/block 下的队列参数
核心指标IOPS、吞吐、平均与分位时延、队列长度、利用率
易忽略项内存回写、IO 调度器、中断绑核、多路径健康
适用系统Linux 主机;工具参数以对应发行版手册为准

典型使用场景

  • 业务反馈某台主机慢:先确认是主机自身还是共享后端
  • 数据库抖动排查:区分日志写入与数据文件读取的差异
  • 挂载点接入后性能不达标:检查多路径、协议与队列参数
  • 批量任务并发下性能劣化:确认是否内存回写引发周期性阻塞
  • 扩容验证:确认新增路径被正确使用且负载均衡

主机侧排查命令

主机侧排查命令
iostat -x 1                       # 逐设备看时延、队列与利用率
iostat -x 1 /dev/sdb               # 只看指定设备,减少噪声
vmstat 1                          # 关注 wa 列:IO 等待占 CPU 时间的比例
sar -d -p 1                       # 历史与实时对比设备级负载
iotop                             # 按进程看谁在发起 IO
cat /proc/diskstats               # 原始计数,适合脚本采基线
multipath -ll                     # 多路径状态与负载分布
cat /sys/block/sdb/queue/scheduler   # 当前 IO 调度器
cat /sys/block/sdb/queue/nr_requests # 队列深度上限

关键列读法

列含义判读要点
r/s、w/s每秒读、写请求数与后端能力对照,不看绝对值
rkB/s、wkB/s每秒读写字节数配合平均请求大小判断顺序还是随机
r_await、w_await单请求平均时延读写分开看,写入常常更高
aqu-sz / avgqu-sz平均队列长度(新老版本列名不同)持续大于 1 说明经常排队
%util设备繁忙比例接近满且时延上升才是真瓶颈,单看它易误判
wa(vmstat)CPU 等待 IO 的时间占比持续偏高说明 IO 已成主要等待来源
固态盘下 %util 接近满不一定代表瓶颈,它描述的是有请求在处理的忙碌比例;判断瓶颈要回到时延与队列是否同步恶化。
写入侧要注意内存回写:脏页累积到阈值后集中刷盘,会周期性把写时延推高。排查此类抖动应同时看内存脏页与写入时延的时间对应关系,而不是只看磁盘。

易错点

  • 只看 %util 判定瓶颈,忽略时延与队列,固态盘场景结论完全错误
  • 把 await 的高值全部归咎于磁盘,忽略排队与后端共享存储的贡献
  • 多路径只接一条可用链路就上线,也不核对负载是否均衡
  • 未关注内核脏页回写参数,写入抖动被误判为磁盘故障
  • 用单盘测试的结论指导集群容量规划,忽略共享后端的互相影响

数据来源与参考

  • sysstat 官方文档:iostat、sar 字段说明
  • Linux 内核官方文档:块设备队列与 IO 调度器
  • device-mapper-multipath 官方手册

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/storage/host-side-storage-performance.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌‌‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​​‌​‌​‌‌‌​​‌​​‌‌​​‌‌​​‌‌​‌‌‌‌​‌‌‌​​‌​​‌‌​‌‌​‌​‌‌​​​​‌​‌‌​‌‌‌​​‌‌​​​‌‌​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​