Iostat命令是用于通过观察设备相对于其平均传输速率的活动时间来监视系统输入/输出设备负载的命令。iostat创建可用于更改系统配置的报告,以更好地平衡物理磁盘之间的输入/输出。
iostat包含在sysstat包中。如果您没有,则需要先安装。
在RedHat / CentOS / Fedora上
#yum install sysstat
在Debian / Ubuntu / Linux Mint上
#apt-get install sysstat
1)获取报告和统计数据
要运行它,只需在控制台中使用该命令即可。这是一个样本。
#iostat
Linux 3.10.0-514.16.1.el7.x86_64(centos-01)05/22/2017 _x86_64(1个CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
0.69 0.00 0.19 0.02 0.04 99.08
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
vda 1.00 3.40 14.08 1552428 6423128
第一部分包含CPU报告
%user: 在用户(应用程序)级别执行时发生的CPU利用率百分比
%nice: 在具有良好优先级的用户级别执行时发生的CPU利用率百分比
%system: 在系统(内核)级别执行时发生的CPU利用率百分比
%iowait: 系统具有未完成的磁盘I / O请求的CPU或CPU空闲时间的百分比
%steal: 虚拟机管理程序为另一个虚拟处理器提供服务时,虚拟CPU或CPU在非自愿等待中所花费的时间百分比
%idle: CPU或CPU空闲且系统没有未完成的磁盘I / O请求的时间百分比
第二部分包含设备利用率报告
设备:/ dev目录中列出的设备/分区名称
tps: 颁发给设备的每秒传输次数。更高的tps意味着处理器更忙
Blk_read / s:显示从设备读取的数据量,以每秒的块数(千字节,兆字节)表示
Blk_wrtn / s: 写入设备的数据量,以每秒块数(千字节,兆字节)表示
Blk_read:显示读取的块总数
Blk_wrtn:显示写入的块总数
iostat使用以下文件创建报告。
/proc/stat 包含系统统计信息
/proc/uptime 包含系统正常运行时间
/proc/diskstats 包含磁盘统计信息
/sys 包含块设备的统计信息。
/proc/self/mountstats 包含网络文件系统的统计信息。
/dev/disk 包含持久性设备名称。
iostat命令为I / O设备报告利用率。可以使用-x选项扩展深度诊断的统计结果
#iostat -x
Linux 3.10.0-514.16.1.el7.x86_64(centos-01)05/23/2017 _x86_64_(1 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
0.69 0.00 0.19 0.02 0.04 99.06
设备:rrqm / s wrqm / sr / sw / s rkB / s wkB / s avgrq-sz avgqu-sz await r_await w_await svctm%util
vda 0.01 1.10 0.16 0.84 3.37 14.04 34.88 0.00 2.35 1.41 2.53 0.40 0.04
. avg-cpu: 它是cpu块信息
. Devide: 它是设备块信息。确保你在好的设备上
. %util:存储设备有多少时间工作(忙碌)。
. svctm:表示您的I / O子系统在忙时响应请求的速度有多快。实际上,你加载系统越少,svctm越高。
. await:表示请求的通过速度。这只是一个平均值。
. avgqu-sz:请求队列中有多少请求。低=您的系统未加载,或者已经序列化I / O并且无法正确使用底层存储。高=您的软件堆栈可扩展到足以正确加载底层I / O.
. avgrq-sz:平均请求大小。可以指示发生了哪种工作负载。
. wsec / s&rsec / s:每秒读取和写入的扇区。除以2048,你将获得每秒兆字节。
. r / s&w / s:每秒读写请求数。这些数字是I / O容量数字,但当然,取决于I / O子系统的基础压力(队列大小!),它们可以变化。
. rrqm / s&wrqm / s:块层合并了多少个请求。
可以通过-c选项显示我们的cpu的统计信息和报告
$ iostat -c
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
12.93 0.08 2.40 3.35 0.00 81.24
4)仅显示设备报告
可以仅使用-d选项显示设备利用率的状态。它将列出每个连接设备的信息
$ iostat -d
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
sda 17.73 510.80 632.10 5127420 6345037
mmcblk0 0.03 0.63 0.00 6282 0
5)仅显示设备的扩展I / O统计信息
我们可以在一侧显示扩展统计数据,从另一侧显示扩展统计数据。这意味着我们只能为具有-xd以下选项的设备显示扩展统计信息
$ iostat -xd
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
设备:rrqm / s wrqm / sr / sw / s rkB / s wkB / s avgrq-sz avgqu-sz await r_await w_await svctm%util
sda 0.48 25.33 8.43 7.81 417.06 540.42 117.88 1.18 72.83 35.98 112.62 6.18 10.03
mmcblk0 0.30 0.00 0.02 0.00 0.49 0.00 49.47 0.00 3.73 3.73 4.00 2.99 0.01
6)以千字节或兆字节为单位捕获统计信息
默认情况下,iostat以字节为单位测量I / O系统。为了便于阅读,我们可以转换iostat以向我们显示以千字节或兆字节为单位的报告。
只需添加-k参数即可创建包含千字节单位的报告
$ iostat -k
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
12.54 0.08 2.37 3.41 0.00 81.61
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
sda 16.18 345.76 504.55 5622164 8204113
mmcblk0 0.02 0.39 0.00 6282 0
和-m参数以创建具有兆字节单位的报告。
$ iostat -m
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
12.54 0.08 2.37 3.41 0.00 81.61
设备:tps MB_read / s MB_wrtn / s MB_read MB_wrtn
sda 16.18 0.34 0.49 5490 8012
mmcblk0 0.02 0.00 0.00 6 0
7)延迟显示cpu和设备统计信息
与vmstat相同,作为统计工具,使用它的最佳方法是使用delay参数。随着延迟,我们可以看到趋势是什么。以下是一些延迟运行iostat的示例。
以千字节为单位运行iostat,间隔2秒,报告3次
#iostat -k 2 3
Linux 3.10.0-514.16.1.el7.x86_64(centos-01)05/23/2017 _x86_64_(1 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
0.70 0.00 0.19 0.02 0.03 99.05
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
vda 1.00 3.33 14.03 1561788 6572152
avg-cpu:%user%nice%system%iowait%steal%idle
0.50 0.00 0.00 0.00 0.00 99.50
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
avg-cpu:%user%nice%system%iowait%steal%idle
3.52 0.00 0.50 0.00 0.00 95.98
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
vda 1.51 0.00 12.06 0 24
显示仅CPU报告,间隔为2秒,报告为2次
#iostat -c 2 2
Linux 3.10.0-514.16.1.el7.x86_64(centos-01)05/23/2017 _x86_64_(1 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
0.71 0.00 0.19 0.02 0.03 99.05
avg-cpu:%user%nice%system%iowait%steal%idle
1.50 0.00 0.00 0.00 0.00 98.50
显示sda6和sda7设备仅报告2秒间隔和2次报告
$ iostat -d sda7 sda6 2 2
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
sda6 3.40 108.29 130.75 1928577 2328496
sda7 12.19 211.96 305.79 3774804 5445696
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
sda6 0.00 0.00 0.00 0 0
sda7 1.00 0.00 24.00 0 48
8)显示持久性设备名称统计信息
可以按设备名称打印报告。/dev/sda它将使用-j参数和添加ID关键字(指定持久性名称的类型)来打印持久性设备名称,而不是标准名称。
$ iostat -j ID mmcbkl0 sda6 -x -m 2 2
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
14.33 0.10 2.48 3.26 0.00 79.83
设备:rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await r_await w_await svctm%util
ATA-ST500LT012-1DG142_S3P4312X-6部分
0.19 0.88 2.51 0.82 0.10 0.12 138.36 0.21 61.81 57.12 76.12 10.81 3.60
avg-cpu:%user%nice%system%iowait%steal%idle
19.40 0.00 1.25 0.63 0.00 78.72
设备:rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await r_await w_await svctm%util
ATA-ST500LT012-1DG142_S3P4312X-6部分
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
9)显示块设备的统计信息
可以自动直接显示每个块设备的信息。无需指明每个设备名称。它将显示块设备及其系统使用的所有分区的统计信息。如果在命令行上输入了设备名称,则会显示其及其所有分区的统计信息。只需使用-p选项
$ iostat -p
Linux 4.4.0-78-generic(shinigami)05/23/2017 _x86_64_(4 CPU)
avg-cpu:%user%nice%system%iowait%steal%idle
14.93 0.10 2.51 3.19 0.00 79.28
器件:tps kB_read / s kB_wrtn / s kB_read kB_wrtn
sda 15.82 297.18 474.87 5928512 9473117
sda1 0.00 0.11 0.00 2108 0
sda2 0.01 0.28 0.00 5679 1
sda3 0.00 0.10 0.00 2084 0
sda4 0.00 0.10 0.00 2092 0
sda5 0.09 0.77 45.62 15428 910068
sda6 3.26 102.76 117.09 2049957 2335908
sda7 12.09 192.75 306.99 3845120 6124136
sda8 0.12 0.20 5.16 3896 103004
mmcblk0 0.01 0.31 0.00 6282 0
mmcblk0p1 0.01 0.26 0.00 5242 0
10)显示lvm2统计信息
可以使用选项查看LVM统计信息-N。该命令显示任何设备映射器设备的已注册设备映射器名称
这些工具的优点之一是您可以在没有root权限的情况下运行它们。您可以通过在控制台中键入man iostat以访问iostat手册页来深入挖掘 iostat手册页。