磁盘监控工具iostat与iotop使用教程
一、引言
在日常运维与性能排查工作中,磁盘 I/O 是许多性能问题的根源。在 Linux 系统中,可以通过iostat和iotop两款工具来深入了解磁盘 I/O 的运行状况,iostat 偏向于展现磁盘的整体性能,iotop 则是用于查询具体是什么进程导致磁盘 I/O 负载过高。二者结合使用,可以在数分钟内定位大部分 I/O 异常问题。
二、iostat
iostat 同vmstat工具类似,用于对服务器上磁盘的整体 I/O 性能进行分析,通过该工具可以统计每块磁盘的使用率、IOPS、吞吐量等核心性能指标,这些指标数据通常来自 /proc/diskstats
1、iostat 常用选项
-x:显示扩展统计信息
-d:显示磁盘统计信息,也是默认选项
-c:显示CPU的统计信息
-p:显示每个分区的统计情况
-m:以m为单位进行统计
N...N:和vmstat一样,iostat也可以使用2个数字指定刷新状态信息的间隔以及总共统计的次数
#第一次执行iostat命令时统计的将是开机的那一刻到执行命令那一刻的数据,再次使用iostat命令则是统计当前点到上一次执行iostat命令时产生的数据。 iostat -d -x -m 3 #每3秒统计一次磁盘信息 iostat -d -x -m sdb 2 #每2秒统计一次sdb的信息

2、iostat 指标解读

1、第一部分
展示系统内核、主机名、当前时间、架构、CPU个数等信息
2、第二部分
CPU平均负载情况,包括:
· %user:用户进程所占用CPU时间片的百分比。
· %nice:某些被修改过优先值的进程所占用CPU时间片的百分比。
· %system:系统或者内核进程所占用CPU时间片的百分比。
· %iowait:CPU等待磁盘IO完成所占用的CPU时间百分比,即CPU等待硬盘响应指令的时间。因为CPU速度比硬盘快N倍,每次发出IO指令后要等硬盘工作结束。此值越高,表示硬盘压力越大。
· %steal:如果有虚拟机服务,那么虚拟机占用的CPU资源百分比。
· %idel:CPU空闲时间百分比。该值越高越好,如果长期低于10-20%,那么需要考虑升级CPU。
3、第三部分
磁盘相关信息,包括:
· tps:磁盘每秒传输的次数,一次传输代表一次IO请求。多个逻辑请求可以合并为一次IO请求。
· rMB/s:每秒从设备上读取的数据量,wMB/s 除以 w/s = 每个写IO的大小
· wMB/s:每秒向设备写入的数据量
通过rMB/s + wMB/s 可以计算出IO吞吐量;通过r/s + w/s可以计算出IOPS
三、iotop
iotop 是一款类似于 top 的实时进程级 I/O 监控工具,它可以显示当前系统中每个进程的磁盘读写速率、I/O 等待时间等信息,可以实现快速对磁盘 I/O 异常进行定位,找出具体是什么进程导致磁盘大量读写。
1、iotop 常用选项
-o:只显示有实际 I/O 活动的进程,常用参数
-d:设置刷新间隔,默认1秒
-n:指定刷新次数
-P:显示线程级别信息
-k:将数据单位转为 KB/s 或 MB/s,默认是字节
-p:只监控指定 PID 进程
-u:只显示指定用户的进程
#每 2 秒刷新一次,共统计 10 次,结果写入日志文件 iotop -d 2 -n 10 > iotop.log
2、iotop 指标解读

PRIO:进程优先级
USER:进程所属用户
DISK READ: 实时磁盘读取速率
DISK WRITE: 实时磁盘写入速率
IO%: 进程等待 I/O 的 CPU 时间比例
COMMAND:具体进程
通常通过 DISK READ / DISK WRITE 可以快速判断是哪个进程正在进行大量磁盘操作。若 IO% 较高,则说明进程大量时间都在等待 I/O 完成,需要重点关注。
文章评论