iostat
iostat
是一个用于监控系统 I/O(输入/输出)性能的工具,常用于分析 CPU 使用率和磁盘设备的读写性能。它是 sysstat
包的一部分,广泛应用于 Linux 系统。以下是 iostat
的常用命令选项及其用法说明,包括示例。
安装 iostat
如果系统中没有 iostat
,需要安装 sysstat
:
- Ubuntu/Debian:
sudo apt-get install sysstat
- CentOS/RHEL:
sudo yum install sysstat
- Fedora:
sudo dnf install sysstat
验证安装:
iostat -V
基本语法
iostat [选项] [间隔时间] [次数]
- 间隔时间:每隔多少秒刷新一次数据(单位:秒)。
- 次数:刷新数据的次数,默认无限。
常用选项
以下是 iostat
的常用选项及其含义:
-
-c
:- 显示 CPU 使用率统计。
- 示例:
输出:iostat -c
avg-cpu: %user %nice %system %iowait %steal %idle 5.00 0.10 2.00 0.50 0.00 92.40
-
-d
:- 显示磁盘设备统计(不包括 CPU)。
- 示例:
输出:iostat -d
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 10.20 128.50 64.30 128500 64300
-
-x
:- 显示扩展统计信息(更详细的磁盘性能指标)。
- 示例:
输出:iostat -x
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.10 0.20 5.00 5.20 128.50 64.30 40.00 0.05 10.00 8.00 12.00 4.00 40.00
-
-k
:- 以 KB/s(千字节每秒)显示数据(默认是块/秒)。
- 示例:
iostat -d -k
-
-m
:- 以 MB/s(兆字节每秒)显示数据。
- 示例:
iostat -d -m
-
-t
:- 显示时间戳。
- 示例:
输出:iostat -t
04/06/2025 10:00:00 AM avg-cpu: %user %nice %system %iowait %steal %idle 5.00 0.10 2.00 0.50 0.00 92.40
-
-p [设备名]
:- 显示特定设备的统计信息(例如只监控
sda
)。 - 示例:
iostat -p sda
- 显示特定设备的统计信息(例如只监控
-
-N
:- 显示设备映射名称(如 LVM 或 RAID 设备)。
- 示例:
iostat -N
-
-z
:- 隐藏空闲设备(只显示有活动的设备)。
- 示例:
iostat -d -z
-
间隔时间
和次数
:- 动态监控,每隔指定秒数刷新,运行指定次数。
- 示例:
iostat -d 2 5
- 每 2 秒刷新,运行 5 次。
输出字段解释
CPU 统计(-c
)
%user
:用户态 CPU 使用率。%nice
:nice 优先级进程的 CPU 使用率。%system
:系统态 CPU 使用率。%iowait
:等待 I/O 的 CPU 时间百分比。%steal
:虚拟化环境中被偷走的 CPU 时间。%idle
:空闲 CPU 时间。
磁盘统计(-d
)
tps
:每秒传输次数(IOPS)。kB_read/s
:每秒读取的千字节数。kB_wrtn/s
:每秒写入的千字节数。kB_read
:总读取千字节数。kB_wrtn
:总写入千字节数。
扩展统计(-x
)
r/s
:每秒读取请求数。w/s
:每秒写入请求数。rkB/s
:每秒读取 KB。wkB/s
:每秒写入 KB。avgqu-sz
:平均队列长度。await
:平均 I/O 等待时间(毫秒)。svctm
:平均服务时间(毫秒)。%util
:磁盘利用率百分比。
常用用法示例
-
基本 CPU 和磁盘统计:
iostat
- 显示 CPU 和所有磁盘的概况。
-
实时监控磁盘性能(每 2 秒刷新):
iostat -d -k 2
- 输出磁盘读写速率(KB/s),持续更新。
-
详细磁盘性能分析:
iostat -x -k 2
- 显示扩展统计(如延迟、利用率),以 KB/s 为单位。
-
监控特定设备:
iostat -p sda -x 2
- 只监控
sda
的详细性能。
- 只监控
-
带时间戳的统计:
iostat -t -d -k 2 5
- 每 2 秒刷新 5 次,包含时间戳。
-
结合 CPU 和磁盘扩展统计:
iostat -c -d -x -k 2
- 同时监控 CPU 和磁盘的详细性能。
实用场景
-
检查磁盘瓶颈:
iostat -x -k 1
- 查看
%util
是否接近 100%(磁盘饱和),await
是否过高(延迟)。
- 查看
-
分析 I/O 负载:
iostat -d -k 2
- 观察
kB_read/s
和kB_wrtn/s
,判断读写压力。
- 观察
-
排查 CPU I/O 等待:
iostat -c 2
- 如果
%iowait
高,可能表示 I/O 是瓶颈。
- 如果
注意事项
- 单位转换:
-k
用 KB,-m
用 MB,根据需求选择。 - 设备名:使用
lsblk
确认设备名(如sda
、nvme0n1
)。 - 首次运行:第一次输出是系统启动以来的平均值,后续才是实时数据。
示例输出解析
运行 iostat -x -k 2
:
avg-cpu: %user %nice %system %iowait %steal %idle
5.00 0.10 2.00 0.50 0.00 92.40
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.10 0.20 5.00 5.20 128.50 64.30 40.00 0.05 10.00 4.00 40.00
- CPU 空闲率 92.4%,I/O 等待仅 0.5%,性能良好。
sda
的读写速率分别为 128.5 KB/s 和 64.3 KB/s,利用率 40%,无明显瓶颈。
如果需要更具体的使用场景或输出解释,请提供你的需求,我会进一步定制示例!