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问题。