分享一个脚本直接进行单盘fio性能测试,输出具体参数的测试结果。

1.使用脚本时直接./fio.sh 然后输入具体的盘符名,最后的结果会在fio.sh 所在目录下的output.csv文件;
image

2.测试过程中产生的文件都会在result目录下
image
3.具体脚本如下图,可以在框起来的地方增删读写方式、bs块大小,具体的fio 参数修改直接修改,最后输出的log文件会包含相应的参数名,然后进行数据收集展示。
image
`mkdir -p result
cd result
rm -rf *.log
echo "请输入待测盘:如nvme0n1/sda"
read device
echo "测试进行中......"

通过for 循环对fio不同参数进行测试并输出相应测试结果文件

for i in randwrite randread write read
do
for j in 1024k 4k
do
fio -filename=/dev/$device -iodepth=32 -ioengine=libaio -direct=1 -rw=$i -bs=$j -size=10g -numjobs=1 -runtime=200 -group_reporting -name=test-write -time_based >$i"_"$j.log
done

done

提取表头

header=(wr_size,bs,IOPS,BW)

生成带有表头的表格文件

output_file="output_table.csv"
echo "$header" > "$output_file"

获取所有以.log结尾的文件

files=$(ls -t *.log)

遍历每个文件

for file in $files; do
# 提取文件名中的字段
base_name="${file%.*}"
IFS="_" read -r operation size1 <<< "$base_name"
#提取IOPS、bw值
iops=$(cat "$file" | grep -i iops= | cut -d "," -f 1 | cut -d "=" -f 2)
BW=$(cat "$file" |grep -i iops=|cut -d "=" -f 3|cut -d "(" -f 2|tr ')' ' ')
data=($operation,$size1,$iops,$BW)
echo "$data" >> "$output_file"
done
`

posted @ 2025-07-21 20:18  三生谷主  阅读(93)  评论(0)    收藏  举报