【磁盘】每天掌握一个Linux命令 - iostat
目录
- 【磁盘】每天掌握一个Linux命令 - iostat
- 工具概述
- 安装方式
- 核心功能
- 基础用法
- 进阶操作
- 实战案例
- 面试题场景
- 生产场景
- 注意事项
【磁盘】每天掌握一个Linux命令 - iostat
工具概述
iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使用情况的工具。它通过收集并分析磁盘设备的读写请求、传输速率、使用率等指标,帮助运维人员定位磁盘性能瓶颈,评估系统I/O负载,是排查磁盘I/O相关问题的重要利器。
安装方式
大多数主流Linux发行版(如CentOS、Ubuntu、Debian)默认已预装iostat。若未安装,可通过包管理器安装:
- CentOS/RHEL:
yum install sysstat
- Ubuntu/Debian:
apt-get install sysstat
核心功能
功能模块 | 具体作用 |
---|---|
磁盘性能监控 | 统计磁盘设备的读写次数、传输速率、响应时间等 |
CPU使用分析 | 展示CPU在用户态、内核态、空闲等不同状态的时间占比 |
性能瓶颈定位 | 通过分析磁盘和CPU指标,帮助定位I/O性能瓶颈 |
历史数据记录 | 配合sysstat 服务,可周期性采集数据并保存,用于性能趋势分析 |
基础用法
- 查看所有磁盘设备的I/O统计信息
iostat
- 指定时间间隔和次数输出统计信息
# 每隔2秒输出一次,共输出3次
iostat 2 3
- 仅显示磁盘设备统计信息
iostat -d
- 显示详细的磁盘设备统计信息
iostat -D
- 显示CPU使用率统计信息
iostat -c
- 以人类可读的格式显示统计信息
iostat -h
进阶操作
- 使用
-x
参数获取扩展统计信息
iostat -x 2
返回结果示例(部分字段解释):
- rrqm/s:每秒进行merge的读操作数目
- wrqm/s:每秒进行merge的写操作数目
- r/s:每秒完成的读I/O设备次数
- w/s:每秒完成的写I/O设备次数
- rMB/s:每秒读数据量(MB)
- wMB/s:每秒写数据量(MB)
- avgrq-sz:平均每次设备I/O操作的数据大小(扇区)
- await:平均每次设备I/O操作的等待时间(毫秒)
- svctm:平均每次设备I/O操作的服务时间(毫秒)
- %util:一秒中有百分之多少的时间用于I/O操作
- 使用
-p
参数指定显示特定磁盘分区信息
# 显示sda磁盘分区信息
iostat -p sda
实战案例
面试题场景
面试官提问:“系统出现磁盘I/O性能瓶颈,如何用iostat定位问题?”
回答:首先使用iostat -x
查看磁盘设备的详细统计信息,重点关注%util
接近100%且await
值较大的磁盘,这表明该磁盘存在严重的I/O等待;同时结合r/s
、w/s
判断是读密集型还是写密集型问题,进一步定位具体进程。
生产场景
在数据库服务器中,发现响应速度变慢。使用iostat -x 2
持续监控磁盘,发现%util
高达95%,await
达到50ms,说明磁盘I/O负载过重。再通过iostat -p
查看具体分区,确定是存放数据库文件的分区出现瓶颈,可通过增加磁盘阵列或优化数据库读写操作来解决问题。
注意事项
iostat
的数据采集依赖sysstat
服务,需确保服务正常运行。- 单次采样数据可能存在偏差,建议通过多次采样或设置较长的时间间隔获取准确数据。
- 不同Linux版本的
iostat
命令参数和输出格式可能略有差异,使用时需注意。