游乐游手机版
首页/系统平台/文章详情

Linux iostat命令使用详解

时间:2026-06-24 22:20
在系统性能调优与故障排查过程中,磁盘I O 往往成为主要的性能瓶颈。本文将从实战角度深度解析 iostat 这一经典工具——它可以精准监控设备的负载状况。首次运行时,iostat 会显示系统启动以来的累计统计信息;后续每次运行则展示自上次执行后的变化数据。通过指定采样次数与时间间隔,你可以轻松获取所

在系统性能调优与故障排查过程中,磁盘I/O 往往成为主要的性能瓶颈。本文将从实战角度深度解析 iostat 这一经典工具——它可以精准监控设备的负载状况。首次运行时,iostat 会显示系统启动以来的累计统计信息;后续每次运行则展示自上次执行后的变化数据。通过指定采样次数与时间间隔,你可以轻松获取所需的磁盘性能指标。

语法格式

标准调用命令如下,选项与参数含义清晰直观:

iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

基础用法

先运行一个最常见的示例,观察输出效果:

iostat -d -k 1 10Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtnsda              39.29        21.14         1.44  441339807   29990031sda1              0.00         0.00         0.00       1623        523sda2              1.32         1.43         4.54   29834273   94827104sda3              6.30         0.85        24.95   17816289  520725244sda5              0.85         0.46         3.40    9543503   70970116sda6              0.00         0.00         0.00        550        236sda7              0.00         0.00         0.00        406          0sda8              0.00         0.00         0.00        406          0sda9              0.00         0.00         0.00        406          0sda10            60.68        18.35        71.43  383002263 1490928140 Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtnsda             327.55      5159.18       102.04       5056        100sda1              0.00         0.00         0.00          0          0

参数 -d 表示显示磁盘使用状态;-k 强制以 Kilobytes 为单位输出;最后的 1 10 表示每 1 秒刷新一次数据,总共输出 10 次。输出中各列的含义解释如下:

tps:每秒的传输次数(Indicate the number of transfers per second that were issued to the device)。一次“传输”即代表一次 I/O 请求。多个逻辑请求可能被合并为一次物理 I/O 请求,请求的大小未知。

kB_read/s:每秒从设备读取的数据量;

kB_wrtn/s:每秒向设备写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数据量;以上单位均为 Kilobytes。

在上面的示例中,磁盘 sda 的总 TPS 为 39.29,下方展示了各个分区的 TPS。由于输出的是瞬间值,因此总 TPS 并不严格等于各分区 TPS 之和。

如果你希望只监控某个特定设备(例如 sda),可以使用如下命令:

iostat -d sda 2

-x 参数详解

iostat 的 -x 选项非常实用,用于显示扩展的 I/O 数据:

iostat -d -x -k 1 10Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s a vgrq-sz a vgqu-sz   await  svctm  %utilsda          1.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s a vgrq-sz a vgqu-sz   await  svctm  %utilsda          2.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20

这些扩展字段的含义如下:

rrqm/s:每秒该设备相关的读取请求被合并的次数(当 VFS 将请求发送给文件系统时,若发现多个读取请求指向相同的 Block,文件系统会合并这些请求)。

wrqm/s:每秒写入请求被合并的次数。

rsec/s:每秒读取的扇区数。

wsec/s:每秒写入的扇区数。

rKB/s:每秒发出的读请求数量。

wKB/s:每秒发出的写请求数量。

avgrq-sz:平均每次请求的扇区大小。

avgqu-sz:平均请求队列的长度。队列越短,说明 I/O 处理效率越高。

await:每个 I/O 请求处理的平均时间(单位毫秒),可以理解为 I/O 响应时间。通常系统 I/O 响应时间应低于 5ms,若超过 10ms 则表明延迟较大。该时间包含队列等待时间与服务时间,因此 await 通常大于 svctm;差值越小说明队列时间越短,反之则队列时间越长,系统可能存在性能问题。

svctm:平均每次设备 I/O 操作的服务时间(毫秒)。若 svctmawait 非常接近,说明几乎没有 I/O 等待,磁盘性能良好;若 await 远高于 svctm,则表示 I/O 队列等待时间过长,应用程序响应会变慢。

%util:在统计时间内,设备忙于处理 I/O 的时间占比。例如,间隔 1 秒内设备有 0.8 秒在处理 I/O,0.2 秒空闲,则 %util = 80%。该参数直观反映设备的繁忙程度。一般来说,若达到 100%,意味着设备接近满负荷运行(但在多磁盘场景下,即使 %util 达到 100%,由于并发能力,磁盘未必是瓶颈)。

-c 参数使用

iostat 同样可以查看 CPU 状态:

iostat -c 1 10

输出示例:

a vg-cpu: %user %nice %sys %iowait %idle
1.98 0.00 0.35 11.45 86.22
a vg-cpu: %user %nice %sys %iowait %idle
1.62 0.00 0.25 34.46 63.67

常见命令组合

以下整理了日常工作中最常用的几条 iostat 命令:

iostat -d -k 1 10 # 查看 TPS 和吞吐量(磁盘读写速度单位为 KB)

iostat -d -m 2 # 查看 TPS 和吞吐量(单位为 MB)

iostat -d -x -k 1 10 # 查看设备使用率(%util)、响应时间(await)

iostat -c 1 10 # 查看 CPU 状态

实例分析

来看一段实际输出,重点关注 sda10:

iostat -d -k 1 |grep sda10Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtnsda10            60.72        18.95        71.53  395637647 1493241908sda10           299.02      4266.67       129.41       4352        132sda10           483.84      4589.90      4117.17       4544       4076sda10           218.00      3360.00       100.00       3360        100sda10           546.00      8784.00       124.00       8784        124sda10           827.00     13232.00       136.00      13232        136

从以上数据可以看出,磁盘每秒传输次数平均约 400;每秒读取数据约 5MB,写入约 1MB。

再结合 -x 参数查看详细指标:

iostat -d -x -k 1Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s a vgrq-sz a vgqu-sz   await  svctm  %utilsda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

观察发现,磁盘的平均响应时间(await)小于 5ms,但磁盘使用率(%util)已超过 80%。这表示磁盘响应速度尚在正常范围内,但负载已经相当繁忙,需要密切监控是否接近容量上限。

来源:https://www.jb51.net/LINUXjishu/600381.html
上一篇CentOS中使用iptables封禁IP的详细命令教程 下一篇Win11 25H2正式版更新推送 速度快无重大新功能
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送