Linux iotop查看磁盘IO

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

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

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

它适合这些场景:

  • 服务器负载不高但磁盘灯常亮、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 可以反向排序,按 op 切换显示模式,按 q 退出。
找到高读写进程后,记下它的 PID,再用 ps -p PID -o pid,user,cmd 确认它到底是什么程序。

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

常见报错与避坑说明

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

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

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

pidstat -d 1 5

同时用 iostat -x 1 看磁盘的 %utilawait,如果某块盘 %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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意