我们在线上linux服务器排查问题时,一般会通过top、free、netstat、df -h等命令排查cpu、内存、网络和磁盘等问题。有的时候我们需要更进一步了解磁盘io的使用情况,那么本文就是重点讲解一下如何查看linux的磁盘io信息的。
一、iostat:
1、基本用法:
$iostat -d -k 1 10
1)参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。
2)含义:
上面的例子中,我们可以看到磁盘sda以及它的各个分区的统计数据,当时统计的磁盘总TPS是39.29,下面是各个分区的TPS。(因为是瞬间值,所以总TPS并不严格等于各个分区TPS的总和)
3)指定监控的设备名称为sda:
iostat -d sda 2
2、-x 参数:
1)使用-x参数我们可以获得更多统计信息。
2)含义:
一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
3、-c参数:
iostat还可以用来获取cpu部分状态值:
iostat -c 1 10
avg-cpu: %user %nice %sys %iowait %idle
1.98 0.00 0.35 11.45 86.22
avg-cpu: %user %nice %sys %iowait %idle
1.62 0.00 0.25 34.46 63.67
iostat -d -k 1 10 #查看TPS和吞吐量信息(磁盘读写速度单位为KB)
iostat -d -m 2 #查看TPS和吞吐量信息(磁盘读写速度单位为MB)
iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态
iostat -d -x -k 1
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24
可以看到磁盘的平均响应时间<5ms,磁盘使用率>80。磁盘响应正常,但是已经很繁忙了。
ostat -d -k 1 |grep sda10
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda10 60.72 18.95 71.53 395637647 1493241908
sda10 299.02 4266.67 129.41 4352 132
sda10 483.84 4589.90 4117.17 4544 4076
sda10 218.00 3360.00 100.00 3360 100
sda10 546.00 8784.00 124.00 8784 124
sda10 827.00 13232.00 136.00 13232 136
上面看到,磁盘每秒传输次数平均约400;每秒磁盘读取约5MB,写入约1MB。
二、iotop:
1、iotop是一个用python编写的类似top界面的磁盘I/O监控工具。可以通过yum install iotop安装,运行该命令后如图:
2、常用参数:
-o --only 只显示实际具有I/O操作的进程或线程。可以通过快捷键o进行控制
-b --batch 非交互式模式,可以用于保存输出结果
-n 刷新次数
-d 刷新间隔时间
-P 只显示进程,不显示线程
-p 监控指定进程或线程
-k 使用KB表示I/O带宽。默认情况下,iotop使用B/s,K/s,M/s表示I/O带宽。
-u 监控指定用户的I/O操作情况
-t 在每行输出加上时间戳
-q 只在第一次输出时显示列名称
-qq 不显示列名称
-qqq 不显示总的I/O信息
$ sudo iotop -b -d 1 -n 5 -o -u mongod -P -p 1524 -qqq
1524 be/4 mongod 0.00 B/s 527.27 K/s 0.00 % 0.54 % mongod -f /etc/mongod.conf
1524 be/4 mongod 0.00 B/s 566.84 K/s 0.00 % 1.40 % mongod -f /etc/mongod.conf
1524 be/4 mongod 0.00 B/s 766.42 K/s 0.00 % 0.70 % mongod -f /etc/mongod.conf
1524 be/4 mongod 0.00 B/s 946.21 K/s 0.00 % 0.37 % mongod -f /etc/mongod.conf