fio简介
fio可以测试顺序读写,随机读写,顺序混合读写,随机混合读写,并且可以调整io并发数,在测试后会生成测试报告。比dd命令更加专业,而且dd命令也只能支持顺序读写的测试。
fio同时也是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
安装fio的相关问题
我选择了很多中版本的fio,但是在Ubuntu14.10中编译时很多版本编译失败了(报错为:recipe for target ‘crc/crc32c-arm64.o’ failed),最后使用fio-2.1.10版本终于编译成功了,不过其中也遇到了很多问题。
Ubuntu中apt-get install无法使用
遇到这个问题需要软件包,执行 sudo apt-get update
。
而如果update
也失败的话,就需要换一个镜像源了,这里使用清华镜像。
https://mirrors.tuna.tsinghua.edu.cn/
进入上面的网址,往下翻找到ubuntu
,点击ubuntu后面的小问号,注意是问号!
得到下面的页面,可以自由选择ubuntu版本
将这里的内容复制一份。
然后在Ubuntu中执行以下命令,备份原来的源,并且将源更新为清华源。
1 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup |
然后会跳出一个文本编辑框,将里面的内容全删掉,更换为之前复制的内容,保存。
接下来对apt-get进行更新:sudo apt-get udpate
就可以了。
fio工具的安装
注意!一定要在fio工具编译之前安装一个libaio-dev
库,否则即使fio编译成功了也会应为libaio无法加载而不能使用(会报错:engine libaio not loadable)。
先安装
libaio-dev
1
sudo apt-get install libaio-dev -y
下载
fio-2.1.10
1
wget http://brick.kernel.dk/snaps/fio-2.1.10.tar.gz
或者直接到这个网址里面去下载压缩文件。
编译安装
1
2
3tar zxf fio-2.1.10.tar.gz
cd fio-2.1.10
make && make install
这样就能成功安装了。
使用fio进行测试
顺序写性能
1
fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=write --bs=4k --size=500m --numjobs=4 --runtime=10 --group_reporting --name=test-write
顺序读性能
1
fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=read --bs=4k --size=500m --numjobs=4 --runtime=10 --group_reporting --name=test-read
随机写性能
1
fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=randwrite --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-write
随机读性能
1
fio --filename=/data/test -iodepth=64 --ioengine=libaio --direct=1 --rw=randread --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-read
随机读写性能
1
fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=randrw --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-readwrite
IMRSim实际测试样例
随机写
随机读
顺序写
顺序读