我的快乐小窝 > 旧信息 >Vdbench工具安装使用

Vdbench工具安装使用

 

一、 概述
1.1 内容简介

     Vdbench 是一个命令行使用程序,旨在帮助工程师和客户生成用于验证存储性能和存储数据完
整性的磁盘 I/O 负载。还可通过输入文本文件指定 Vdbench 执行参数。它是一个免费的工具,容
易使用,而且常常用于测试和基准测试。
本指南向读者介绍 Vdbench 工具在在 Linux 和 Windows 平台安全使用,对快速学习该工具提
供参考。

     文档包含以下内容:

  • 安装配置
  • 常用参数详解
  • 常用测试用例

1.2 产品版本

产品名称

版本

描述

Vdbench5.04.07性能测试工具
Linux 客户端CentOS 7.6 X64Linux 操作系统
Windows 客户端Windows 2012 R2 X64Windows 操作系统

1.3 读者对象
      本文档主要适用于如下工程师:

  • 部门工程师
  • 合作伙伴技术工程师
  • 客户技术工程师

二、 下载地址

官网下载链接: Vdbench Downloads

3.1 Linux 安装步骤

     3.1.1 上传所需软件
              使用 winscp 或者 filezilla 将所需软件上传至/root/目录下

  • Linux 对应版本操作系统的 iso
  • vdbench50407.zip

     3.1.2 配置 YUM 源安装 java 环境
              检查是否已经安装 java,如已安装,请跳过本步骤(3.1.2),继续执行 3.1.3 步骤即可。
              rpm -qa|grep ^java
              输出如下,则说明已经安装 java。

 3.1.2.1 本地 YUM 源安装(推荐)
 1、如无法接入外网情况下,可考虑配置本地 YUM 源进行安装相关依赖包;使用 winscp 或者 filezilla 将 Linux 对应版本操作系统的 iso 上传至/root/目录下

mount -o loop /root/.iso /media/

yum-config-manager --add-repo=file:///media

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-*

yum clean all

yum makecache

yum repolist


 2、安装 java

yum install -y java-1.8.0-openjdk

3.1.2.2 互联网 YUM 源安装
1、确定本机可以访问互联网
2、配置 DNS

#vim /etc/resolv.conf    //在这个文件中插入如下内容

nameserver 114.114.114.114

ping www.baidu.com

输出如下,则说明可以正常访问互连网且域名解析正常;否则请检查网络和 DNS 的配置。

3、使用系统自带 CentOS-Base.repo 配置文件即可
备注:如果没有该配置文件则可以手动新建编辑 CentOS-Base.repo 文件

# vi /etc/yum.repos.d/CentOS-Base.repo //在这个文件中插入如下内容

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&i

nfra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates

[updates]

name=CentOS-$releasever - Updates

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=upda

tes&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extra

s&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

4、安装 java

yum install -y java-1.8.0-openjdk

3.1.3 安装 Vdbench
Vdbench 无需安装,解压 vdbench50407.zip 即可。

mkdir /root/vdbench50407

mv /root/vdbench50407.zip /root/vdbench50407

unzip /root/vdbench50407/vdbench50407.zip


3.1.4 验证 Vdbench 是否安装成功
执行以下命令检查是否安装成功:

/root/vdbench50407/vdbench -t


看到结尾输入如下,则说明安装成功:

 

3.2 Windows 安装步骤
3.2.1 上传所需软件
使用远程桌面将所需软件上传至 C 盘目录下

  • jre-8u241-windows-x64.exe
  • vdbench50407.zip

3.2.2 安装 java
a) 双击“jre-8u241-windows-x64.exe”
b) 点击“安装”,开始安装

c) 完成安装

3.2.3 安装 Vdbench
Vdbench 无需安装,解压 vdbench50407.zip 即可。
3.2.4 验证 Vdbench 是否安装成功
win + R,打开命令行窗口
依次进入到 Vdbench 所在的文件夹,执行.vdbench -t

 

看到结尾输入如下,则说明安装成功:

四、 常用参数详解
4.1 块设备常用参数
      4.1.1 主机定义(HD)

hd:主机定义
system= IP 地址或网络名称


      4.1.2 存储定义(SD)

sd= 标识存储的名称。
host= 存储所在的主机的 ID。
lun= 原始磁盘、磁带或文件系统的名称。Vdbench 也可为您创建一个磁盘。
threads= 对 SD 的最大并发 I/O 请求数量。默认为 8。
hitarea= 调整读取命中百分比的大小。默认为 1m
openflags= 用于打开一个 lun 或一个文件的 flag_list


      4.1.3 工作负载定义(WD)

wd= 标识工作负载的名称
sd= 要使用的存储定义的 ID
host= 要运行此工作负载的主机的 ID。默认设置为 localhost
rdpct= 读取请求占请求总数的百分比,为 100,则为读;为 0,则为写。
rhpct= 读取命中百分比。默认设置为 0。
whpct= 写入命中百分比。默认设置为 0。
xfersize= 要传输的数据大小。默认设置为 4k。
seekpct= 随机寻道的百分比。可为随机值,为 0 则为顺序;为 100 则为随机。


      4.1.4 工作负载定义(RD)

rd= 标识运行的名称。
wd= 用于此运行的工作负载的 ID。
iorate= 一个或多个 I/O 速率XSKY Vdbench 工具安装使用标准文档
interval=报告间隔序号
elapsed= time:以秒为单位的运行持续时间。默认设置为 30。
warmup= time:加热期,最终会被忽略

4.2 文件系统常用参数
      4.2.1 主机定义(HD)

hd:主机定义
system= IP 地址或网络名称


      4.2.2 文件存储定义(FSD)

fsd= 标识文件系统定义的名称
anchor= 将在其中创建目录结构的目录
width= 要在定位符下创建的目录数
depth= 要在定位符下创建的级别数
files= 要在最低级别创建的文件数
sizes=将创建的文件大小
openflags= 用于打开一个 lun 或一个文件的 flag_list


      4.2.3 文件工作负载定义(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。
选择要执行的单个文件操作。
threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件。

      4.2.4 运行定义(RD)

rd= 标识运行的名称。
fwd= 要使用的文件系统工作负载定义的 ID。
interval=报告间隔序号
fwdrate= 每秒执行的文件系统操作数量。
format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。
yes:是每次都会先删除目录文件,再重新创建
restart:每次起的时候会先校验文件、目录是否全,不全的补上
elapsed= time:以秒为单位的运行持续时间。

五、 使用方法
        5.1 Linux 使用方法

/root/vdbench50407/vdbench -f parmfile


        5.2 Windows 使用方法

c:vdbench50407vdbench.bat -f parmfile

六、 常用测试脚本
        6.1 Linux 常用测试脚本
             6.1.1 块存储常用测试脚本

//定义主机的默认参数,Vdbench 的路径为/root/vdbench50407,用户为 root,shell 为 ssh

hd=default,vdbench=/root/vdbench50407,user=root,shell=ssh

//定义 3 个主机,标签为 hd1-3,ip 为 44.8.16.205-207

hd=hd1,system=44.8.16.205

hd=hd2,system=44.8.16.206

hd=hd3,system=44.8.16.207

//定义存储的默认参数,openflags 采用 O_direct,卷大小为 100G,线程为 8 个。

sd=default,openflags=o_direct,size=100GB,threads=8

//定义 6 个存储,分别是主机 hd1 的 sdn、sdo 的卷,主机 hd2 的 sdn、sdo 的卷,主机 hd3 的sdn、sdo 的卷

sd=sd1,hd=hd1,lun=/dev/sdn

sd=sd2,hd=hd1,lun=/dev/sdo

sd=sd3,hd=hd2,lun=/dev/sdn

sd=sd4,hd=hd2,lun=/dev/sdo

sd=sd5,hd=hd3,lun=/dev/sdn

sd=sd6,hd=hd3,lun=/dev/sdo

//定义工作负载 RandomCase1,4k 100%随机写

wd=RandomCase1,rdpct=0,seekpct=100,xfersize=4k

//定义工作负载 RandomCase2,4k 100%随机读

wd=RandomCase2,rdpct=100,seekpct=100,xfersize=4k

//定义工作负载 RandomCase3,1M 100%顺序写

wd=RandomCase3,rdpct=0,seekpct=0,xfersize=1024k

//定义工作负载 RandomCase4,1M 100%顺序读

wd=RandomCase4,rdpct=100,seekpct=0,xfersize=1024k

//定义运行默认参数,打印间隔为 1s,io 速率为最大

rd=default,interval=1,iorate=max

//定义运行任务 TestCase1,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 4k 随机写测试)

rd=TestCase1,wd=RandomCase1,sd=sd*,warmup=120,elapsed=60

//定义运行任务 TestCase2,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 4k 随机读测试)

rd=TestCase2,wd=RandomCase2,sd=sd*,warmup=120,elapsed=60

//定义运行任务 TestCase3,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 1M 顺序写测试)

rd=TestCase3,wd=RandomCase3,sd=sd*,warmup=120,elapsed=60

//定义运行任务 TestCase4,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 1M 顺序读测试)

rd=TestCase4,wd=RandomCase4,sd=sd*,warmup=120,elapsed=60

  6.1.2 文件存储常用测试脚本

//定义主机的默认参数,Vdbench 的路径为/root/vdbench50407,用户为 root,shell 为 ssh

hd=default,vdbench=/root/vdbench50407,user=root,shell=ssh

//定义 3 个主机,标签为 hd1-3,ip 为 44.8.16.205-207

hd=hd1,system=44.8.16.205

hd=hd2,system=44.8.16.206

hd=hd3,system=44.8.16.207

//定义文件存储的默认参数,文件夹的深度为 3,广度为 8,共计 512 个文件夹。

fsd=default,depth=3,width=8

//定义文件存储 fsd1,目录为/test-nas/4k,最下层每个文件夹里有 512 个文件,每个文件大小为4k。

fsd=fsd1,anchor=/test-nas/4k,files=512,size=4k,shared=yes

//定义文件存储 fsd2,目录为/test-nas/4k,最下层每个文件夹里有 32 个文件,每个文件大小为1m。

fsd=fsd2,anchor=/test-nas/1m,files=32,size=1m,shared=yes

//定义默认文件工作负载,线程为 16 个,openflags 采用 O_direct,传输数据的大小为 512k。

fwd=default,threads=16,openflags=o_direct,xfersize=512k

//定义文件工作负载 fwd1,主机为 hd1-hd3,文件存储定义为 fsd1,单个文件为顺序写,文件选择方式为随机。

fwd=fwd1,hd=(hd1,hd2,hd3),fsd=fsd1,operation=write,fileio=sequential,fileselect=random

//定义文件工作负载 fwd2,主机为 hd1-hd3,文件存储定义为 fsd1,单个文件为顺序读,文件选择方式为随机。

fwd=fwd2,hd=(hd1,hd2,hd3),fsd=fsd1,operation=read,fileio=sequential,fileselect=random

//定义文件工作负载 fwd3,主机为 hd1-hd3,文件存储定义为 fsd2,单个文件为顺序写,文件选择方式为随机。

fwd=fwd3,hd=(hd1,hd2,hd3),fsd=fsd2,operation=write,fileio=sequential,fileselect=random

//定义文件工作负载 fwd4,主机为 hd1-hd3,文件存储定义为 fsd2,单个文件为顺序读,文件选择方式为随机。

fwd=fwd4,hd=(hd1,hd2,hd3),fsd=fsd2,operation=read,fileio=sequential,fileselect=random

//定义运行 rd1,文件工作负载为 fwd1,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd1,fwd=fwd1,interval=1,format=restart,fwdrate=max,elapsed=60

//定义运行 rd2,文件工作负载为 fwd2,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd2,fwd=fwd2,interval=1,format=restart,fwdrate=max,elapsed=60

//定义运行 rd3,文件工作负载为 fwd3,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd3,fwd=fwd3,interval=1,format=restart,fwdrate=max,elapsed=60

//定义运行 rd4,文件工作负载为 fwd4,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd4,fwd=fwd4,interval=1,format=restart,fwdrate=max,elapsed=60

fsd=fsd1,anchor=/testing_dir,depth=1,width=1,file=100000,size=10m,openflags=o_direct  
fwd=fwd1,fsd=fsd1,operation=read,xfersize=1m,fileio=random,fileselect=random,threads=64  
rd=rd1,fwd=fwd1,fwdrate=max,format=no,forrdpct=(0),elapsed=120,interval=2,pause=1m

6.2 Windows 常用测试脚本
      6.2.1 块存储常用测试脚本

//定义主机的默认参数,Vdbench 的路径为 c:vdbench50407,shell 为 vdbench

hd=default,vdbench=c:vdbench50407,shell=vdbench

//定义 3 个主机,标签为 hd1-3,ip 为 44.8.16.205-207

hd=hd1,system=44.8.16.205

hd=hd2,system=44.8.16.206

hd=hd3,system=44.8.16.207

//定义存储的默认参数,openflags 采用 directio,卷大小为 90G(设置为创建的卷的 90%),线程为 8 个。

sd=default,openflags=directio,size=90GB,threads=8

//定义 6 个存储,分别是主机 hd1 的磁盘 id 为 1、2 的磁盘,主机 hd2 的磁盘 id 为 1、2 的磁盘,主机 hd3 的磁盘 id 为 1、2 的磁盘

sd=sd1,hd=hd1,lun=\.physicaldrive1

sd=sd2,hd=hd1,lun=\.physicaldrive2

sd=sd3,hd=hd2,lun=\.physicaldrive1

sd=sd4,hd=hd2,lun=\.physicaldrive2

sd=sd5,hd=hd3,lun=\.physicaldrive1

sd=sd6,hd=hd3,lun=\.physicaldrive2

//定义工作负载 RandomCase1,4k 100%随机写

wd=RandomCase1,rdpct=0,seekpct=100,xfersize=4k

//定义工作负载 RandomCase2,4k 100%随机读

wd=RandomCase2,rdpct=100,seekpct=100,xfersize=4k

//定义工作负载 RandomCase3,1M 100%顺序写

wd=RandomCase3,rdpct=0,seekpct=0,xfersize=1024k

//定义工作负载 RandomCase4,1M 100%顺序读

wd=RandomCase4,rdpct=100,seekpct=0,xfersize=1024k

//定义运行默认参数,打印间隔为 1s,io 速率为最大

rd=default,interval=1,iorate=max

//定义运行任务 TestCase1,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 4k 随机写测试)

rd=TestCase1,wd=RandomCase1,sd=sd*,warmup=120,elapsed=60

//定义运行任务 TestCase2,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 4k 随机读测试)

rd=TestCase2,wd=RandomCase2,sd=sd*,warmup=120,elapsed=60

//定义运行任务 TestCase3,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 1M 顺序写测试)

rd=TestCase3,wd=RandomCase3,sd=sd*,warmup=120,elapsed=60

//定义运行任务 TestCase4,使用工作负载 RandomCase1,使用存储为所有定义存储,预热120s,运行 60s。(执行 1M 顺序读测试)

rd=TestCase4,wd=RandomCase4,sd=sd*,warmup=120,elapsed=60

   6.2.2 文件存储常用测试脚本

//定义主机的默认参数,Vdbench 的路径为 c:vdbench50407,shell 为 vdbench

hd=default,vdbench=c:vdbench50407,shell=vdbench

//定义 3 个主机,标签为 hd1-3,ip 为 44.8.16.205-207

hd=hd1,system=44.8.16.205

hd=hd2,system=44.8.16.206

hd=hd3,system=44.8.16.207

//定义文件存储的默认参数,文件夹的深度为 3,广度为 8,共计 512 个文件夹。

fsd=default,depth=3,width=8

//定义文件存储 fsd1,目录为/test-nas/4k,最下层每个文件夹里有 512 个文件,每个文件大小为4k。

fsd=fsd1,anchor=X:4k,files=512,size=4k,shared=yes

//定义文件存储 fsd2,目录为/test-nas/4k,最下层每个文件夹里有 32 个文件,每个文件大小为1m。

fsd=fsd2,anchor=X:1m,files=32,size=1m,shared=yes

//定义默认文件工作负载,线程为 16 个,openflags 采用 directio,传输数据的大小为 512k。

fwd=default,threads=16,openflags=directio,xfersize=512k

//定义文件工作负载 fwd1,主机为 hd1-hd3,文件存储定义为 fsd1,单个文件为顺序写,文件选择方式为随机。

fwd=fwd1,hd=(hd1,hd2,hd3),fsd=fsd1,operation=write,fileio=sequential,fileselect=random

//定义文件工作负载 fwd2,主机为 hd1-hd3,文件存储定义为 fsd1,单个文件为顺序读,文件选择方式为随机。

fwd=fwd2,hd=(hd1,hd2,hd3),fsd=fsd1,operation=read,fileio=sequential,fileselect=random

//定义文件工作负载 fwd3,主机为 hd1-hd3,文件存储定义为 fsd2,单个文件为顺序写,文件选方式为随机。

fwd=fwd3,hd=(hd1,hd2,hd3),fsd=fsd2,operation=write,fileio=sequential,fileselect=random

//定义文件工作负载 fwd4,主机为 hd1-hd3,文件存储定义为 fsd2,单个文件为顺序读,文件选择方式为随机。

fwd=fwd4,hd=(hd1,hd2,hd3),fsd=fsd2,operation=read,fileio=sequential,fileselect=random

//定义运行 rd1,文件工作负载为 fwd1,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd1,fwd=fwd1,interval=1,format=restart,fwdrate=max,elapsed=60

//定义运行 rd2,文件工作负载为 fwd2,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd2,fwd=fwd2,interval=1,format=restart,fwdrate=max,elapsed=60

//定义运行 rd3,文件工作负载为 fwd3,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd3,fwd=fwd3,interval=1,format=restart,fwdrate=max,elapsed=60

//定义运行 rd4,文件工作负载为 fwd4,打印间隔为 1s,运行前执行的操作为 restart,执行文件操作的速率为最大,执行时间为 60s。

rd=rd4,fwd=fwd4,interval=1,format=restart,fwdrate=max,elapsed=60

七、 测试结果解读

        7.1 输出结果
最后输出结果如下,则说明测试完成:
Vdbench execution completed successfully. Output directory: /root/vdbench50407/output
       7.2 输出文件说明
每次运行后,Vdbench 会创建一个包含以下文件的 output 文件夹:

  • errorlog.html:当为测试启用了数据验证(-jn)时,它可包含一些数据块中的错误的相关信息
  • flatfile.html:包含 Vdbench 生成的一种逐列的 ASCII 格式的信息。
  • histogram.html:种包含报告柱状图的响应时间、文本格式的文件。
  • logfile.html:包含 Java 代码写入控制台窗口的每行信息的副本。logfile.html 主要用于调试用途
  • parmfile.html:显示已包含用于测试的每项内容的最终结果
  • resourceN-M.html、resourceN.html、resourceN.var_adm_msgs.html:摘要报告、stdout/stderr 报告、主机 N 的摘要报告。
  • sdN.histogram.html、sdN.html:每个 N 存储定义的柱状图和存储定义 “N” 报告。
  • summary.html:主要报告文件,显示为在每个报告间隔的每次运行生成的总工作负载,以及除第一个间隔外的所有间隔的加权平均值。

      7.3 summary.html 文件说明
           7.3.1 块存储 sunmary.html 说明

interval:打印间隔

I/O rate:每秒平均 I/O 率

MB sec:每秒平均带宽

bytes I/O:平均 I/O 大小

read pct:平均读百分比

resp time:平均读写响应时间

read resp:平均读响应时间

write resp:平均写响应时间

resp max:最大响应时间 mb/sec

resp stddev:响应时间的标准偏差

queue depth:Vdbench 计算的平均 I/O 队列深度

cpu% sys+usr:CPU 使用率(sys+usr)

cpu% sys:CPU 使用率(sys)

  7.3.2 文件存储 sunmary.html 说明

ReqstdOps(rate/resp):每秒处理请求的个数(速率/响应时间)

cpu%(total/sys):CPU 使用率(total/sys)

read pct:读百分比

read(rate/resp):读(速率/响应时间)

write(rate/resp):写(速率/响应时间)

mb/sec(read/write):带宽(读/写)

mb/sec total:总的读写带宽

xfer size:平均传输大小

mkdir(rate/resp):创建文件夹(速率/响应时间)

rmdir(rate/resp):移除文件夹(速率/响应时间)

create(rate/resp):创建文件(速率/响应时间)

open(rate/resp):打开文件(速率/响应时间)

close(rate/resp):关闭文件(速率/响应时间)

delete(rate/resp):删除文件(速率/响应时间)

本文来自网络,不代表本站立场,转载请注明出处:https://51.wxwx.cc/index.php?m=content&c=index&a=show&catid=392&id=236098

我的快乐小窝,知识百科

我的快乐小窝后续将为您提供丰富、全面的关于我的快乐小窝,知识百科内容,让您第一时间了解到关于我的快乐小窝,知识百科的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。