当前统计
需要分析当前的磁盘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
打印逻辑磁盘名称
大多数时候我们了解逻辑磁盘名称。
因此,要使用逻辑磁盘名称打印磁盘 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) 等。
在对磁盘 I/O 性能问题进行故障排除时,Iostat 是最有用的命令之一。
它还可以用于解决 CPU 性能问题。
iostat 命令可以通过多种方式运行。