硬盘性能如何衡量,一般使用以下指标:
- IOPS:每秒读/写次数,单位为次(计数)。存储设备的底层驱动类型决定了不同的 IOPS。
- 吞吐量:每秒的读写数据量,单位为MB/s。
- 时延:IO操作的发送时间到接收确认所经过的时间,单位为秒。
FIO是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。建议使用libaio的I/O引擎进行测试。
4k随机写
#!/bin/bash
block=("4k" "256k")
lines=(1 8 16 32 64 128)
for i in "${block[@]}"
do
for j in "${lines[@]}"
do
m=$((128/$j))
rm -rf /mnt/fiotest/*
fio -filename=/dev/sdm -direct=1 -iodepth=$m -thread -rw=randwrite -ioengine=psync -bs=$i -size=100G -numjobs=$j -runtime=180 -time_based -group_reporting -name=mytest -allow_mount_write=1 >> /home/fioresult/fiorandwrite-file$i-numjobs${j}-iodepth${m}.log
sleep 2m
done
done
4k随机读
#!/bin/bash
block=("4k" "256k")
lines=(1 8 16 32 64 128)
for i in "${block[@]}"
do
for j in "${lines[@]}"
do
m=$((128/$j))
rm -rf /mnt/fiotest/*
fio -filename=/dev/sdm -direct=1 -iodepth=$m -thread -rw=randread -ioengine=psync -bs=$i -size=100G -numjobs=$j -runtime=180 -time_based -group_reporting -name=mytest -allow_mount_write=1 >> /home/fioresult/fiorandread-file$i-numjobs${j}-iodepth${m}.log
sleep 2m
done
done
4k顺序写
#!/bin/bash
block=("4k" "256k")
lines=(1 8 16 32 64 128)
for i in "${block[@]}"
do
for j in "${lines[@]}"
do
m=$((128/$j))
rm -rf /mnt/fiotest/*
fio -filename=/dev/sdm -direct=1 -iodepth=$m -thread -rw=write -ioengine=psync -bs=$i -size=100G -numjobs=$j -runtime=180 -time_based -group_reporting -name=mytest -allow_mount_write=1 >> /home/fioresult/fiowrite-file$i-numjobs${j}-iodepth${m}.log
sleep 2m
done
done
4k顺序读
#!/bin/bash
block=("4k" "256k")
lines=(1 8 16 32 64 128)
for i in "${block[@]}"
do
for j in "${lines[@]}"
do
m=$((128/$j))
rm -rf /mnt/fiotest/*
fio -filename=/dev/sdm -direct=1 -iodepth=$m -thread -rw=read -ioengine=psync -bs=$i -size=100G -numjobs=$j -runtime=180 -time_base -group_reporting -name=mytest -allow_mount_write=1 >> /home/fioresult/fioread-file$i-numjobs${j}-iodepth${m}.log
sleep 2m
done
done