vdbench存储测试工具的安装部署
记:最近用vdbench来测试华为的NAS设备,了解学习并记录一下vdbench测试工具的使用。
一、前言
1.1 简介
vdbench测试工具是由Oracle公司推出的一款免费的,多功能的,易上手的存储测试工具。它是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加或网络连接的存储的性能。目前,在Oracle官网上共有三个发布版本,其能够在windows和linux环境下运行,可用于测试文件系统或块设备基准性能。
1.2 获取安装包
vdbench版本包
vdbench
jdk版本包
Java 8
Java
注:需要注册Oracle账号。
二、安装部署
vdbench运行在Java环境上,因此需要先安装jdk。
2.1、Linux
检查是否安装Java环境,如已安装,跳过此步骤。通过以下命令,如有Java版本信息,则已安装好Java环境。如无,安装Java后可通过此检查。
java -version
rpm -qa | grep java
2.1.1 Yum源安装Java环境
安装Java环境可以用yum源,也可以在Oracle上下载好导入安装。推荐使用yum源安装。首先检查yum源上有没有jdk的安装包。如有,直接yum源安装包括其相关依赖包。
yum list | grep java
yum -y install <jdk版本包>
2.1.2 压缩包Java安装
首先解压jdk安装包至/home
目录下。
放置解压文件的路径可自行配置。
tar -zxvf <jdk版本包.tar.gz> -C /home/
配置jdk环境变量。
echo 'JAVA_HOME=/home/<jdk版本包>' >> /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
2.1.3 安装vdbench
vdbench存储测试工具无需安装,将版本包导入Linux即可。在Linux环境下,直接运行./vdbench
即可。
2.2、Windows
2.2.1 安装Java环境
直接安装Java即可,环境变量会自动添加。
2.2.2 安装vdbench
直接解压vdbench软件包即可,此软件无需安装。Windows下用vdbench.bat即可。之后视测试情况添加对应的参数文件。
三、常用操作指令
3.1 测试vdbench是否可以正常运行
./vdbench -t
3.2 运行测试模型
./vdbench -f {filename} -o {exportpath}
注:选项 -f 后接测试参数文件名路径,选项 -o 后接导出测试结果路径。建议两个路径均使用绝对路径。
3.3 多主机间联机测试建立rsh通信
./vdbench ssh
./vdbench rsh
注:此命令中ssh是用于Linux系统多主机联机运行vdbench时使用;rsh是用于windows系统多主机联机运行vdbench时使用,因为windows操作系统不支持ssh,因此,vdbench提供了rsh的通信方式。在目标主机上执行此工具后,vdbench将会启动一个java socket用于vdbench slave与master之间通信。
四、Linux的文件系统和块设备
Linux文件系统的组织是基于目录树结构,其中根目录位于顶层,所有其他目录和文件都是在其中嵌套的。在Linux中,文件系统也被称为挂载点,因为它们可以通过挂载到计算机上的设备来访问。
查看文件系统:
df -hT
在Linux系统中,裸盘块设备是指没有文件系统格式化的硬盘或分区。这些设备直接访问硬盘的物理块,而不是通过文件系统的抽象层。裸盘块设备通常用于数据备份、磁盘克隆和磁盘映像等操作。
查看裸盘设备:
lsblk
五、运行测试
单机测试运行vdbench对Linux上的文件系统进行读写测试。
5.1 写小文件性能测试
每层创建目录数 = width;目录深度 = depth;文件数 = files;文件大小 = size;仅在最底层创建文件。注:anchor=测试的目录;默认为仅在最底层目录创建文件,可通过distribution参数调整。
vim creat-files
messagescan=no
fsd=fsd1,anchor=/dir,depth=2,width=10,files=100,size=8k
fwd=fwd1,fsd=fsd1,operation=read,threads=16
rd=rd1,fwd=fwd*,fwdrate=100,format=yes,elapsed=5,interval=1
5.2 删除小文件及其目录性能测试
fsd=fsd1,anchor=/dir1,depth=1,width=1,files=1000,size=8k
fwd=default,threads=16
fwd=fwd0,fsd=fsd1,operation=read
fwd=fwd1,fsd=fsd1,operation=delete
fwd=fwd2,fsd=fsd1,operation=rmdir
#Vdbench will stop after the last file has been deleted
rd=rd_delete,fwd=fwd1,fwdrate=max,elapsed=99999,interval=1
#Vdbench will stop after the last directory has been deleted
rd=rd_rmdir,fwd=fwd2,fwdrate=max,elapsed=99999,interval=1
六、测试结果
用vdbench运行测试脚本结束后,会在 -f 指定的目录下输出测试结果文件。
6.1输出文件
- anchors.html
锚点状态报告。如果文件系统定义(FSD)的锚定目录不存在,则会自动创建该目录。但是,不会创建其父目录。使用“create_anchors=yes”还可以包括父目录的创建。 - config.html
配置文件报告。主要输出关于系统存储的相关信息。 -
errorlog.html
运行错误日志报告。当为测试启用了数据验证(-jn)时,它可包含一些数据块中的错误的相关信息 -
flatfile.html
包含 Vdbench 生成的一种逐列的 ASCII 格式的信息。 - format.histogram.html
- format.html
- fsdX.histogram.html
- fsdX.html
- fwdX.histogram.html
- fwdX.html
-
histogram.html
包含报告柱状图的响应时间、文本格式的文件。 - localhost-0.html
- localhost-0.stdout.html
- localhost.html
- localhost.var_adm_msgs.html
-
logfile.html
包含 Java 代码写入控制台.窗口的每行信息的副本。logfile.html 主要用于调试用途。 -
parmfile.html
显示已包含用于测试的每项内容的最终结果。 - parmscan.html
- skew.html
- status.html
-
summary.html
主要报告文件,显示为在每个报告间隔的每次运行生成的总工作负载,以及除第一个间隔外的所有间隔的加权平均值。 - swat_mon.html
-
totals.html
记录所有数据计算以后的平均值,通常测试结果从该文件取值,除第一个间隔外全部间隔的加权平均值
6.2 主要查看的输出文件
6.2.1 errorlog.html
当为测试启用了数据验证时,它可包含一些数据块中的错误的相关信息:
无效的密钥读取;无效的 lba 读取(一个扇区的逻辑字节地址);无效的 SD 或 FSD 名称读取;数据损坏,即使在使用错误的 lba 或密钥时;数据损坏;坏扇区等。
6.2.2 summary.html
#文件系统主要结果参数
interval:打印间隔
ReqstdOps(rate/resp):每秒处理请求的个数(速率/响应时间)
cpu%(total/sys):CPU 使用率(total/sys)
read pct:读百分比,当为0时表示写,当为100时表示读。
read(rate/resp):读(速率/响应时间ms)
write(rate/resp):写(速率/响应时间ms)
mb/sec(read/write):带宽(读/写)
mb/sec total:总的读写带宽
xfersize:平均传输大小,单位为字节B
mkdir(rate/resp):创建文件夹(速率/响应时间ms)
rmdir(rate/resp):移除文件夹(速率/响应时间ms)
create(rate/resp):创建文件(速率/响应时间ms)
open(rate/resp):打开文件(速率/响应时间ms)
close(rate/resp):关闭文件(速率/响应时间ms)
delete(rate/resp):删除文件(速率/响应时间ms)
#块存储主要结果参数
interval:打印间隔
I/O rate:每秒平均 I/O 率,读写IOPS,rd运行定义参数iorate控制。
MB sec:每秒平均带宽
bytes I/O:平均 I/O 大小,单位为字节B,能够经过wd工做负载定义参数xfersize控制
read pct:平均读百分比,当为0时表示写,当为100时表示读。
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.1vdbench相关参数
messagescan= no; yes; nodisplay; 1000(customise);
#该参数默认情况下,在Linux/Solaris上的/var/log/message每五秒钟扫描一次,以查找可能与正在运行的工作负载有关的错误消息。
#no为不扫描;yes为默认扫描;nodisplay为进行扫描,但不显示在stdout上。=1000为1000条消息后停止扫描。(默认)
elapsed= 运行时间,默认单位秒S
interval= 运行过程中测试结果打印的间隔
7.2 文件系统相关参数
对于文件系统的测试主要是配置一下参数信息,参数定义顺序为:HD、FSD、FWD、RD。
HD:主机定义
非必选项,单机运行时不须要配置HD参数,通常只有在多主机联机测试时才须要配置。文章来源:https://www.toymoban.com/news/detail-734236.html
hd = localhost; 指定当前主机:
hd = label; 指定远程主机:标识主机定义的名称,多主机运行时,可使用hd1、hd2、hd3等来区分
vdbench= vdbench执行文件存放路径,当多主机存放路径不一样时,可在hd定义时单独指定
system = IP地址或网络名称
user= slave和master通讯使用用户
clients = 用于模拟服务器的正在运行的客户端数量
shell= 可选值为rsh、ssh或vdbench,默认值为rsh,多主机联机测试时,mater和slave主机间通讯方式。
#注:当参数值为rsh时,须要配置master和slave主机rsh互信,考虑到rsh使用明文传输,安全级别不够,一般状况下不建议使用这种通讯方式
#当参数值为ssh时,须要配置master和slave主机ssh互信,一般Linux主机联机时使用此通讯方式
#当参数值为vdbench,须要在全部slave主机运行vdbench rsh启用vdbench自己的rsh守护进程,一般Window主机联机时使用此通讯方式
FSD:文件系统定义
fsd= 标识文件系统定义的名称,多文件系统时(fsd1、fsd2、fsd3…),可以指定default(将相同的参数作为所有fsd的默认值)
anchor= 将在其中创建目录结构的目录,即输出文件信息的测试目录
width= 要在定位符下创建的目录数
depth= 要在定位符下创建的级别数
files= 要在最低级别创建的文件数
sizes= (size,size,...) 将创建的文件大小
distribution= bottom(仅在最低级别创建文件)和 all(在所有目录中创建文件)
openflags= 用于打开一个文件系统 (Solaris) 的 flag_list
shared= 可选值为yes或no,默认值为no,通常只有在多主机联机测试时指定
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= 读取和写入操作的百分比。可选值为0~100,读操作占比百分比,通常混合读写时须要指定,当值为60时,则混合读写比为6:4
threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件
RD:运行定义
rd= 标识文件系统运行定义的ID。
fwd= 要使用的文件系统工作负载定义的 ID
fwdrate= 每秒执行的文件系统操作数量。可选max,表示不作任何限制,按照最大强度自适应。
format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。
(no是不改变文件目录;yes是改变;restart是接着原来的文件目录再去创建;)
operations= 覆盖 fwd 操作。选项相同
elapsed= 指定每次运行的运行时间(以秒为单位)。默认值为30。
interval= 此参数指定每个报告间隔的持续时间(以秒为单位)。在每个报告间隔结束时,将报告已收集的所有统计数据。注意:例如在周末进行长时间跑步时,报告的详细数据量可能会变得过多。间隔持续时间长一些可能更为合适,例如60秒。但是,如果您的存储设备性能不佳,似乎永远无法达到稳定的工作负载I/O速率,则可能需要选择尽可能低的报告间隔。报告间隔越长,就越能隐藏可能出现的性能问题。如果要限制输出量,请参见report=no_sd_tail参数。
7.3 块设备相关参数
块设备参数文件定义顺序为:HD、SD、WD、RD。
HD:主机定义
非必选项,单机运行时不须要配置HD参数,通常只有在多主机联机测试时才须要配置。
hd = localhost; 指定当前主机:
hd = label; 指定远程主机:标识主机定义的名称,多主机运行时,可使用hd1、hd2、hd3等来区分
vdbench= vdbench执行文件存放路径,当多主机存放路径不一样时,可在hd定义时单独指定
system = IP地址或网络名称
user= slave和master通讯使用用户
shell= 可选值为rsh、ssh或vdbench,默认值为rsh,多主机联机测试时,mater和slave主机间通讯方式。
SD:存储定义
sd= 标识存储定义的名称
hd= 标识主机定义的名称
lun= 写入块设备,如:/dev/sdb1
openflags= 经过设置为o_direct,以无缓冲缓存的方式进行读写操做
threads= 对SD的最大并发I/O请求数量
WD:工作负载定义
wd= 标识工做负载定义的名称
sd= 标识存储定义的名称
seekpct= 可选值为0或100(也可以使用sequential或random表示),默认值为100,随机寻道的百分比,设置为0时表示顺序,设置为100时表示随机。
rdpct= 读取请求占请求总数的百分比,设置为0时表示写,设置为100时表示读
xfersize= 要传输的数据大小。默认设置为4k
skew= 非必选项,通常在多个工做负载时须要指定,表示该工做负载占总工做量百分比(skew总和为100)
RD:运行定义
rd= 标识运行定义的名称
wd= 标识工做负载定义的名称
iorate= 工作负载的固定I/O速率。经常使用可选值为100、max;
warmup= 预热时间(单位为秒),默认状况下vdbench会将第一个时间间隔输出数据排除在外,程序在预热时间内的测试不归入最终测试结果中(即预热结束后,才开始正式测试)
maxdata= 读写数据大小,一般状况下,当运行elapsed时间后测试结束;当同时指定elapsed和maxdata参数值时,以最快运行完的参数为准(即maxdata测试时间小于elapsed时,程序写完elapsed数据量后结束)
#当参数值为100如下时,表示读写数据量为总存储定义大小的倍数(如maxdata=2,2个存储定义(每一个存储定义数据量为100G),则实际读写数据大小为400G)
#当参数值为100以上时,表示数据量为实际读写数据量(可使用单位M、G、T等)
format= 预先格式化目录和文件结构;默认值:no;
选项:no;yes;restart;only;dir;clean;once;limited;complete;
elapsed= 指定每次运行的运行时间(以秒为单位)。默认值为30。
interval= 此参数指定每个报告间隔的持续时间(以秒为单位)。
注:更加详细的参数信息请参考vdbench目录下的vdbench.pdf文件。
文章来源地址https://www.toymoban.com/news/detail-734236.html
到了这里,关于vdbench存储测试工具的安装部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!