一、前言
1、介绍
vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。
2、版本包获取
-
vdbench版本包
下载链接 -
jdk版本包
下载链接(windows)
下载链接(linux)
二、安装部署
1、Linux客户端
- 部署jdk环境
解压缩jdk安装包至/opt
目录
tar -zxvf jdk-8u251-linux-x64.tar.gz -C /opt/
配置jdk环境变量
echo 'JAVA_HOME=/opt/jdk1.8.0_251' >> /root/.bashrc
echo 'PATH=$JAVA_HOME/bin:$PATH' >> /root/.bashrc
echo 'CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /root/.bashrc
source /root/.bashrc
- 配置免秘钥
非必选项,如需要联机测试,则需要配置此项
示例使用三个客户端联机测试,使用客户端node241
作为主节点
客户端主机名 | 客户端IP |
---|---|
node241 | 66.66.66.241 |
node242 | 66.66.66.242 |
node243 | 66.66.66.243 |
将每个节点IP和主机名的映射关系写入到/etc/hosts
配置文件内
echo '66.66.66.241 node241' >> /etc/hosts
echo '66.66.66.242 node242' >> /etc/hosts
echo '66.66.66.243 node243' >> /etc/hosts
主节点生成公钥文件,并拷贝到其他从节点(配置主节点到从节点免秘钥登录)
ssh-keygen
ssh-copy-id node242
ssh-copy-id node243
- vdbench使用
解压缩vdbench安装包至/root/vdbench50406
目录内,切换到vdbench解压缩目录执行对应参数文件即可
unzip vdbench50406.zip -d /root/vdbench50406
2、Windows客户端
-
部署jdk环境
直接安装jdk软件即可(环境变量在安装完成后会自动添加) -
vdbench使用
解压缩vdbench软件包,切换到vdbench解压缩目录执行对应参数文件即可
3、注意事项
- 在联机测试时,客户端的系统时间需保持一致,否则会出现时钟同步告警(this can lead to heartbeat issues)
- 客户端的防火墙要关闭(或者设置开放程序指定端口
5570
、5560
访问) - 关闭系统日志服务
rsyslog
,避免运行时出现其他日志文件打印信息
参数文件添加messagescan=no
可以过滤掉多余的系统日志
三、常用操作
1、常用操作命令
检查vdbench环境
./vdbench -t
运行测试模型
注:-f后接测试参数文件名,-o后接导出测试结果路径
./vdbench -f {filename} -o {exportpath}
建立rsh通信
注:此命令是用于windows系统多主机联机跑vdbench时使用,因为windows操作系统不支持ssh,因此,vdbench提供了rsh的通信方式。在目标主机上执行此工具后,vdbench将会启动一个java socket用于vdbench slave与master之间通信
./vdbench rsh
四、参数说明
vdbench可用于文件系统及块设备基准性能测试,以下主要介绍文件系统及块存储的常用测试参数
vdbench所有测试参数都定义到一个参数文件内,在运行时按照顺序被读取执行相应操作,在参数文件定义时需要执行顺序进行定义
1、文件系统
文件系统参数文件定义顺序为:HD、FSD、FWD、RD
1.1、HD(Host Define)
非必选项,单机运行时不需要配置HD参数,一般只有在多主机联机测试时才需要配置
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node241
hd=hd2,system=node242
hd=hd3,system=node243
- hd= 标识主机定义的名称,多主机运行时,可以使用hd1、hd2、hd3…区分
- system= 主机IP地址或主机名
- vdbench= vdbench执行文件存放路径,当多主机存放路径不同时,可在hd定义时单独指定
- user= slave和master通信使用用户
- shell= 可选值为
rsh
、ssh
或vdbench
,默认值为rsh
,多主机联机测试时,mater和slave主机间通信方式
当参数值为rsh
时,需要配置master和slave主机rsh互信,考虑到rsh使用明文传输,安全级别不够,通常情况下不建议使用这种通信方式
当参数值为ssh
时,需要配置master和slave主机ssh互信,通常Linux主机联机时使用此通信方式
当参数值为vdbench
,需要在所有slave主机运行vdbench rsh
启用vdbench本身的rsh守护进程,通常Window主机联机时使用此通信方式
1.2、FSD(File System Define)
fsd=default,openflags=directio,depth=2,width=3,files=2,size=128k
fsd=fsd1,anchor=/mnt/client1
fsd=fsd2,anchor=/mnt/client2
fsd=fsd3,anchor=/mnt/client3
- fsd= 标识文件系统定义的名称,多文件系统时(
fsd1
、fsd2
、fsd3
…),可以指定default
(将相同的参数作为所有fsd的默认值) - openflags= 通过设置为
o_direct
或directio
,以无缓冲缓存的方式进行读写操作 - anchor= 文件写入目录,linux指定路径为
/dir01
;windows指定路径为E:\dir01
; - depth= 创建目录层级数(即目录深度)
- width= 每层文件夹的子文件夹数
- files= 测试文件个数(vdbench测试过程中会生成多层级目录结构,实际只有最后一层目录会生成测试文件)
- size= 每个测试文件大小
- **distribution= ** 可选值为
bottom
或all
,默认为bottom
–当参数值为bottom
时,程序只在最后一层目录写入测试文件
–当参数值为all
时,程序在每一层目录都写入测试文件 - shared= 可选值为
yes
或no
,默认值为no
,一般只有在多主机联机测试时指定
vdbench不允许不同的slave之间共享同一个目录结构下的所有文件,因为这样会带来很大的开销,但是它们允许共享同一个目录结构。加入设置了shared=yes,那么不同的slave可以平分一个目录下所有的文件来进行访问,相当于每个slave有各自等分的访问区域,因此不能测试多个客户的对同一个文件的读写
–当多主机联机测试时,写入的根目录anchor
为同一个路径时,需要指定参数值为yes
hd=default,vdbench=/root/vdbench50406,user=root,shell=ssh
hd=hd1,system=node1
hd=hd2,system=node2
hd=hd3,system=node3
fsd=fsd1,anchor=/client/,depth=2,width=100,files=100,size=4k,shared=yes
计算公式如下:
最后一层生成文件夹个数=width
^depth
测试文件个数=(width
^depth
)*files
fsd=fsd1,anchor=/dir1,depth=2,width=3,files=2,size=128k
以上述参数为例,生成目录结构及测试文件如下:
最后一层文件夹数=3^2=9 最后一层文件数=9*2=18
/dir1/
├── no_dismount.txt
├── vdb.1_1.dir
│ ├── vdb.2_1.dir
│ │ ├── vdb_f0001.file
│ │ └── vdb_f0002.file
│ ├── vdb.2_2.dir
│ │ ├── vdb_f0001.file
│ │ └── vdb_f0002.file
│ └── vdb.2_3.dir
│ ├── vdb_f0001.file
│ └── vdb_f0002.file
├── vdb.1_2.dir
│ ├── vdb.2_1.dir
│ │ ├── vdb_f0001.file
│ │ └── vdb_f0002.file
│ ├── vdb.2_2.dir
│ │ ├── vdb_f0001.file
│ │ └── vdb_f0002.file
│ └── vdb.2_3.dir
│ ├── vdb_f0001.file
│ └── vdb_f0002.file
├── vdb.1_3.dir
│ ├── vdb.2_1.dir
│ │ ├── vdb_f0001.file
│ │ └── vdb_f0002.file
│ ├── vdb.2_2.dir
│ │ ├── vdb_f0001.file
│ │ └── vdb_f0002.file
│ └── vdb.2_3.dir
│ ├── vdb_f0001.file
│ └── vdb_f0002.file
└── vdb_control.file
12 directories, 20 files
1.3、FWD(FileSystem Workload Defile)
fwd=default,operation=read,xfersize=4k,fileio=sequential,fileselect=random,threads=2
fwd=fwd1,fsd=fsd1,host=hd1
fwd=fwd2,fsd=fsd2,host=hd2
fwd=fwd3,fsd=fsd3,host=hd3
- fwd= 标识文件系统工作负载定义的名称,多文件系统工作负载定义时,可以使用fwd1、fwd2、fwd3…区分