FIO 压测

FIO (Flexible IO Tester) 是一款业界通用的 IO 压力测试工具。
它能模拟多种场景:

  • 顺序读写(大文件传输、备份场景)

  • 随机读写(数据库、小文件场景)

  • 混合读写(真实业务场景)

一句话:fio 是 IO 世界里的 benchmark 工具,磁盘性能看它就对了!

安装

# CentOS / RHEL
yum install -y fio

# Ubuntu / Debian
apt-get install -y fio

安装完成后,直接输入 fio -v 查看版本。

磁盘压力测试

假设我们想测试 /data 盘性能,可以执行如下命令:

fio --name=test \
    --filename=/data/testfile \
    --size=1G \
    --bs=4k \
    --rw=randrw \
    --rwmixread=70 \
    --ioengine=libaio \
    --iodepth=64 \
    --runtime=60 \
    --direct=1 \
    --group_reporting

参数说明:

  • --name:测试名称

  • --filename:测试文件路径

  • --size:测试文件大小

  • --bs:块大小 (数据库常见场景)

  • --rw:读写模式

  • --rwmixread:读写比例,70% 读 + 30% 写

  • --ioengine:IO引擎

  • --iodepth:IO深度,并发队列深度

  • --runtime:测试时间(单位:秒)

  • --direct=1:跳过文件系统缓存,直接访问磁盘

  • --group_reporting:分组报告

结果解读

运行完,会看到类似输出:

IOPS=1520, BW=6.2MB/s, clat=0.8ms

关键指标:

  • IOPS:每秒处理的 IO 请求数(数据库关注的核心指标)

  • BW:带宽,即每秒读写多少数据

  • clat:完成一次 IO 的延迟(越低越好)

不同场景测试对比

场景

命令参数

关注点

顺序读

--rw=read

带宽(MB/s)

顺序写

--rw=write

带宽(MB/s)

随机读

--rw=randread

IOPS

随机写

--rw=randwrite

IOPS

混合读写

--rw=randrw --rwmixread=70

综合性能

其他压测工具