需分层使用iostat、iotop、vmstat和top等工具:iostat监控设备级I/O性能,iotop定位高IO进程,vmstat和top辅助验证I/O等待及CPU阻塞情况。

如果您需要评估Linux系统中磁盘I/O的实时负载状况,判断是否存在读写瓶颈或异常进程占用过高IO资源,则需借助专业工具进行分层观测。以下是解决此问题的步骤:
一、使用iostat监控设备级I/O性能
iostat可提供磁盘设备整体吞吐量、队列深度、等待时间及CPU I/O等待占比等关键指标,适用于宏观定位高负载磁盘设备。
1、确认sysstat包已安装:在Ubuntu/Debian系统中执行sudo apt install sysstat;在CentOS/RHEL中执行sudo yum install sysstat或sudo dnf install sysstat。
2、运行扩展统计命令持续采样:iostat -x 2 5,表示每2秒刷新一次,共采集5次,输出包含%util、await、svctm等核心字段。
3、若仅关注某块设备(如nvme0n1),可指定路径:iostat -x /dev/nvme0n1 1,实现单设备高频刷新。
4、同时查看CPU与磁盘统计:iostat -c -d -h 3,其中-h启用人类可读单位(MB/s),-c显示CPU,-d显示磁盘,3为刷新间隔秒数。
5、将结果导出至文件用于离线分析:iostat -x 1 20 > /tmp/iostat.log,便于后续比对或提交给运维团队。
二、使用iotop定位进程级I/O源头
iotop以top风格实时展示各进程/线程的磁盘读写速率及IO等待时间百分比,适用于微观排查具体罪魁进程。
1、安装iotop工具:在Debian/Ubuntu上执行sudo apt install iotop;在RHEL/CentOS上执行sudo yum install iotop或sudo dnf install iotop。
2、以root权限启动交互式监控:sudo iotop,因普通用户无法读取全部进程的I/O计数器数据。
3、按o键切换为仅显示当前有I/O活动的进程,避免被大量休眠进程干扰视线。
4、按P键切换排序方式为按DISK WRITE降序,快速识别写密集型任务;按R键可反转排序方向。
5、按p键在TID(线程ID)与PID(进程ID)显示模式间切换,便于结合ps命令进一步追踪父进程。
三、结合vmstat与top辅助验证I/O压力
vmstat和top可提供系统级I/O等待上下文,补充iostat与iotop的观测盲区,尤其适用于判断CPU是否因I/O阻塞而闲置。
1、运行vmstat 2 5,重点关注bi(块输入)与bo(块输出)列的数值,以及wa(I/O wait)占比;若wa持续高于25%,表明CPU大量时间处于I/O等待状态。
2、启动top后按下1键展开多核CPU视图,观察各核wa值是否同步升高,排除单核抖动干扰。
3、在top界面中查找%Cpu(s)行末尾的wa字段,其数值直接反映当前系统I/O等待强度。
4、使用ps aux --sort=-%mem | head -10筛选内存占用靠前的进程,交叉比对iotop中高IO进程是否重合,排除内存交换引发的伪IO高峰。
5、执行cat /proc/diskstats获取原始设备级计数器数据,验证iostat输出是否与内核统计一致,排除工具缓存偏差。











