当前统计

需要分析当前的磁盘I/O统计信息,可以通过运行iostat一段时间来完成。
以某个时间间隔运行 iostat 并带有一些可选计数的语法是:

# iostat [interval] [count]

示例 2
要以 1 秒的间隔运行 iostat,计数为 5:

# iostat 1 5
   tty        sd0           sd1           sd2           sd3            cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
   0    6  17   1   18    0   0    0    0   0    0    0   0    0    0  1  0 99
   0  235   0   0    0    0   0    0    0   0    0    0   0    0    0  0  0 99
   0   80   0   0    0    0   0    0    0   0    0    0   0    0    0  0  0 100
   0   81   0   0    0    0   0    0    0   0    0    0   0    0    0  1  0 99
   0   80   0   0    0    0   0    0    0   0    0    0   0    0    0  1  0 99
on  it road.com

打印逻辑磁盘名称

大多数时候我们了解逻辑磁盘名称。
因此,要使用逻辑磁盘名称打印磁盘 I/O 统计信息,请使用选项 -n :

例 7

# iostat -n
   tty       c8t0d0        c8t1d0        c7t0d0        c8t2d0          cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
   0    5  16   0   18    0   0    0    0   0    0    0   0    0    0  1  0 99

每个分区统计

使用 -p 选项,我们还可以根据需要打印每个分区的 io 统计信息。

例 9

# iostat -xpn 1 10
                    extended device statistics
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.2    0.3    6.8    9.0  0.0  0.0    0.0   18.5   0   0 c8t0d0
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c8t0d0s0
    0.2    0.3    6.8    9.0  0.0  0.0    0.0   19.9   0   0 c8t0d0s1
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.0   0   0 c8t0d0s8

开机后总计

默认情况下,如果我们在没有任何选项的情况下运行 iostat,它将显示自启动以来的摘要,这对于比较瓶颈中的系统性能与平均系统性能非常有用。

示例 1

# iostat
   tty        sd0           sd1           sd2           sd3            cpu
 tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
   0    5  18   1   19    0   0    0    0   0    0    0   0    0    0  1  0 99

输出显示所有设备实例以及终端和 CPU 统计信息。
下面是显示的参数:

kps - kilobytes per second.
tps - transactions per second.
serv - average service time.
tin - terminal in chars
tout - terminal out chars
us - % user time
sy - % system time
wt - % I/O wait time (ignore this as it is no longer calculated & will always return 0)
id - % Idle time

特定磁盘的统计信息

我们还可以使用 iostat 仅获取特定磁盘或者磁盘集的磁盘 I/O 统计信息:

例 6

# iostat -dl 2 sd0 sd4 1 3
    sd0           sd4
kps tps serv  kps tps serv
 16   0   18    0   0    0
  0   0    0    0   0    0
  0   0    0    0   0    0

记住用 l 限制输出中显示的磁盘,否则它会打印所有磁盘。

错误统计

要检查磁盘上的硬错误和软错误,请在 iostat 命令中使用 -e 选项:
例 10

# iostat -en
  ---- errors --
  s/w h/w trn tot device
    0   0   0   0 c8t0d0
    0   0   0   0 c8t1d0
    0   0   0   0 c7t0d0
    0   0   0   0 c8t2d0
    0   0   0   0 c8t3d0
    0   0   0   0 c8t4d0

各种错误是:

软错误:磁盘扇区CRC校验失败,需要重新读取
硬错误:CRC 校验重读多次失败
传输错误:I/O 总线报告的错误
总错误数:软错误 + 硬错误 + 传输错误

还可以使用 -E 选项显示各种错误统计信息:

例 11

# iostat -E
sd0       Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: VMware,  Product: VMware Virtual S Revision: 1.0  Serial No:
Size: 10.74GB [10737418240 bytes]
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 9 Predictive Failure Analysis: 0
sd1       Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: VMware,  Product: VMware Virtual S Revision: 1.0  Serial No:
Size: 24.70GB [24696061952 bytes]
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 6 Predictive Failure Analysis: 0

组合多个选项

现在在使用 iostat 时,我们通常会结合 3 或者 4 个选项,只为我们提供我们感兴趣的输出。
如下例所示,通过组合 iostat 示例中的各种选项,我们只会得到非零行,包括逻辑磁盘名称、扩展统计信息等。

例 12

# iostat -xntcz 1 3
   tty         cpu
 tin tout  us sy wt id
   0    5   0  1  0 99
                    extended device statistics
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.1    0.3    6.1   17.3  0.0  0.0    0.0   20.8   0   0 c8t0d0
    0.0    0.0    0.0    0.0  0.0  0.0    0.0    0.1   0   0 c7t0d0
   tty         cpu
 tin tout  us sy wt id
   0  313   0 62  0 38
                    extended device statistics
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.0   54.7    0.0 50579.8  0.0  5.7    0.2  104.5   1  68 c8t0d0
   tty         cpu
 tin tout  us sy wt id
   0  288   0 35  0 65
                    extended device statistics
    r/s    w/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
    0.0  164.4    0.0 36788.5  0.0  5.1    0.0   31.0   0  68 c8t0d0

仅显示磁盘统计信息

经典样式

默认的 iostat 还显示 CPU 统计信息。
要仅显示磁盘统计信息,请使用 -d 选项。
这将使用 kps、tps 和 serv 值以经典方式打印磁盘统计信息。

示例 3

# iostat -d 1 3
    sd0           sd1           sd2           sd3
kps tps serv  kps tps serv  kps tps serv  kps tps serv
 16   0   18    0   0    0    0   0    0    0   0    0
  0   0    0    0   0    0    0   0    0    0   0    0
  0   0    0    0   0    0    0   0    0    0   0    0

我的系统中实际上有 5 个磁盘,但上面的输出仅显示 4 个磁盘的磁盘统计信息。
这是因为默认的 iostat 命令仅显示前 4 个磁盘的磁盘统计信息。
要打印超过 4 个磁盘的磁盘统计信息,我们可以使用 -l 选项(我们可以使用 l 提供我们想要磁盘统计信息的磁盘数量)

示例 4

# iostat -dl 5 1 3
    sd0           sd1           sd2           sd3           sd4
kps tps serv  kps tps serv  kps tps serv  kps tps serv  kps tps serv
 16   0   18    0   0    0    0   0    0    0   0    0    0   0    0
  0   0    0    0   0    0    0   0    0    0   0    0    0   0    0
  0   0    0    0   0    0    0   0    0    0   0    0    0   0    0

在上面的示例中,5 是要打印统计信息的磁盘数,(1 3) 分别是间隔和计数。

新样式

在带有选项 -D 的最新 iostat 命令样式中,我们得到 rps(每秒读取数)、wps(每秒写入数)和 util(利用率百分比)。

例 5

# iostat -D 1 3
    sd0           sd1           sd2           sd3
rps wps util  rps wps util  rps wps util  rps wps util
  0   0  0.3    0   0  0.0    0   0  0.0    0   0  0.0
  0   0  0.0    0   0  0.0    0   0  0.0    0   0  0.0
  0   0  0.0    0   0  0.0    0   0  0.0    0   0  0.0

扩展设备统计

选项 -x 显示扩展设备统计信息。

例 8

# iostat -x
                 extended device statistics
device    r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b
sd0       0.2    0.3    6.9    9.1  0.0  0.0   18.5   0   0
sd1       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd2       0.0    0.0    0.0    0.0  0.0  0.0    0.1   0   0
sd3       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd4       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
sd5       0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0

扩展的统计数据显示了一些另外的信息,例如读取/秒 (r/s)、写入/秒 (w/s)、每秒读取的千字节数和每秒写入的千字节数(kr/s 和 kw/s)、平均。
活动事务 (actv)、平均服务时间 (svc_t) 等。

用于 Solaris 性能故障排除的 iostat 示例

在对磁盘 I/O 性能问题进行故障排除时,Iostat 是最有用的命令之一。
它还可以用于解决 CPU 性能问题。
iostat 命令可以通过多种方式运行。

日期:2020-09-17 00:15:23 来源:oir作者:oir