前言

   当前在大数据时代的背景之下,数据存储成了当前的解决的痛点,各大厂商纷纷推出了自己的存储系统,华为,腾讯,百度等,他们虽然有云服务,云主机等上层应用产品,但是在底层上仍需要自己设计的存储管理系统

本文就是讲解针对存储系统的 ,磁盘性能测试工具使用  以及脚本的编写。

在上一篇文章中我们已经讲道了对于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++环境可能更稳定一些。

 

如有任何问题请留言,看到必回复。

 

 

 

Logo

快速构建 Web 应用程序

更多推荐