前言
当前在大数据时代的背景之下,数据存储成了当前的解决的痛点,各大厂商纷纷推出了自己的存储系统,华为,腾讯,百度等,他们虽然有云服务,云主机等上层应用产品,但是在底层上仍需要自己设计的存储管理系统。
本文就是讲解针对存储系统的 ,磁盘性能测试工具使用 以及脚本的编写。
在上一篇文章中我们已经讲道了对于Fio工具的使用,想学习的可以参考我的博客
https://blog.csdn.net/u013521274/article/details/107949362
而今天,我们将要进行学习的是另一个工具的使用vdbench,vdbench是和fio差不多的一个工具,但是和fio也有少许的不同。
比如fio有两种模式,read write,但是vdbench却有三种模式,如下图所示。
vdbench比Fio多了一个模式create,意思是创建文件,按照正常逻辑确实应该还是创建完文件才去写,但是如果文件比较大,时间都耗费在了写文件上,那么创建文件的时间就可以忽略。
因此,vdbench的create模式就能很好的用于大量小文件的创建任务,因为小文件的创建耗时在创建(create)上,而非是写(write)上,所以vdbench对于大批量小文件的生成任务要比fio更好。
1、vdbench工具在Centos7上的安装
1.1 准备java环境
和fio不同,fio依靠的是c++环境,而vdbench依靠的是java环境。在centos7上安装java的教程我们已经有了,大家可以参考我的博客
https://blog.csdn.net/u013521274/article/details/109539711
1.2 安装vdbench
vdbench包下载,这个包好像是Linux 和Windows通用的大家可以到我的资源里进行下载:
https://download.csdn.net/download/u013521274/14915064
下载完毕之后通过winscp 或者 xftp 上传到Linux的目录下。
然后进行解压执行命令
tar -zxvf vdbench50406.zip
或者
unzip vdbench50406.zip
可以查看到上图的解压目录。
然后通过cd命令进入到 解压目录
ls 查看
执行以下命令查看测试vdbench的可用性:
./vdbench -t
如果出现以下情况代表可用。
2、vdbench的使用
vdbench使用进行性能测试,不和fio一样,fio安装完成之后,编写完脚本在任意的地方都能执行。
但是vdbench即便是编写完了脚本,也必须在安装目录下执行,不是太方便。所以为了解决这个问题
我们会用.sh脚本在外层嵌套一个文件,这样我们就能在任意位置执行我们的命令了。
2.1 写好vdbench测试规则
之前使用过Fio做性能测试的人都应该知道,当前测试我们都是测试4k、8k、128k、1M、2M、4M、128M、1G等块大小下的读写速度。网上也有很多的博客
教程来解释怎么使用,但是我觉得他们解释的太过于繁琐了,我们直接上手使用吧,以实际的例子看看怎么写。
看一个4K测试规则的编写。
fsd=fsd1,anchor=/mnt/test1/4k,depth=1,width=5,files=10,size=4k
fwd=fwd1,fsd=fsd1,operation=create,threads=8,xfersize=4k,fileio=sequential,openflags=o_direct
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=3600,interval=2
有很多博客来介绍fsd,fwd,rd等,我就不再赘述了,我一般都是默认后面加1就完事了。以下是4k的各个我用到的参数的解释。
向以上是一个块为4k,create模式的磁盘性能测试规则脚本。同时我们也可以写好8k,1M,1G等规则脚本,以便于我们调用
1M读
fsd=fsd1,anchor=/mnt/test2/1M,depth=1,width=10,files=10000,size=1M
fwd=fwd1,fsd=fsd1,operation=read,threads=100,xfersize=1M,fileio=sequential,openflags=o_direct
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=3600,interval=2
1M写
fsd=fsd1,anchor=/mnt/test2/1M,depth=1,width=10,files=10000,size=1M
fwd=fwd1,fsd=fsd1,operation=write,threads=100,xfersize=1M,fileio=sequential,openflags=o_direct
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=3600,interval=2
1G读
fsd=fsd1,anchor=/mnt/test2/1G,depth=1,width=10,files=10,size=1G
fwd=fwd1,fsd=fsd1,operation=read,threads=100,xfersize=1M,fileio=sequential,openflags=o_direct
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=3600,interval=2
1G写
fsd=fsd1,anchor=/mnt/test2/1G,depth=1,width=10,files=10,size=1G
fwd=fwd1,fsd=fsd1,operation=write,threads=100,xfersize=1M,fileio=sequential,openflags=o_direct
rd=rd1,fwd=fwd*,fwdrate=max,format=yes,elapsed=3600,interval=2
等等等,写好以便于我们调用。
2.2 执行命令用sh脚本嵌套
当我们脚本编写好之后,就是执行,但是vdbench必须要在其安装目录执行命令,不是太友好,所以我们把它用sh脚本来嵌套,就可
以实现任意地方执行测试脚本了。
#!/bin/bash
#测试挂载目录/mnt/test1/:4k 64k 128k 512k
# /mnt/test2/:1M 8M 128M 1G
#规则文件: ./nfs/
#日志: ./testlog/NFS/
mkdir -p testlog/NFS/
#**************************Sequence create/write Test*************************#
#4k create
./vdbench -f ./nfs/4k_create -o testlog/NFS/4k_create
#64k create
./vdbench -f ./nfs/64k_create -o testlog/NFS/64k_create
date
echo "test done"
如上代码所示,我们测试的是挂载目录/mnt/test1的性能,测试规则文件我们写好之后放到了/nfs的目录中,日志输出目录为/testlog。
2.3 指定日志的输出目录
如上图所示,我们执行前先创建了testlog文件夹用来储存日志,也就是我们的测试结果。并指定了每一个规则文件执行后产生后的日志存储目录。
vdbench的性能测试日志不想fio似的,最终结果直接在命令行就显示出来,vdbench是会生成HTML文件,你得导出到windos查看才比较方便。
vdbench执行的过程中会实时有日志。(但不是最终结果)
3. vdbench执行样例
执行完脚本后,我们就去日志输出目录去查看结果。
如果测试中间报错了,我们回去查看errorlog.html,总的结果我们回去看summary.html,
summary.html中出现了
Vdbench execution completed successfully 代表执行成功。
结果一般是查看平均值,你比如我执行的create 模式,那就要查看create的性能指标。
rate resp 两个指标代表了写的速率和每秒的读写次数,类似于fio的BW 和iops 。
4、总结
fio 和vdbench两个工具各有千秋,总体来说fio更为好用一点,vdbench容易报错,特别是在长时间的性能测试中(如来个3*24小时的稳定性测试),Fio表现的更好。
这也可能是因为两者依赖的环境平台不一样,Fio依赖于C++环境可能更稳定一些。
如有任何问题请留言,看到必回复。