Linux 查看磁盘IO并找出占用IO读写很高的进程

1. 简介

在运维工作中,我们经常需要查看服务器的磁盘IO情况,并找出占用IO读写很高的进程。本文将介绍如何使用Linux命令来查看磁盘IO信息,并找出占用IO读写很高的进程。

2. 查看磁盘IO信息

2.1 iostat命令

iostat命令是Linux系统中常用的查看磁盘IO信息的工具。可以使用以下命令安装iostat:

sudo apt-get install sysstat

安装完成后,可以使用以下命令查看磁盘IO信息:

iostat -d -k 1

上述命令中,-d参数表示只显示磁盘设备的IO信息,-k参数表示以kBytes为单位显示IO数据。

执行上述命令后,将会输出类似以下的信息:

Linux 5.4.0-52-generic (hostname)    11/23/2020  _x86_64_ (2 CPU)

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn

sda 0.10 0.20 2.40 10 120

sdb 6.80 23.40 4.80 1170 240

上面的输出结果中,tps表示每秒传输的IO请求个数,kB_read/s表示每秒读取的数据量,kB_wrtn/s表示每秒写入的数据量,kB_read表示总共读取的数据量,kB_wrtn表示总共写入的数据量。

从上面的结果可以看出,每个磁盘设备的IO情况都可以通过iostat命令获取到。

2.2 vmstat命令

vmstat命令不仅可以查看磁盘IO信息,还可以查看内存和CPU的使用状况。以下是使用vmstat命令查看磁盘IO信息的示例:

vmstat -d

执行上述命令后,将会输出类似以下的信息:

disk-xxxx  rd_ios  wr_ios  rd_merges  wr_merges  rd_sectors  wr_sectors  fsyncs   progress   ticks    milli

sda 0 2 0 6 0 44 0 0 0 0

sdb 2 2 17 2 240 3920 0 0 0 0

上面的输出结果中,rd_ios表示每秒读取的IO请求个数,wr_ios表示每秒写入的IO请求个数,rd_sectors表示每秒读取的扇区数,wr_sectors表示每秒写入的扇区数。

3. 找出占用IO读写很高的进程

有了磁盘IO信息,我们就可以找出占用IO读写很高的进程。下面介绍两种方法:

3.1 使用top命令

top命令可以查看系统的实时状态,包括CPU、内存、磁盘IO等。以下是使用top命令找出占用IO读写很高的进程的步骤:

打开终端,执行top命令:

top

按下大写的I键(或按下shift + i),根据磁盘IO排序进程:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

5290 root 20 0 7120136 722572 233416 S 0.0 4.1 0:58.61 docker

上面的输出结果中,可以看到第一个进程的磁盘IO占用较高。

3.2 使用iotop命令

iotop命令是一个用于查看磁盘IO的实时情况的工具。以下是使用iotop命令找出占用IO读写很高的进程的步骤:

打开终端,执行以下命令安装iotop:

sudo apt-get install iotop

安装完成后,执行以下命令打开iotop:

sudo iotop

按下大写的O键(或按下shift + o),根据磁盘IO排序进程:

 Total DISK READ :       0.00 B/s | Total DISK WRITE :      0.00 B/s

Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

158 be/3 root 0.00 B/s 0.00 B/s 0.00 % 37.00 % [kswapd0]

上面的输出结果中,可以看到列出了占用磁盘IO读写较高的进程。

4. 总结

在Linux系统中,我们可以使用iostat和vmstat命令来查看磁盘IO信息,使用top和iotop命令来找出占用IO读写很高的进程。这些工具对于运维工作非常有用,可以帮助我们及时发现和解决磁盘IO问题。

操作系统标签