fio测试脚本库:100+常用测试场景的job文件与脚本分享

fio测试脚本库:100+常用测试场景的job文件与脚本分享

【免费下载链接】fio Flexible I/O Tester 【免费下载链接】fio 项目地址: 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模式12fio-rand-read.fio、fio-seq-write.fio存储介质基础性能评估
高级验证测试8atomic-verify.fio、cross-stripe-verify.fio数据一致性与完整性验证
特殊设备测试15dev-dax.fio、mtd.fio、zbd-seq-read.fioNVMe/SSD/磁带等专用设备
网络存储测试10nfs.fio、rbd.fio、ceph.fioNAS/SAN/分布式存储
云存储测试5http-s3.fio、swift.fio对象存储性能评估
虚拟化场景7libblkio-*.fio、virtio-blk.fio虚拟机存储性能测试
性能压力测试9enospc-pressure.fio、ssd-steadystate.fio极限负载与稳态测试
特定协议测试11rdmaio-*.fio、netio_vsock.fioRDMA/VSOCK等特殊协议
文件系统测试8fsx.fio、e4defrag.fio文件系统特性验证
工具兼容性测试6cpuio.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-64
  • ramp_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=1verify=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 关键参数调优矩阵

测试目标推荐bsiodepthnumjobsruntime特殊参数
峰值带宽128k-1M4-81-260srw=read/write
随机IOPS4k32-64CPU核心数120srw=randread/write
低延迟4k1-21300siodepth_batch_submit=1
混合负载8k164-8600srwmixread=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 关键指标解析

mermaid

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 【免费下载链接】fio 项目地址: https://gitcode.com/gh_mirrors/fi/fio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值