Linux怎么查看磁盘IO_Linux iostat监控磁盘读写性能教程【进阶】

夜明吖_3154

夜明吖_3154

2026-03-27

735人浏览

原创

必须使用iostat、iotop、dd和fio等工具组合监控与测试linux磁盘io:iostat查吞吐与瓶颈指标,iotop定位高io进程,dd测裸设备吞吐,fio模拟多场景负载。

linux怎么查看磁盘io_linux iostat监控磁盘读写性能教程【进阶】

如果您需要实时掌握Linux系统中磁盘的读写响应、请求排队深度及设备利用率等关键IO行为,则必须借助专业工具获取底层统计指标。以下是执行该任务的具体方法:

一、使用iostat查看全局磁盘IO统计

iostat命令提供基础设备级吞吐量与事务频率数据,适用于快速识别高负载设备。它默认输出CPU和磁盘综合信息,适合初次筛查。

1、确认sysstat包已安装,执行:yum install -y sysstat(CentOS/RHEL)或apt-get install -y sysstat(Debian/Ubuntu)。

2、运行基础命令查看当前一次快照:iostat。

3、以KB/s为单位、每2秒刷新一次、持续显示5次:iostat -k 2 5。

4、仅显示磁盘设备(排除CPU行):iostat -d -k。

二、使用iostat -x查看扩展IO性能指标

扩展模式(-x)输出关键瓶颈判断字段,包括%util(设备忙时百分比)和avgqu-sz(平均请求队列长度),是定位IO性能瓶颈的核心依据。

1、执行扩展统计命令:iostat -xk 1,每秒刷新一次,单位为KB。

2、重点观察以下两列值:%util长期高于80%表示设备持续高负载;avgqu-sz持续大于2(HDD)或大于1(SSD)表明I/O请求已在排队。

3、若仅关注某块盘(如sdb)及其分区,使用:iostat -xk 1 /dev/sdb。

4、查看所有块设备(含LVM逻辑卷),使用:iostat -xk 1 -p ALL(注意:-p与-x不可同时省略,-p ALL可共存于-x模式)。

三、使用iotop实时定位高IO进程

iotop可按进程或线程维度展示实时IO带宽占用,弥补iostat无法关联具体程序的缺陷,适用于快速锁定罪魁进程。

1、安装iotop:yum install -y iotop(CentOS/RHEL)或apt-get install -y iotop(Debian/Ubuntu)。

2、以root权限运行并仅显示活跃IO进程:sudo iotop -o。

3、启用PID显示(而非TID):按p键。

4、按IO带宽降序排列:按大写字母O键(Shift+o)。

5、刷新间隔设为1秒:sudo iotop -o -d 1。

四、使用dd命令进行直接IO吞吐测试

dd绕过页缓存执行裸设备读写,用于验证磁盘原始吞吐能力,结果反映物理层极限而非缓存加速效果。

1、测试顺序写性能(生成1GB文件,direct绕过缓存):dd if=/dev/zero of=testfile bs=1M count=1024 oflag=direct。

2、测试顺序读性能(从testfile读取,iflag=direct确保直通):dd if=testfile of=/dev/null bs=1M iflag=direct。

3、清除页面缓存避免干扰后续测试:echo 3 | sudo tee /proc/sys/vm/drop_caches。

4、重复执行三次取平均值,关注dd输出末尾的bytes/sec数值。

五、使用fio执行多场景IO压力测试

fio支持自定义I/O类型(随机/顺序)、读写比例、块大小、队列深度等参数,可模拟数据库、虚拟机等真实负载模式。

1、安装fio:yum install -y fio 或 apt-get install -y fio。

2、创建配置文件fio_randread.fio,内容如下:[global]\nfilename=/tmp/fio_test\nbs=4k\nioengine=libaio\ndirect=1\nruntime=60\ntime_based\n[rw-randread]\nrw=randread\niodepth=32。

3、执行随机读测试:fio fio_randread.fio。

4、执行4K随机写测试:fio --name=randwrite --ioengine=libaio --iodepth=32 --rw=randwrite --bs=4k --direct=1 --size=1G --runtime=60 --time_based /tmp/fio_test。

5、解析输出中的IOPS(io=值除以bs)、BW(bandwidth)、clat(完成延迟)三项核心指标。

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

2023.09.22

529

3

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

2024.03.01

1678

6

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.20

2768

5

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

2023.08.10

3838

6

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

2023.06.29

2505

3

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2023.08.14

3781

10

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

2023.08.31

2711

3

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.05

907

5

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

2427

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习