常见命令-资源查看-iostat命令实践
系统中未安装 iostat 命令
iostat 是 sysstat 工具集的一部分,需通过安装该软件包获得,iostat工具集包含:sar,iostat,mpstat,pidstat,vmstat,nfsiostat,cifsiostat,tapestat,sadc,sa1,sa2,sadf
Debian/Ubuntu系统
sudo apt update # 更新软件源 sudo apt install sysstat
CentOS/RHEL系统
sudo yum install sysstat
1. 监控CPU与磁盘的基础负载
通过基本参数快速获取系统整体性能概览:
• 查看CPU利用率:iostat -c
输出字段包括用户态(%usr)、内核态(%sys)、I/O等待(%iowait)等,帮助判断CPU是否因I/O阻塞导致空闲时间减少。
• 查看磁盘I/O统计:iostat -d 默认按k统计 iostat -dm 按M统计 iostat -dh 按个性化单位统计
显示每秒传输次数(tps)、读写数据量(kB_read/s、kB_wrtn/s),快速定位高负载磁盘设备。
2. 诊断I/O性能瓶颈
通过扩展参数深入分析磁盘性能问题:
• 扩展统计信息:iostat -x 1 5
关键指标包括:
• %util:设备繁忙时间占比(超过80%可能为瓶颈)。
• await:I/O请求平均等待时间(机械硬盘正常值≤8ms,SSD≤1ms)。
• avgqu-sz:平均队列长度(数值持续高表明请求积压)。
此类分析适用于优化数据库、文件服务器等I/O密集型场景。
3. 实时监控与动态采样
通过指定时间间隔持续跟踪系统状态:
• 动态刷新数据:iostat 2 10
每2秒输出一次统计,共10次,适用于观察突发流量或周期性负载波动。
• 结合时间戳记录:iostat -t 5
输出包含时间戳,便于后续关联日志分析异常时间点的系统行为。
4. 特定设备或分区的精细化监控
针对复杂存储架构的定向分析:
• 监控指定磁盘分区:iostat -p sda1
单独分析某物理分区或逻辑卷(如LVM)的I/O负载,适用于多磁盘环境下的故障隔离。
• 网络文件系统(NFS)性能:iostat -n 或 nfsiostat 2
查看NFS客户端统计信息,诊断网络存储延迟或吞吐量问题。
5. 性能测试与基准数据生成
在优化前后对比系统性能:
• 输出到文件:iostat -d 5 20 > io_log.txt
保存数据用于后续分析,如绘制负载趋势图或生成性能报告。
• 自定义单位输出:iostat -m
以MB为单位显示读写量,更直观评估大文件传输场景的带宽占用。
6. 结合其他工具进行综合调优
与vmstat、sar等工具联动使用:
• CPU与I/O关联分析:高%iowait时需排查磁盘响应问题,而非单纯CPU资源不足。
• 进程级I/O分析:配合pidstat -d定位具体进程的I/O行为。
总结
iostat的核心价值在于通过简洁的命令快速定位系统瓶颈,并结合扩展参数提供深度诊断依据。运维人员需重点关注%iowait、await、%util等关键指标,结合具体业务场景(如数据库、虚拟化、存储集群)灵活调整监控策略。
结果输出速查表
第一部分:CPU统计信息
| 字段 | 说明 |
|---|---|
| %user | CPU在用户模式下执行进程的时间百分比(如应用程序、Shell脚本等) |
| %nice | 调整过优先级的用户进程占用的CPU时间百分比(若未调整则为0) |
| %system | CPU在内核模式下执行进程的时间百分比(如系统调用、中断处理等) |
| %iowait | CPU等待I/O操作完成的时间百分比,值过高可能表示磁盘I/O瓶颈 |
| %steal | 虚拟化环境中,其他虚拟机占用物理CPU的时间百分比 |
| %idle | CPU空闲时间百分比,若系统响应慢但%idle高,可能是内存不足或I/O等待导致 |
第二部分:设备/磁盘统计信息(默认输出)
| 字段 | 说明 |
|---|---|
| Device | 监控的磁盘设备名称(如sda、sdb) |
| tps | 每秒I/O操作次数(包括读+写请求),反映磁盘吞吐能力 |
| kB_read/s | 每秒从磁盘读取的数据量(单位KB),用于衡量读负载 |
| kB_wrtn/s | 每秒写入磁盘的数据量(单位KB),用于衡量写负载 |
| kB_read | 自系统启动以来读取的总数据量(单位KB) |
| kB_wrtn | 自系统启动以来写入的总数据量(单位KB) |
第三部分:扩展统计信息(需使用-x选项)
| 字段 | 说明 |
|---|---|
| rrqm/s | 每秒合并的读请求数(减少磁盘寻址,提升效率) |
| wrqm/s | 每秒合并的写请求数 |
| r/s | 每秒实际发起的读操作次数 |
| w/s | 每秒实际发起的写操作次数 |
| rkB/s | 每秒读取的千字节数(与kB_read/s等价) |
| wkB/s | 每秒写入的千字节数(与kB_wrtn/s等价) |
| avgrq-sz | 平均每次I/O操作的数据大小(单位扇区,1扇区=512B),反映I/O请求大小分布 |
| avgqu-sz | 平均I/O队列长度,持续超过2可能表示磁盘过载 |
| await | 平均每次I/O操作的等待时间(包括队列等待+磁盘处理时间,单位毫秒),正常应低于5ms |
| svctm | 平均每次I/O操作的服务时间(仅磁盘处理时间,单位毫秒),通常接近磁盘物理性能(如SSD约0.1ms) |
| %util | 磁盘繁忙时间百分比,接近100%表示磁盘饱和(注意:多磁盘阵列需结合具体硬件分析) |
浙公网安备 33010602011771号