Linux iotop查看磁盘IO

服务器突然变卡、网站响应变慢,很多时候不是 CPU 跑满,而是某块磁盘被某个进程反复读写拖垮了。iotop 就是用来实时查看磁盘 IO 并定位高读写进程的工具,它能按进程显示读写速率,帮你快速找出“谁在疯狂读写磁盘”。
本文从安装到排查讲清楚,照着做就能用。

先搞清楚 iotop 能解决什么问题

top 看的是 CPU 和内存,iostat 看的是整块磁盘的吞吐,
但它们都很难直接告诉你是哪个进程在读写。iotop 按进程维度统计 IO,
输出里能看到每个进程的 DISK READ、DISK WRITE、SWAPIN 和 IO> 占比,
定位高读写进程非常直观。

它适合这些场景:

  • 服务器负载不高但磁盘灯常亮、IO 等待高;
  • 数据库、日志、备份任务导致磁盘被占满;
  • 怀疑有进程异常刷盘或读写大文件。

需要注意:iotop 依赖内核的 IO 统计接口,普通用户默认看不到全部进程,排查时建议用 root。

安装前的准备与依赖检查

大多数发行版仓库里都有 iotop,直接用包管理器安装即可。

Debian/Ubuntu 系统:

sudo apt update
sudo apt install iotop -y

CentOS/RHEL 系统:

sudo yum install iotop -y

如果提示找不到包,先确认启用了对应仓库;
较新的系统也可以尝试 dnf install iotop。
安装完成后执行 iotop --version 能看到版本号,说明安装成功。

部分内核较老的系统,iotop 可能提示需要 CONFIG_TASK_IO_ACCOUNTING 支持,这种情况建议升级内核或改用 pidstat -d 作为替代。
具体以你系统实际输出为准。

用 iotop 定位高读写进程

最常用的方式是以 root 身份运行:

sudo iotop

进入界面后,默认会按 IO 排序,最上面通常就是当前读写最猛的进程。
几个关键列的含义:

  • DISK READ / DISK WRITE:进程实际读写的磁盘速率;
  • SWAPIN:进程因内存不足换入换出的比例;
  • IO>:进程等待 IO 的时间占比,这个值高说明它被 IO 拖住了。

如果只想看真正有 IO 行为的进程,用 -o 参数过滤掉空闲进程:

sudo iotop -o

想累积统计而不是实时刷新,用 -a 看累计读写量:

sudo iotop -a

排查时还可以加上 -P 只显示进程而不是线程,输出更干净:

sudo iotop -oP

界面里按 r 可以反向排序,按 o 或 p 切换显示模式,按 q 退出。
找到高读写进程后,记下它的 PID,再用 ps -p PID -o pid,user,cmd 确认它到底是什么程序。

定位到进程后不要急着 kill,先判断它是正常业务(如数据库刷盘、日志切割)还是异常行为(如被入侵的挖矿程序、失控的备份脚本),再决定处理方式。

常见报错与避坑说明

  • 提示 Operation not permitted:多半是没用 root,改用 sudo 或切到 root;
  • 界面里看不到任何进程:可能是系统 IO 确实很闲,或内核未开启统计支持;
  • 只看到 Total DISK READ 没有明细:尝试加 -P 或检查是否被容器隔离影响;
  • 在容器内运行看不到宿主机进程:iotop 受命名空间限制,需要在宿主机上排查;
  • 不要长期挂着 iotop 当监控:它本身有开销,临时排查用即可,长期监控建议用 atop、sar 或专业监控系统。

验证是否真的定位到了问题

找到可疑进程后,可以用 pidstat -d 1 按进程持续观察磁盘读写,确认它的 IO 是否稳定偏高:

pidstat -d 1 5

同时用 iostat -x 1 看磁盘的 %util 和 await,如果某块盘 %util 接近 100%,说明它确实被打满了。
两边数据对得上,基本就能确认是高读写进程导致的卡顿。

处理完之后再跑一次 iotop -o,如果高读写进程消失、磁盘利用率回落,说明问题解决。
如果仍有个别进程反复出现,就要从它的业务逻辑、日志量或定时任务上找根因,而不是反复 kill。

几个容易被问到的问题

iotop 和 iostat 该用哪个?
iostat 看整块磁盘的吞吐和延迟,iotop 看具体是哪个进程,排查高读写进程优先用 iotop,确认磁盘整体压力时配合 iostat。

普通用户能用 iotop 吗?
默认只能看到自己的进程,想看全部进程需要 root 权限,这是内核统计机制决定的,不是 iotop 的 bug。

iotop 里 IO> 很高但读写速率不大是怎么回事?
说明进程在大量等待 IO,可能是小文件随机读写或磁盘本身响应慢,这时要结合 iostat 看磁盘延迟。

排查完记得及时退出 iotop,避免它本身占用终端和少量资源。
掌握这套流程后,再遇到服务器磁盘 IO 异常,你就能快速定位高读写进程并做出判断。

分享到:
上一篇
Linux内存free命令解读,判断内存是否不足
下一篇
Ubuntu更换国内软件源,加速软件包下载
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意