Linux iostat命令是sysstat软件包中的一个实用工具,主要用于监控系统输入/输出(I/O)统计信息,它能够实时显示磁盘设备的I/O负载、CPU使用情况以及分区级别的统计信息,是系统管理员进行性能分析和故障排查的重要工具,iostat命令通过读取/proc/stat和/proc/diskstats等内核虚拟文件获取数据,支持按指定时间间隔重复输出,也可以生成汇总报告。

基本语法与常用选项
iostat命令的基本语法格式为iostat [选项] [时间间隔] [次数],时间间隔以秒为单位,表示每次输出之间的等待时间;次数指定输出次数,若省略则默认输出一次,常用选项包括:
-c:仅显示CPU统计信息。-d:仅显示磁盘I/O统计信息。-k:以KB/s为单位显示传输速率,默认为块/秒。-m:以MB/s为单位显示传输速率。-x:显示扩展统计信息,包括util、await、svctm等关键指标。-p:显示分区信息,如iostat -p sda会显示sda磁盘及其分区的统计。-N:显示设备名称,避免截断。
输出字段解析
执行iostat -d命令后,默认输出包含以下字段:
- Device:磁盘设备名称。
- tps:每秒传输次数(Transfers Per Second),即I/O请求数量。
- Blk_read/s:每秒读取的块数(默认为512字节/块)。
- Blk_wrtn/s:每秒写入的块数。
- Blk_read:累计读取的块数(仅当指定次数时显示)。
- Blk_wrtn:累计写入的块数(仅当指定次数时显示)。
输出可能如下:
Device tps Blk_read/s Blk_wrtn/s
sda 12.3 256.7 512.4
若使用iostat -x,则会显示更详细的指标:

- rrqm/s:每秒合并的读取请求数。
- wrqm/s:每秒合并的写入请求数。
- r_await:读取请求的平均等待时间(毫秒)。
- w_await:写入请求的平均等待时间(毫秒)。
- await:所有请求的平均等待时间(毫秒)。
- svctm:平均服务时间(毫秒)。
- %util:磁盘利用率(%),即处理I/O请求的时间占比。
实际应用场景
-
磁盘性能瓶颈识别
当%util持续接近100%时,表明磁盘已饱和,可能成为系统性能瓶颈,若数据库服务器的磁盘利用率长时间高于90%,需考虑优化I/O操作或升级存储设备。 -
I/O延迟分析
await指标反映I/O请求的响应时间,若await显著高于svctm,说明请求存在排队等待,可能是磁盘负载过高或磁盘性能不足。await为50ms而svctm为5ms,表明请求平均排队45ms。 -
读写负载均衡
通过Blk_read/s和Blk_wrtn/s可分析磁盘的读写比例,若某磁盘写入流量远高于其他磁盘,可能需要调整数据分布策略,如RAID配置或应用层读写分离。 -
CPU与I/O关联分析
结合iostat -c可观察CPU与I/O的关联性,若CPU空闲率高但磁盘利用率高,说明I/O是主要瓶颈;若CPU利用率高而磁盘利用率低,可能是CPU计算密集型任务导致。
(图片来源网络,侵删)
高级用法与实例
-
实时监控磁盘I/O
执行iostat -dx 2会每2秒刷新一次扩展统计信息,适合实时观察动态变化。iostat -dx 2输出中若
%util持续超过80%,且await较高,需进一步排查磁盘健康状态。 -
汇总指定时间段的I/O统计
通过iostat -d 60 3可每60秒输出一次统计,共3次,适合分析长时间段的I/O趋势,观察备份任务期间的磁盘负载变化。 -
过滤特定磁盘
使用iostat -d sdb sdc可仅监控sdb和sdc磁盘的I/O情况,避免无关设备干扰分析。 -
生成性能报告
结合-N选项可避免设备名称截断,便于日志分析。iostat -dxN 1 10 > iostat_report.txt
常见问题与优化建议
-
磁盘利用率高但I/O低
可能原因:磁盘队列深度不足或磁盘本身性能瓶颈,可通过调整/sys/block/sda/queue/nr_requests增加队列深度,或升级SSD等高性能存储。 -
高await值与低util值
可能原因:磁盘存在大量小I/O请求或RAID重构等后台任务,可通过fio工具进行I/O压力测试,或调整应用层的I/O大小(如增大MySQL的innodb_buffer_pool_size)。
相关问答FAQs
Q1: iostat中的await和svctm有什么区别?
A1: await表示I/O请求从发出到完成的总时间(包括排队和服务时间),而svctm表示磁盘处理请求的实际服务时间,若await远高于svctm,说明请求排队严重,可能需要增加磁盘并行能力或优化I/O调度策略。
Q2: 如何通过iostat判断是否需要升级存储设备?
A2: 若观察到以下情况之一,建议升级存储:1)%util持续高于80%且伴随高await;2)svctm显著高于磁盘规格(如机械硬盘svctm通常低于10ms,若持续高于20ms说明性能不足);3)读写吞吐量(Blk_read/s+Blk_wrtn/s)接近磁盘理论上限(如SATA SSD约600MB/s)。
