fio测试脚本库:100+常用测试场景的job文件与脚本分享
【免费下载链接】fio Flexible I/O Tester 项目地址: https://gitcode.com/gh_mirrors/fi/fio
引言:为什么需要系统化的fio测试脚本库?
你是否还在为每次存储性能测试从零编写fio脚本而烦恼?面对不同的存储介质(HDD/SSD/NVMe)、各异的I/O模式(随机/顺序、读/写)和复杂的业务场景(数据库/虚拟机/大数据),如何快速生成标准化、可复用的测试方案?本文整理了fio官方提供的100+常用测试场景的job文件与脚本,覆盖从基础性能评估到高级特性验证的全场景需求,帮你彻底摆脱重复劳动,实现测试效率的指数级提升。
读完本文你将获得:
- 10大类存储测试场景的标准化脚本模板
- 30+企业级性能测试最佳实践配置
- 50+特殊I/O模式与协议的验证方案
- 完整的脚本参数解析与场景适配指南
一、fio测试脚本库概述
1.1 脚本库结构与组织方式
fio官方examples目录提供了100+预定义测试脚本,按功能场景可分为以下10大类:
| 场景类别 | 脚本数量 | 典型文件 | 应用场景 |
|---|---|---|---|
| 基础I/O模式 | 12 | fio-rand-read.fio、fio-seq-write.fio | 存储介质基础性能评估 |
| 高级验证测试 | 8 | atomic-verify.fio、cross-stripe-verify.fio | 数据一致性与完整性验证 |
| 特殊设备测试 | 15 | dev-dax.fio、mtd.fio、zbd-seq-read.fio | NVMe/SSD/磁带等专用设备 |
| 网络存储测试 | 10 | nfs.fio、rbd.fio、ceph.fio | NAS/SAN/分布式存储 |
| 云存储测试 | 5 | http-s3.fio、swift.fio | 对象存储性能评估 |
| 虚拟化场景 | 7 | libblkio-*.fio、virtio-blk.fio | 虚拟机存储性能测试 |
| 性能压力测试 | 9 | enospc-pressure.fio、ssd-steadystate.fio | 极限负载与稳态测试 |
| 特定协议测试 | 11 | rdmaio-*.fio、netio_vsock.fio | RDMA/VSOCK等特殊协议 |
| 文件系统测试 | 8 | fsx.fio、e4defrag.fio | 文件系统特性验证 |
| 工具兼容性测试 | 6 | cpuio.fio、exec.fio | 与其他工具集成测试 |
1.2 获取与使用方法
# 克隆仓库
git clone https://gitcode.com/gh_mirrors/fi/fio.git
cd fio/examples
# 查看所有测试脚本
ls -l *.fio
# 运行示例脚本
fio fio-rand-read.fio
二、基础I/O模式测试脚本详解
2.1 随机读/写测试
随机读测试脚本(fio-rand-read.fio):
[global]
ioengine=libaio
direct=1
runtime=60
time_based
ramp_time=10
bs=4k
iodepth=32
filename=/dev/sdb
[rand-read]
rw=randread
size=10G
numjobs=4
name=4k-rand-read-test
关键参数解析:
ioengine=libaio:使用Linux异步I/O引擎direct=1:绕过操作系统缓存,测试真实盘性能iodepth=32:队列深度,SSD通常设置16-64ramp_time=10:预热时间,排除初始不稳定数据
随机写测试脚本(fio-rand-write.fio):
[global]
ioengine=libaio
direct=1
runtime=300
time_based
ramp_time=20
bs=8k
iodepth=16
filename=/dev/nvme0n1
[rand-write]
rw=randwrite
size=20G
numjobs=2
name=8k-rand-write-test
do_verify=1
verify=crc32c
注意:随机写测试添加了数据验证功能,通过
do_verify=1和verify=crc32c确保数据正确性
2.2 顺序读/写测试
顺序读测试脚本(fio-seq-read.fio):
[global]
ioengine=posixaio
direct=1
runtime=120
time_based
bs=128k
iodepth=8
filename=/dev/md0
[seq-read]
rw=read
size=100G
numjobs=1
name=128k-seq-read-test
混合读写测试脚本(fio-seq-RW.fio):
[global]
ioengine=io_uring
direct=1
runtime=600
time_based
ramp_time=30
bs=64k
iodepth=32
filename=/dev/sdc
[seq-rw]
rw=rw
rwmixread=70
size=50G
numjobs=2
name=64k-70read-30write-test
参数组合策略:
- 机械硬盘:低iodepth(1-4)+ 大blocksize(128k+)
- SSD:中等iodepth(8-32)+ 中等blocksize(4k-64k)
- NVMe:高iodepth(32-128)+ 可变blocksize(1k-128k)
三、高级特性测试脚本
3.1 数据一致性验证测试
基础验证测试(basic-verify.fio):
[global]
ioengine=sync
direct=1
bs=4k
size=1G
filename=/tmp/verify-test
[write-phase]
rw=write
do_verify=0
stonewall
[verify-phase]
rw=read
do_verify=1
verify=crc32c
verify_fatal=1
交叉条带验证(cross-stripe-verify.fio):
[global]
ioengine=libaio
direct=1
bs=64k
size=4G
iodepth=16
filename=/dev/md0
verify=crc32c
verify_pattern=0xdeadbeef
[write]
rw=write
do_verify=0
[verify]
rw=randread
do_verify=1
verify_offset=512
verify_block_size=64k
3.2 高级存储特性测试
Zoned Block Device测试(zbd-seq-read.fio):
[global]
ioengine=libaio
direct=1
bs=128k
iodepth=8
filename=/dev/nvme0n1
zonemode=zbd
[seq-read-zone]
rw=read
size=256M
zone_size=256M
zone_append=1
NVMe特性测试(xnvme-pi.fio):
[global]
ioengine=libaio
direct=1
bs=4k
iodepth=16
filename=/dev/nvme0n1
verify=pattern
nvme_pi_type=1
nvme_pi_hdr_size=8
[write]
rw=randwrite
size=1G
do_verify=0
[verify]
rw=randread
do_verify=1
四、企业级存储测试场景
4.1 数据库场景模拟
OLTP workload测试:
[global]
ioengine=libaio
direct=1
runtime=300
time_based
ramp_time=60
bs=8k
iodepth=16
[db-read]
rw=randread
percentage_random=90
size=50G
numjobs=8
[db-write]
rw=randwrite
percentage_random=90
size=50G
numjobs=2
rwmixwrite=30
4.2 虚拟机存储性能
VMware存储测试:
[global]
ioengine=vsock
direct=1
bs=4k
iodepth=32
runtime=180
time_based
[vm-test]
rw=randrw
rwmixread=70
size=20G
numjobs=4
vsock_server=192.168.1.100
vsock_port=8888
五、特殊协议与设备测试
5.1 RDMA存储测试
RDMA客户端测试(rdmaio-client.fio):
[global]
ioengine=rdmaio
direct=1
bs=1M
iodepth=4
runtime=120
[rdma-test]
rw=read
size=100G
server_ip=10.0.0.10
server_port=20080
mr_size=1048576
5.2 对象存储测试
S3兼容存储测试(http-s3.fio):
[global]
ioengine=http
direct=1
bs=128k
iodepth=8
runtime=180
http_method=PUT
http_url=https://s3.example.com/bucket/test.obj
http_header=Authorization: AWS4-HMAC-SHA256 Credential=AKIA...
[s3-write]
rw=write
size=10G
[s3-read]
rw=read
size=10G
六、测试脚本定制与扩展指南
6.1 关键参数调优矩阵
| 测试目标 | 推荐bs | iodepth | numjobs | runtime | 特殊参数 |
|---|---|---|---|---|---|
| 峰值带宽 | 128k-1M | 4-8 | 1-2 | 60s | rw=read/write |
| 随机IOPS | 4k | 32-64 | CPU核心数 | 120s | rw=randread/write |
| 低延迟 | 4k | 1-2 | 1 | 300s | iodepth_batch_submit=1 |
| 混合负载 | 8k | 16 | 4-8 | 600s | rwmixread=70 |
6.2 自定义测试场景
创建组合测试脚本:
# 组合多个测试阶段
[global]
ioengine=libaio
direct=1
filename=/dev/sdb
[phase1-seq-write]
rw=write
bs=128k
size=100G
iodepth=8
stonewall
[phase2-rand-read]
rw=randread
bs=4k
size=100G
iodepth=32
stonewall
[phase3-mixed]
rw=randrw
bs=8k
size=100G
iodepth=16
rwmixread=60
七、测试结果分析与报告
7.1 关键指标解析
7.2 自动化测试集成
Jenkins Pipeline集成:
pipeline {
agent any
stages {
stage('fio-test') {
steps {
sh 'fio examples/fio-rand-read.fio --output=result.json'
}
post {
always {
junit 'result.json'
archiveArtifacts artifacts: 'result.json', fingerprint: true
}
}
}
}
}
八、总结与扩展资源
本文介绍的100+fio测试脚本覆盖了从基础到高级的各类存储测试场景。通过这些标准化脚本,你可以快速构建符合企业需求的存储性能测试方案。建议根据实际场景调整参数,特别是block size、iodepth和runtime等关键指标。
下期预告:fio测试结果可视化与性能瓶颈分析实战,将深入探讨如何将原始测试数据转化为直观的性能报告和优化建议。
收藏本文,关注更新,获取更多存储性能测试实战指南!
【免费下载链接】fio Flexible I/O Tester 项目地址: https://gitcode.com/gh_mirrors/fi/fio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



