在 Linux 系统中,测试硬盘读写 IOPS(每秒输入 / 输出操作数)常用的工具是 fio(Flexible I/O Tester),它功能强大,支持多种 IO 模式测试。可用于分析系统瓶颈和测试已知服务的硬盘读写能力。以下是具体的测试方法:
1. 手动测试命令
安装fio工具
#centos/rocky/openeuler
yum install -y fio
#ubuntu/debian
apt install -y fio
随机写入 IOPS 测试
测试随机写入性能(模拟数据库等随机 IO 场景):
fio --name=randwrite --ioengine=libaio --iodepth=16 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting
参数说明:
--rw=randwrite
:测试随机写入--bs=4k
:块大小为 4KB(常用的测试粒度)--iodepth=16
:IO 队列深度为 16--direct=1
:使用直接 IO(绕过系统缓存,真实反映磁盘性能)--size=1G
:测试文件大小为 1GB--runtime=60
:测试持续 60 秒
随机读取 IOPS 测试
测试随机读取性能:
fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting
参数与写入测试类似,仅将--rw=randread
改为随机读取。
顺序写入吞吐量测试
如果需要同时测试顺序写入的吞吐量(MB/s):
fio --name=seqwrite --ioengine=libaio --iodepth=16 --rw=write --bs=128k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting
顺序读取吞吐量测试
fio --name=seqread --ioengine=libaio --iodepth=16 --rw=read --bs=128k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting
测试结果关键指标解读:
测试结束后,重点关注以下指标:
iops
:每秒完成的 IO 操作数(核心指标)bw
:吞吐量(MB/s)lat
:延迟(包括 min、max、avg、p99 等百分位延迟)
2. 自动测试命令
远程运行测试脚本
脚本会根据不同的系统类型自动安装所需的依赖包,并进行结果输出。
curl -fSL https://sreyun.oss-cn-shanghai.aliyuncs.com/dl/script/disk_fio.sh |bash
评论区