FIO是一款很好的硬件压力测试工具,我们可以通过运行fio负载,在linux环境下测试磁盘的性能。

目录

一、安装FIO

二、测试方法

三、参数含义


一、安装FIO

以centos7为例,直接介绍步骤吧:

1、yum安装(root权限下依次输入下面的命令)

  • yum install libaio-devel fio(首先安装依赖包)
  • wget http://brick.kernel.dk/snaps/fio-2.2.10.tar.gz(访问网站下载fio压缩包,默认存放在Home目录下)
  • tar -zxvf fio-2.2.10.tar.gz(进行解压)
  • cd fio-2.2.10(进入解压后的文件夹)
  • 依次输入./configure;make;make install命令
  • 然后就可以使用fio了

2、习惯可视化界面操作的,就可以直接去官网下载压缩包,然后解压,后面步骤同上。

二、测试方法

直接在终端输入以下命令:中间用空格隔开。

fio -filename=/dev/sda2 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=30 -ioengine=psync
 -bs=8k -size=10G -numjobs=30 -runtime=1000 -group_reporting -name=rw_read30_8k

三、参数含义

长长的一大串命令好不容易敲完了,可以松一口气了。然后我们就来看一下各个参数的各自代表什么吧

  • filename=/dev/sda2       //测试文件名称,选择需要测试的磁盘的data目录。千万不能选系统盘,否则会带来灾难性的后果,因为一旦写了superblock,整个系统将会直接挂掉,几乎没有恢复的可能的了。曾经花了半天来恢复,最后被证明只有重装系统这里条路可走了。
  • direct= 1                        //测试过程绕过系统自带的buffer。使测试结果更真实。具体来说就是,指定为1则为O_DIRECT,不使用Buffer缓存,也可以用buffered=1,表示使用buffer。大多情况下我们都是用前者。
  • iodepth                          //异步队列深度,默认为1
  • thread                           //创建的是POSIX 线程
  • rw=randrw                    //读写方式。这里是测试随机读写的I/O。还可以选择read,write,trim(Sequential trims ,Linux block devices only);randwrite,randread,randtrim(Random trims ,Linux block devices only);readwrtie(顺序混合读写),rw/readwrite(随机混合读写),trimwrite(Sequential trim+write sequences. Blocks will be trimmed first, then the same blocks will be written to.)
  • rwmixread                    //既然前面是混合读写,自然需要设置一下读写比例啦。这里设置的是读操作的比例
  • ioengine                       //有以下几种常用模式,官方有几十种,比如有sync,psync,一般这两个用的多一点。具体先不介绍含义了
  • bs                                 //很明显是指blocksize了。读写的块大小,默认4096。可用,分隔输入三个参数,对应read,write,trims。bs=8k,32k means 8k for reads, 32k for writes and trims
  • size                              //测试的负载的数量
  • numjobs                       //本次测试的线程数
  • runtime                         //测试试时间**秒,如果不写则一直将5g文件分4k每次写完为止
  • group_reporting           //关于显示结果的,汇总每个进程的信息
  • name                           //暂时每太看到用不同名字的差别在哪里
  • 此外,还有几个参数不常用到: lockmem=1g 只使用1g内存进行测试。
    zero_buffers 用0初始化系统buffer。
    nrfiles=8 每个进程生成文件的数量。

(可以使用fio -help查看每个参数,具体的参数左右可以在官网查看how to文档)

基本就通过修改这些参数进行不同测试,结果重点关注bw和iops:磁盘吞吐量和磁盘每秒操作次数。