1. Linux磁盘IO问题排查全景指南
当服务器突然变慢,应用响应延迟飙升,而CPU和内存看起来都很空闲时,老司机们的第一反应往往是:"查IO!"作为系统性能的三大核心指标之一,磁盘IO问题就像血管中的血栓,会悄无声息地拖垮整个系统。本文将分享我在运维一线积累的整套IO问题排查方法论,从工具使用到解读技巧,帮你快速定位那些隐藏在iowait背后的性能杀手。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心工具链与指标解读
2.1 基础监控三剑客
vmstat 1是最快速的全局观察工具,重点关注wa字段(iowait百分比):
bash复制$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 279004 185288 893244 0 0 12 24 3 1 8 3 86 3 0
当wa持续>5%就需要警惕,>20%则表明存在严重IO瓶颈。配合b列(等待IO的进程数)可以判断阻塞程度。
iostat -x 1提供更专业的设备级统计:
bash复制$ iostat -x 1
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
vda 0.12 5.63 2.13 44.12 0.00 0.12 0.00 2.08 0.25 1.12 0.01 17.31 7.84 0.35 0.20
关键指标解读:
%util:设备繁忙百分比,>70%预示饱和await:IO平均等待时间(ms),机械盘>15ms/SSD>2ms需关注aqu-sz:平均队列长度,>1表示存在堆积
2.2 深度剖析利器
当基础工具发现异常后,iotop可以定位具体进程:
bash复制$ sudo iotop -oP
Total DISK READ: 12.34 M/s | Total DISK WRITE: 45.67 M/s
PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
456 be/3 mysql 12.34 M/s 0.00 B/s 0.00 % 85.23 % mysqld~innodb
注意IO>列表示进程占用IO时间的百分比,结合DISK READ/WRITE可判断读写比例。
对于更复杂的场景,blktrace+btt工具链能追踪到块设备层的详细行为:
``
