在Linux中使用iotop监控磁盘I/O的实践可分为以下层面:
-
安装与权限
需通过yum install iotop
或apt-get install iotop
安装,执行时需root权限或sudo提权。实践中常遇到环境未预装iotop导致脚本报错,需在自动化部署中显式声明依赖。 -
核心参数运用
-o
仅显示活跃I/O进程,避免信息过载-P
过滤线程级统计,精准定位问题进程-u username
按用户维度排查,在多租户虚拟化环境中尤其关键--batch
模式配合重定向实现后台监控,曾用于KVM热迁移时记录I/O峰值
-
实战排查案例
某次MySQL集群性能下降场景中,通过iotop -oPa
发现flush线程持续占满SSD顺序写带宽,最终定位到innodb_io_capacity参数配置低于物理盘实际iops。另一次Ceph对象存储异常时,结合pidstat -d
与iotop联动分析,识别出radosgw进程因小文件聚合写入产生随机I/O风暴。 -
内核级挑战
- 低版本内核(如2.6.20之前)缺乏I/O记账功能,导致iotop数据缺失
- LVM/dm设备映射场景中,iotop默认显示物理设备名,需通过
lsblk -f
二次映射逻辑卷 - cgroup v2环境下进程I/O统计存在归组偏差,需额外启用io.stat控制器
-
可视化增强
通过--accumulated
参数统计历史I/O总量时,发现进程短期爆发式I/O易被均值掩盖。对此开发了自定义脚本,将iotop输出与blktrace原始事件关联,构建时间序列热力图。在超融合架构中,该方案成功识别出某虚拟机因TRIM指令触发SSD控制器级阻塞。
注:生产环境中建议同时监控/proc/diskstats
原始数据,避免因iotop采样间隔(默认1s)错过纳秒级I/O竞争场景。