fio文件读写io带宽测试工具
1. 安装
yum install fio
2. 使用
fio --name=job_name \ 任务名称 随意命名--directory=/mnt/small_single_fio \ 目标路径--rw=write \ IO 操作类型 write read --bs=4k \ 块大小 每次 IO 操作的数据量--size=1G \ 文件大小--numjobs=1 \ 并发数 可以多并发--ioengine=libaio \ io引擎-异步--loops=1000 循环执行1000次 会保存同名文件--只保留一个文件名 --direct=1 \ 使用直接 IO(绕过操作系统缓存)--runtime=60 \ 限定执行时间--time_based \--group_reporting \--output=cephfs_small_randwrite.csv 保存测试结果的输出文件
3. 配置文件使用
生成fio配置文件
# 创建基础配置(定义任务名称、读取模式、引擎等)
echo "
[data_all_read]
rw=read # 操作类型:读取(不修改文件)
ioengine=sync # I/O引擎:同步读取(兼容性好,适合现有文件)
direct=0 # 是否绕过缓存:0=使用缓存(默认),1=直接I/O(测试物理设备性能时用)
numjobs=1 # 并发任务数:1=单线程,可根据需求增加(如4)
group_reporting # 汇总所有文件的结果(而非单独输出每个文件)
output=data_bandwidth.log # 结果输出文件(含带宽数据)
" > read_data_all.fio# 递归查找/data/下所有文件,将路径添加到配置文件的filename参数中
find /data/ -type f | while read file; doecho "filename=$file" >> read_data_all.fio
done
去掉output参数
# 创建基础配置
echo "
[recursive_read]
rw=read
ioengine=sync
direct=0
numjobs=1
group_reporting
" > read_all_files.fio
# 继续添加所有文件路径
find /data/ -type f | while read file; doecho "filename=$file" >> read_all_files.fio
done
运行fio测试
fio read_all_files.fio
参考文档
https://developer.aliyun.com/article/1369594
https://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-nrfiles
https://github.com/axboe/fio