iostat
命令查看系统磁盘IO性能,常用参数:-d
显示磁盘详情,-x
扩展统计,-k
/-m
指定单位,-p
指定设备,后接间隔和次数(如iostat -dx 2 5
)。在Linux系统中,监控磁盘和系统I/O性能是运维工作的核心任务之一。iostat
作为Sysstat工具包的重要组成部分,提供了详细的存储设备性能数据,以下是如何使用它的完整指南:
iostat的作用与价值
iostat
(Input/Output Statistics)用于监控:
- 磁盘读写速度(MB/s)
- I/O等待时间(await)
- CPU利用率与I/O的关联
- 设备吞吐量和队列深度
通过分析这些指标,可快速定位磁盘瓶颈、RAID性能问题或存储配置缺陷。
安装iostat
大多数Linux发行版默认未安装,需通过Sysstat包获取:
# Debian/Ubuntu sudo apt update && sudo apt install sysstat # RHEL/CentOS sudo yum install sysstat # 验证安装 iostat -V
基础使用命令
查看整体统计(默认显示)
iostat
输出示例:
avg-cpu: %user %system %iowait %idle
15.2 10.1 8.3 66.4
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn
sda 25.3 320.1 180.5 0.0 1048576 589824
nvme0n1 0.02 0.1 0.0 0.0 1024 0
- tps:每秒I/O请求数
- kB_read/s:每秒读取数据量(KB)
- kB_wrtn/s:每秒写入数据量(KB)
- %iowait:CPU等待I/O的时间占比(>5%需警惕)
动态刷新显示
每2秒刷新一次,持续5次:
iostat 2 5
以MB/s为单位显示
iostat -m # 将kB/s转为MB/s
高级参数详解
参数 | 作用 | 示例命令 |
---|---|---|
-c |
只显示CPU统计 | iostat -c |
-d |
只显示磁盘统计 | iostat -d 1 3 |
-x |
扩展详情(关键!) | iostat -x 1 |
-p |
显示具体分区/设备 | iostat -p sda |
-h |
人类可读格式(如MB/GB) | iostat -h |
扩展模式(-x
)核心字段解析
iostat -x 1
输出关键列:
await
:I/O平均等待时间(ms),>20ms表示磁盘过载svctm
:设备处理I/O的平均时间(ms)%util
:设备繁忙百分比(≥80%为性能瓶颈)aqu-sz
:平均请求队列长度(>1表示排队)r/s, w/s
:每秒读/写请求数
实用场景示例
诊断高延迟磁盘
iostat -x 1 | grep -E 'Device|sdb'
若sdb
的await
持续>50ms且%util>90%
,表明磁盘响应缓慢。
监控SSD性能
iostat -p nvme0n1 2 # 针对NVMe设备
观察rMB/s
和wMB/s
是否接近硬件标称值。
生成CSV报告(用于分析)
iostat -o JSON -d 1 10 > iostat_report.json
常见问题解决
-
问题:命令报错
iostat: command not found
解决:重装Sysstat包,并启用服务:sudo systemctl enable --now sysstat
-
问题:数据无更新
解决:检查/etc/sysconfig/sysstat
中的SADC_OPTIONS
是否包含-d
选项。 -
问题:%util超过100%
原因:在多路径或RAID环境下属正常现象,因并行I/O被重复计数。
替代工具推荐
iotop
:实时进程级I/O监控sar
:Sysstat中的历史数据分析工具vmstat
:综合性能查看(含内存、CPU、I/O)
引用说明基于Sysstat官方文档及Linux man-pages,数据验证环境:
- Sysstat版本:11.7.3
- 内核版本:Linux 5.15.x
- 权威参考:
Sysstat Documentation
Linux man-pages: iostat(1)
最佳实践提示:生产环境中建议结合
iostat -x 1
与top
命令交叉分析,同时记录/proc/diskstats
原始数据供长期追溯。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/40816.html