FIO是最常用的测试硬盘读写速率的工具,也有客户会用iozone
FIO试对磁盘进行压力测试和验证最常用的工具。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。也就是说FIO 是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能
注意事项
1.不同硬盘接口主控协议类型型号固件版本都有差距,甚至同型号不同容量之间或者同一块硬盘在不同文件系统下也会有性能差距
2.测试之前一般需要清盘,heparm命令nvmecli命令都是较好的选择
3.ssd需要在测试前进行预处理,使硬盘进入一个稳态之后再取值
4.测试前和厂商确认一下固件版本
安装libaio包: dpkg –I libaio* rpm -Uvh libaio*
FIO工具拷贝到系统目录下
解压工具:# tar –zxvf fio-2.10.tar.gz
配置编译安装:#./configure
#make
#make install
清盘
nvme format -s 1 -f /dev/nvme0n1
hdparm --user-master u --security-set-pass PASSWORD /dev/sda 设置密码
hdparm --user-master u --security-erase PASSWORD /dev/sda 安全擦除
查看硬盘温度:
yum install -y hddtemp
hddtemp /dev/sdb
查看硬盘当前读写状态 iostat -dxm 3
测试ext4和xfs文件系统
nvme format nvme0n1
parted nvme0n1 rm 1 -s
parted nvme0n1 mklabel gpt -s
parted nvme0n1 mkpart primary ext4 2048s 100% -s
mkfs.ext4 nvme0n1
mkfs.xfs nvme0n1
设置睿频cpupower -c all frequency-set -g performance
将fio-test.sh脚本拷贝到fio目录
#!/bin/sh
#操作系统需要预先安装libaio库文件
#根据具体配置和测试需求,更改测试磁盘符Part,读写模型RWtype,和测试块大小SIZE
#若测试SAS SSD和NVME小块IOPS,需进行绑核测试才可测出最大性能,每个盘绑4~5个CPU核
for Part in b
do
for RWtype in read write randread randwrite
do
for SIZE in 4k 128k 256k
do
fio --output=sd" P a r t " " Part"_" Part""RWtype"_“ S I Z E " r e s u l t . l o g − − n a m e = m y j o b − − g r o u p r e p o r t i n g − − n o r a n d o m m a p − − n u m j o b s = 1 − − r w = " SIZE"_result.log --name=myjob --group_reporting --norandommap --numjobs=1 --rw=" SIZE"result.log−−name=myjob−−groupreporting−−norandommap−−numjobs=1−−rw="RWtype” --direct=1 --ioengine=psync --filename=/dev/sd" P a r t " − − b s = " Part" --bs=" Part"−−bs="SIZE" --iodepth=32 --runtime=300
#taskset -c 0-4 fio --output=sd" P a r t " " Part"_" Part""RWtype"_“ S I Z E " r e s u l t . l o g − − n a m e = m y j o b − − g r o u p r e p o r t i n g − − n o r a n d o m m a p − − n u m j o b s = 5 − − r w = " SIZE"_result.log --name=myjob --group_reporting --norandommap --numjobs=5 --rw=" SIZE"result.log−−name=myjob−−groupreporting−−norandommap−−numjobs=5−−rw="RWtype” --direct=1 --ioengine=libaio --filename=/dev/sd" P a r t " − − b s = " Part" --bs=" Part"−−bs="SIZE" --iodepth=32 --runtime=300
sleep 5
sync
echo 3 > /proc/sys/vm/drop_caches
done
done
done
执行测试:./fio-test.sh