vdbench使用说明

文章背景

最近公司的产品有个新功能,简单来说就是要支持文件系统的文件,回源到对象存储的桶中。所以需要搭建文件共享,并往里写文件,用到了vdbench。个人也是第一次使用,不太熟练。

概述

Vdbench是Oracle编写的一款应用广泛的存储性能测试工具,既支持块设备的性能测试,也支持文件系统性能测试。可用于基准测试存储产品的测试(HDD/SSD等等)。

其特点包括:

  • 使用java编写,兼容linux和windows的操作系统
  • 强数据一致性的校验。随机写的一致性测试很方便,能实时检查出哪一个扇区出现了数据不一致。
  • 多负载类型/多设备加压
  • 单节点部署,多节点分布式部署

下载安装

下载

Vdbench的下载和使用非常方便。本文以linux使用环境(centos7.2)为例。

源码下载:http://www.oracle.com/technetwork/server-storage/vdbench-source-download-2104625.html

运行文件下载:http://www.oracle.com/technetwork/server-storage/vdbench-downloads-1901681.html

安装

vdbench使用java编写,因此需要安装java:

1
yum install java-1.8.0-openjdk -y 

安装好后,解压刚才下载的安装包:

1
unzip vdbench50407.zip

检测

进入vdbench相应目录下./vdbench -t 来测试一下vdbench的可用性,如果正常,会在目录下自动生成一个output目录。

1
./vdbench -t

如果报错,则需修改vdbench的权限:

1
chmod 777 vdbench

结构

  • Vdbench工具的文件夹一般命名规则为 vdbench+版本号;
  • aix、linux、hp、mac、windows、solaris 、solxx86文件夹是各种系统的库文件,通过调用它们来对各种系统进行vdbench的运行,这应该是整个工具的心脏部分;
  • example[n]文件以及example文件夹是包含了各种简单负载的负载配置文件,是用来对此进行熟悉与学习的最佳路径;
  • vdbench是linux系统下的运行入口应用程序,vdbench.exe是windows系统下的入口运行应用;
  • output 目录下存放日志信息;
  • vdbench pdf文档是工具的USER Guide。

参数说明

块设备参数 (个人暂未使用过)

HD:主机定义

system= IP 地址或网络名称

SD:存储定义

sd= 标识存储的名称。

host= 存储所在的主机的 ID。

lun= 原始磁盘、磁带或文件系统的名称。vdbench 也可为您创建一个磁盘。

threads= 对 SD 的最大并发 I/O 请求数量。默认为 8。

hitarea= 调整读取命中百分比的大小。默认为 1m

openflags= 用于打开一个 lun 或一个文件的 flag_list,裸盘设openflags=o_direct

WD:工作负载定义

wd= 标识工作负载的名称

sd= 要使用的存储定义的 ID

host= 要运行此工作负载的主机的 ID。默认设置为 localhost

rdpct= 读取请求占请求总数的百分比,为100,则为读;为0,则为写。

rhpct= 读取命中百分比。默认设置为 0。

whpct= 写入命中百分比。默认设置为 0。

xfersize= 要传输的数据大小。默认设置为 4k。

seekpct= 随机寻道的百分比。可为随机值,为0则为顺序;为100则为随机。

RD:运行定义

rd= 标识运行的名称。

wd= 用于此运行的工作负载的 ID。

iorate= (#,#,…) 一个或多个 I/O 速率

curve:性能曲线(待定义)。

max:不受控制的工作负载。

interval:报告间隔序号

elapsed= time:以秒为单位的运行持续时间。默认设置为 30。

warmup= time:加热期,最终会被忽略

distribution= I/O 请求的分布:指数、统一或确定性。

pause= 在下一次运行之前休眠的时间,以秒为单位。

常用参数

offset =

offset = 10G

Don’t start at byte zero of a LUN
The offset is in bytes and must be a multiple of 512

与size 配合使用

xfersize=

xfersize=(4k,10,8k,10,16k,80)

iorate=

iorate = 1000

iorate = max

文件系统参数

HD:主机定义。与块设备相同。

FSD:文件系统定义

fsd= 标识文件系统定义的名称

anchor= 将在其中创建目录结构的目录

width= 要在定位符下创建的目录数

depth= 要在定位符下创建的级别数

files= 要在最低级别创建的文件数

sizes= (size,size,…) 将创建的文件大小

distribution= bottom(如果希望仅在最低级别创建文件)和 all(如果希望在所有目录中创建文件)

openflags= 用于打开一个文件系统 (Solaris) 的 flag_list

FWD:文件系统工作负载定义

fwd= 标识文件系统工作负载定义的名称。

fsd= 要使用的文件系统定义的 ID。

host= 要用于此工作负载的主机的 ID。

fileio= random 或 sequential,表示文件 I/O 将执行的方式。

fileselect= random 或 sequential,标识选择文件或目录的方式。

xfersizes= 数据传输(读取和写入操作)处理的数据大小。

operation= mkdir、rmdir、create、delete、open、close、read、write、getattr 和 setattr。选择要执行的单个文件操作。

rdpct= (仅)读取和写入操作的百分比。

threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件。

RD:运行定义

fwd= 要使用的文件系统工作负载定义的 ID。

fwdrate= 每秒执行的文件系统操作数量。

format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。

yes:是每次都会先删除目录文件,再重新创建

restart:每次起的时候会先校验文件、目录是否全,不全的补上

no:不校验文件目录直接跑,事先最好将文件灌好

directories :The same as ‘yes’, but it will only create the directories.

clean:Vdbench will only delete the current file structure and NOT execute the current RD

operations= 覆盖 fwd 操作。选项相同。

vdbench文件系统测试Example:

*部署vdbench
hd=default,shell=ssh,vdbench=/root/vdb,user=root

hd=hd1,system=10.150.48.31

fsd=fsd1,anchor=/opt/sds/ngos/data_backend/5/vdbench,depth=1,width=1,files=15000,size=(0K,5,8k,45,4k,45,1M,5)

fwd=fwd1,fsd=fsd1,host=hd1,operation=write,xfersize=(4k,15,8k,35,1M,50),fileio=random,fileselect=random,threads=32

rd=rd1,fwd=fwd1,fwdrate=max,format=yes,elapsed=20,interval=1

常用参数

size=

size(8k,50,4k,50)

xfersize=

xfersize=(4k,15,8k,35,1M,50)

fwdrate=

fwdratte=1000

fwdrate=max

补充

现成的安装包