iostat是Linux系统中用于监控输入/输出(I/O)设备负载的命令行工具,通过观察设备活动时间和平均传输速率来提供统计信息。iostat是sysstat软件包的一部分,对于诊断磁盘使用相关的性能问题、识别瓶颈以及监控存储子系统的整体健康状况具有极高的价值。在Debian Linux上,iostat可以提供关于CPU利用率、设备利用率和吞吐量的详细统计数据,是系统管理员管理和优化磁盘I/O性能的必备工具。
本教程将介绍如何在Debian 12上安装和使用iostat。
在Debian 12上安装iostat
iostat命令包含在sysstat软件包中,该软件包在Debian官方仓库中可直接获取。要在Debian 12上安装iostat,请按以下步骤操作:
第一步:更新系统软件包列表
在安装任何软件之前,最好先更新软件包列表,以确保从仓库中获取最新版本。打开终端并运行:
sudo apt update
此命令会刷新本地软件包数据库,确保系统了解最新版本和安全补丁。
第二步:安装sysstat软件包
iostat命令包含在sysstat软件包中,该软件包还包含其他系统性能监控工具,如mpstat和sar。要安装sysstat,运行以下命令:
sudo apt install sysstat
这将下载并安装所需的二进制文件和依赖项。
第三步:启用并配置sysstat服务
安装完成后,需要启用sysstat服务以定期收集性能统计数据。默认情况下,sysstat软件包已安装但其数据收集功能并未启用。要启用它:
1. 使用文本编辑器打开/etc/default/sysstat文件:
sudo nano /etc/default/sysstat
2. 找到ENABLED="false"这一行,将其修改为ENABLED="true"。
3. 保存并退出编辑器(在Nano中按Ctrl+O保存,然后按Ctrl+X退出)。
4. 重启sysstat服务以应用更改:
sudo systemctl restart sysstat
现在,sysstat服务将开始收集系统统计数据,包括磁盘I/O信息,这些数据稍后可以使用iostat查看。
在Debian 12上使用iostat
安装完成后,你可以开始使用iostat命令来监控系统的I/O性能。以下是一些常用示例。
基本用法
要显示CPU和设备I/O统计信息的摘要,只需运行:
iostat
此命令将显示自上次系统启动以来的平均CPU负载和磁盘I/O统计数据。第一部分显示CPU使用百分比(用户、系统、空闲等),后续部分列出每个设备的I/O数据,包括tps(每秒事务数)、kB_read/s和kB_wrtn/s等指标。

实时监控
要实时监控磁盘I/O,可以使用-x参数获取扩展统计数据,并指定刷新间隔。例如,每2秒显示一次更新的统计数据:
iostat -x 2
此命令将每2秒持续刷新输出,为你提供CPU和I/O活动的实时视图。
监控特定设备
如果要监控特定设备,可以按名称指定。例如,仅监控/dev/sda,运行:
iostat -x 2 /dev/sda
这将仅显示指定设备的统计数据,非常适合在排查问题或监控特定磁盘时使用。

查看历史数据
iostat工具还可以显示由sysstat服务收集的历史数据。要查看前一天的I/O活动,使用-h参数配合-p参数查看所有分区。例如:
iostat -h -p ALL
这将为你提供所有设备和分区的详细历史视图。
使用技巧
1. 理解关键指标:
%util:设备繁忙时间的百分比。如果持续接近100%,则该设备可能成为瓶颈。
await:I/O请求完成的平均时间(毫秒)。高值可能表示存在I/O瓶颈。
tps:每秒事务数,衡量每秒I/O操作的数量。高事务数对于繁忙磁盘可能是正常的,但如果同时伴随高await和%util,则可能表示存在问题。
2. 定期监控:
设置cron定时任务定期运行iostat并将输出记录到文件中以便后续分析。例如,将以下行添加到crontab中,每10分钟记录一次磁盘I/O:
*/10 * * * * /usr/bin/iostat -x >> /var/log/iostat.log
3. 结合其他工具使用:
iostat非常适合I/O专项监控,但结合其他工具可以获得更全面的系统性能视图:使用top或htop监控CPU和内存,使用iotop查看按进程的I/O情况。