Linux 状态命令之磁盘状态 iostat

本文详细介绍了Linux系统下iostat工具的使用方法,包括安装、命令格式及参数说明,并通过实例展示了如何解读iostat输出的各项指标,帮助读者理解磁盘I/O和CPU使用情况,以及如何判断服务器是否存在I/O性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux系统中的iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

安装

yum install sysstat

iostat命令格式

iostat [参数] [时间] [次数]

命令参数:
  -c 显示CPU使用情况
  -d 显示磁盘使用情况
  -k 以K为单位显示
  -m 以M为单位显示
  -N 显示磁盘阵列(LVM) 信息
  -n 显示NFS使用情况
  -p 可以报告出每块磁盘的每个分区的使用情况
  -t 显示终端和CPU的信息
  -x 显示详细信息

实例

[fenglepeng@centos]#iostat -x
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 	12/20/2022 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.54    0.01    0.38    0.00    0.00   99.08

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
fd0               0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00   22.25   22.25    0.00  22.25   0.00
sdb               0.00     0.00    0.00    0.02     0.00     0.11    12.58     0.00    1.71    1.69    1.71   1.24   0.00
sda               0.00     0.05    0.00    0.26     0.62     3.83    33.26     0.00    7.26    7.39    7.25   0.52   0.01
dm-0              0.00     0.00    0.00    0.31     0.60     3.82    28.24     0.00   11.18    7.49   11.22   0.45   0.01
dm-1              0.00     0.00    0.00    0.00     0.00     0.00    50.09     0.00    0.07    0.07    0.00   0.07   0.00

输出内容详解:

avg-cpu:cpu 状态

  • %user:CPU处在用户模式下的时间百分比。
  • %nice:CPU处在带NICE值的用户模式下的时间百分比。
  • %system:CPU处在系统模式下的时间百分比。
  • %iowait:CPU等待输入输出完成时间的百分比。
  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
  • %idle:CPU空闲时间百分比。

Device:设备名称。当然了,iostat命令的重点不是用来看CPU的,重点是用来监测磁盘性能的。

  • rrqm/s:每秒合并到设备的读取请求数。
  • wrqm/s:每秒合并到设备的写请求数。
  • r/s:每秒向磁盘发起的读操作数。
  • w/s:每秒向磁盘发起的写操作数。
  • rkB/s:每秒读K字节数。
  • wkB/s:每秒写K字节数。
  • avgrq-sz:平均每次设备I/O操作的数据大小。
  • avgqu-sz:平均I/O队列长度。
  • await:平均每次设备I/O操作的等待时间 (毫秒),一般地,系统I/O响应时间应该低于5ms,如果大于 10ms就比较大了。
  • r_await:每个读操作平均所需的时间;不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
  • w_await:每个写操作平均所需的时间;不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。
  • svctm:平均每次设备I/O操作的服务时间 (毫秒)(这个数据不可信!)。
  • %util:一秒中有百分之多少的时间用于I/O操作,即被IO消耗的CPU百分比,一般地,如果该参数是100%表示设备已经接近满负荷运行了。
[fenglepeng@centos]# iostat 
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 	12/20/2022 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.54    0.01    0.38    0.00    0.00   99.08

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
fd0               0.00         0.00         0.00      21280          0
sdb               0.02         0.00         0.11       2790    1811861
sda               0.27         0.62         3.83   10461853   64221227
dm-0              0.31         0.60         3.82    9995019   64162414
dm-1              0.00         0.00         0.00       2204          0

输出内容详解:

  • tps:每秒I/O数(即IOPS。磁盘连续读和连续写之和)。
  • kB_read/s:每秒从磁盘读取数据大小,单位KB/s。
  • kB_wrtn/s:每秒写入磁盘的数据的大小,单位KB/s。
  • kB_read:从磁盘读出的数据总数,单位KB。
  • kB_wrtn:写入磁盘的的数据总数,单位KB。

性能监控指标

我们到底该关注哪些输出内容就可以确定这台服务器是否存在IO性能瓶颈。

  • %iowait:如果该值较高,表示磁盘存在I/O瓶颈。
  • await:一般地,系统I/O响应时间应该低于5ms,如果大于10ms就比较大了。
  • avgqu-sz:如果I/O请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O等待队列长度。
  • %util:一般地,如果该参数是100%表示设备已经接近满负荷运行了。

最后,除了关注指标外,我们更需要结合部署的业务进行分析。对于磁盘随机读写频繁的业务,比如图片存取、数据库、邮件服务器等,此类业务吗,tps才是关键点。对于顺序读写频繁的业务,需要传输大块数据的,如视频点播、文件同步,关注的是磁盘的吞吐量。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值