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