iostat是一个命令行工具,提供关于系统设备(如磁盘)输入/输出操作的详细统计信息。它是sysstat软件包的一部分,可以使用apt安装。iostat通过报告读取或写入的数据量、等待I/O操作所花费的时间以及用于I/O任务的CPU时间百分比等指标,帮助监控存储设备的性能。该工具特别适用于诊断磁盘瓶颈和优化系统性能。
在本教程中,我们将学习如何在Ubuntu Linux上安装和使用iostat软件。本指南兼容Ubuntu 24.04到16.04之间的所有版本。
前提条件
- 系统上已安装Ubuntu桌面版或服务器版。
- 系统上已设置具有sudo权限的非root用户。
安装iostat
默认情况下,iostat包含在Ubuntu的sysstat软件包中。只需运行以下命令即可安装:
sudo apt install sysstat -y
sysstat安装完成后,即可进行下一步。
iostat基本示例
首先,让我们运行不带任何参数的iostat命令。这将显示系统的CPU使用情况和I/O统计信息:
iostat
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
22.67 0.52 6.99 1.88 0.00 67.94
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 15.15 449.15 119.01 771022 204292
上述输出中,第一行显示Linux内核版本和主机名。接下来两行显示CPU统计信息,如平均CPU使用率、CPU空闲和等待I/O响应的时间百分比、虚拟CPU的等待时间百分比以及CPU空闲时间百分比。最后两行显示设备利用率报告,如每秒读写的块数和每秒总块读写数。
默认情况下,iostat以当前日期显示报告。如果要显示当前时间,请运行以下命令:
iostat -t
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU)
Saturday 16 December 2017 09:44:55 IST
avg-cpu: %user %nice %system %iowait %steal %idle
21.37 0.31 6.93 1.28 0.00 70.12
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 9.48 267.80 79.69 771022 229424
要检查iostat的版本,请运行以下命令:
iostat -V
输出:
sysstat version 10.2.0 (C) Sebastien Godard (sysstat orange.fr)
你可以使用以下命令列出iostat可用的所有选项:
iostat --help
输出:
Usage: iostat [ options ] [[ ] ] Options are: [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g ] [ -p [ [,...] | ALL ] ] [ [...] | ALL ]
iostat高级用法示例
如果只想查看一次设备报告,请运行以下命令:
iostat -d
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 12.18 353.66 102.44 771022 223320
要每5秒连续查看设备报告3次:
iostat -d 5 3
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 11.77 340.71 98.95 771022 223928 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 2.00 0.00 8.00 0 40 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.60 0.00 3.20 0 16
如果要查看特定设备的统计信息,请运行以下命令:
iostat -p sda
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
21.69 0.36 6.98 1.44 0.00 69.53
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 11.00 316.91 92.38 771022 224744
sda1 0.07 0.27 0.00 664 0
sda2 0.01 0.05 0.00 128 0
sda3 0.07 0.27 0.00 648 0
sda4 10.56 315.21 92.35 766877 224692
sda5 0.12 0.48 0.02 1165 52
sda6 0.07 0.32 0.00 776 0
你还可以使用以下命令查看多个设备的统计信息:
iostat -p sda, sdb, sdc
如果要以MB/秒为单位显示设备I/O统计信息,请运行以下命令:
iostat -m
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
21.39 0.31 6.94 1.30 0.00 70.06
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 9.67 0.27 0.08 752 223
如果要查看特定分区(sda4)的扩展信息,请运行以下命令:
iostat -x sda4
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
21.26 0.28 6.87 1.19 0.00 70.39
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda4 0.79 4.65 5.71 2.68 242.76 73.28 75.32 0.35 41.80 43.66 37.84 4.55 3.82
如果只想显示CPU使用统计信息,请运行以下命令:
iostat -c
你应该看到以下输出:
Linux 3.19.0-25-generic (Ubuntu-PC) Saturday 16 December 2017 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
21.45 0.33 6.96 1.34 0.00 69.91