FIO是一款很好的硬件压力测试工具,我们可以通过运行fio负载,在linux环境下测试磁盘的性能。
目录
一、安装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:磁盘吞吐量和磁盘每秒操作次数。