千家信息网

Linux系统中如何使用FIO对硬盘进行压力测试

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要介绍Linux系统中如何使用FIO对硬盘进行压力测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。
千家信息网最后更新 2024年11月19日Linux系统中如何使用FIO对硬盘进行压力测试

这篇文章主要介绍Linux系统中如何使用FIO对硬盘进行压力测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。也就是说FIO 是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能(也包含文件系统:如针对网络文件系统 NFS 的IO测试)。

FIO安装

wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz yum install libaio-devel 安装依赖。我们一般使用libaio,发起异步IO请求。 tar -zxvf fio-2.0.7.tar.gz cd fio-2.0.7 make make install

简单介绍fio的参数

ioengine: 负载引擎,我们一般使用libaio,发起异步IO请求。 bs: IO大小 direct: 直写,绕过操作系统Cache。因为我们测试的是硬盘,而不是操作系统的Cache,所以设置为1。 rw: 读写模式,有顺序写write、顺序读read、随机写randwrite、随机读randread等。 size: 寻址空间,IO会落在 [0, size)这个区间的硬盘空间上。这是一个可以影响IOPS的参数。一般设置为硬盘的大小。 filename: 测试对象 iodepth: 队列深度,只有使用libaio时才有意义。这是一个可以影响IOPS的参数。 runtime: 测试时长

常见测试方法

顺序读
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
顺序写
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
随机读
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
随机写
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
混合随机读写
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop

多盘fio测试脚本

#/bin/bash#author wsm#date 2019/06/17#fio顺序读测试#-filename 测试对象#-direct=1测试过程绕过机器自带的buffer。使测试结果更真实#-iodepth 1#-thread#-rw=read#-ioengine=psync io引擎使用pync方式#-bs=16k单次io的块文件大小为16k#-size=100G测试文件大小#-numjobs=30测试线程为30#-runtime=1000 测试时间为1000秒#-group_reporting 关于显示结果的,汇总每个进程的信息#-name=mytestfor i in {a..z} a{a..z};do fio -filename=/dev/sd$i -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=100G -numjobs=30 -runtime=1000 -group_reporting -name=mytestdone

测试结果

–型号:XXX; 硬盘:900G/SAS 10K/2.5寸硬盘/RAID18k 随机写:iops=7988k 随机读:iops=111908k 混合读写(读写7:3):读iops=1114 写iops=4791m 顺序写:iops=1701m 顺序读:iops=246 1m 顺序读写(读写7:3):读iops=134 写iops=56

以上是"Linux系统中如何使用FIO对硬盘进行压力测试"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0