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 |
综合性能 |