vdbench使用

article/2025/11/9 7:49:37

简介


vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。

可以使用vdbench测试磁盘和文件系统的读写性能。

名词解释

vdbench中常用的一些名词解释:

HD    主机定义
SD    存储定义 
WD   工作负载定义
RD    运行定义
FSD   文件系统存储定义
FWD  文件工作负载定义


安装和配置


linux下配置vdbench


(1)下载Vdbench

下载地址:

http://www.oracle.com/technetwork/cn/server-storage/vdbench-downloads-1901681-zhs.html

下载之后解压;

(2)然后安装java(vdbench的运行依赖于java)
yum install -y java
java -version
(3)安装csh或者将csh从别的安装好了的系统拷贝到/bin目录下,vdbench在linux上的运行需要csh来支撑。

         CSH,是一种计算机中的linux、unix命令,用来调用 C shell。

         C shell 是一个交互式命令解释器和一种命令编程语言,采用的语法类似于 C 编程语言。shell 是交互式地从终端键盘或者是从一个文件来执行命令的。这个 csh 命令调用了 C shell。当调用 csh 命令时就会执行,这是通过查找根目录和执行命令从 .cshrc 文件(用来存储用户化的用户信息)中,执行的条件是命令存在。如果 csh 命令作为一个登录 shell 运行,就会从 .cshrc 和 .login 文件中执行命令。

安装:yum install -y csh
查看:ls /bin/ |grep csh
(4)进入vdbench相应目录下./vdbench -t 来测试一下vdbench的可用性,如果正常,会在目录下自动生成一个output目录。


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

root@node03:/home/vdbench/vdbench50406# chmod 777 vdbench


Windows下配置vdbench


(1)解压vdbench包(vdbench的linux版本的包和windows是同一个),解压之后,下载32位的java,安装java,配置windows上java的环境变量;(注意:目前vdbench在windows支持32位的java)
(2)打开dos窗口,切换到vdbench目录,执行命令 vdbench -t来测试vdbench的可用性

使用

vdbench文件系统测试

对于一个文件系统,需要配置以下参数:

(1)HD:主机定义。与虚拟块设备相同。

(2)FSD:文件系统定义

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

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

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

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

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

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

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

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

(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。选择要执行的单个文件操作。

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

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

(4)RD:运行定义

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

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

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

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

配置文件例子:
fsd=fsd1,anchor=/mnt/cephfs02,depth=3,width=10,files=20,size(512,50,4k,50),openflags=o-direct
fwd=fwd1,fsd=fsd1,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

vdbench裸盘测试


1、对于一个块设备,配置以下参数:

(1)HD:主机定义
•    如果您希望展示当前主机,则设置 hd= localhost。如果希望指定一个远程主机,hd= label。
•    system= IP 地址或网络名称。

Example:
     hd=localhost,shell=ssh,vdbench=/home/vdbench/vdbench50406,user=root
     hd=hd1,system=10.147.0.15
     hd=hd2,system=10.147.37.173
注意:vdbench=dir ,这里的目录是指所有主机上的目录,这就表示,所有主机上的vdbench目录都要一样,且对应的配置要放在vdbench下面;

(2)SD:存储定义
•    sd= 标识存储的名称。
•    host= 存储所在的主机的 ID。
•    lun= 原始磁盘、磁带或文件系统的名称。vdbench 也可为您创建一个磁盘。
•    threads= 对 SD 的最大并发 I/O 请求数量。默认为 8。
•    hitarea= 调整读取命中百分比的大小。默认为 1m。
•    openflags= 用于打开一个 lun 或一个文件的 flag_list,为了贴近真实场景,一般在这里选择o_direct,绕过缓存机制,直接写盘。

Example:
      sd=default,threads=32,openflags=o_direct,size=340G
      sd=sd1,hd=hd1,lun=/dev/sdb
      sd=sd2,hd=hd1,lun=/dev/sdc
      sd=sd3,hd=hd1,lun=/dev/sdd
      sd=sd4,hd=hd1,lun=/dev/sde
      sd=sd5,hd=hd1,lun=/dev/sdf
      sd=sd6,hd=hd1,lun=/dev/sdg
      sd=sd7,hd=hd1,lun=/dev/sdh
      sd=sd8,hd=hd1,lun=/dev/sdi
      sd=sd1,hd=hd2,lun=/dev/sdb
      sd=sd2,hd=hd2,lun=/dev/sdc
      sd=sd3,hd=hd2,lun=/dev/sdd
      sd=sd4,hd=hd2,lun=/dev/sde
      sd=sd5,hd=hd2,lun=/dev/sdf
      sd=sd6,hd=hd2,lun=/dev/sdg
      sd=sd7,hd=hd2,lun=/dev/sdh
      sd=sd8,hd=hd2,lun=/dev/sdi
      此配置区分了主机1和主机2,第一行是针对以下所有sd的通用配置;
(3)WD:工作负载定义
•    wd= 标识工作负载的名称。
•    sd= 要使用的存储定义的 ID。
•    host= 要运行此工作负载的主机的 ID。默认设置为 localhost。
•    rdpct= 读取请求占请求总数的百分比。
•    rhpct= 读取命中百分比。默认设置为 0。
•    whpct= 写入命中百分比。默认设置为 0。
•    xfersize= 要传输的数据大小。默认设置为 4k。
•    seekpct= 随机寻道的百分比。可为随机值。
•    openflags= 用于打开一个 lun 或一个文件的 flag_list。
•    iorate= 此工作负载的固定 I/O 速率。

Example:
wd=wd1,sd=sd*,xfersize=4k,rdpct=0,seekpct=100
此配置,配置了块的大小,读的比例和随机比例;
(4)RD:运行定义
•    rd= 标识运行的名称。
•    wd= 用于此运行的工作负载的 ID。
•    iorate= (#,#,...) 一个或多个 I/O 速率。(这里可以控制运行的iops,如果不控制就设置成max)
•    elapsed= time:以秒为单位的运行持续时间。默认设置为30。(设置长时间的运行,可能会使得数据更加稳定)
•    warmup= time:加热期,最终会被忽略。
•    distribution= I/O 请求的分布:指数、统一或确定性。
•    pause= 在下一次运行之前休眠的时间,以秒为单位。
•    openflags= 用于打开一个 lun 或一个文件的 flag_list。

配置文件例子:
hd=localhost,shell=ssh,vdbench=/home/vdbench/vdbench50406,user=root
hd=hd1,system=200.200.213.30
sd=default,threads=16,openflags=o_direct,size=30G
sd=sd1,hd=hd1,lun=/dev/sdb
sd=sd2,hd=hd1,lun=/dev/sdc
sd=sd3,hd=hd1,lun=/dev/sdb
sd=sd4,hd=hd1,lun=/dev/sdc
sd=sd5,hd=hd1,lun=/dev/sdb
sd=sd6,hd=hd1,lun=/dev/sdc
sd=sd7,hd=hd1,lun=/dev/sdb
sd=sd8,hd=hd1,lun=/dev/sdc
wd=wd1,sd=sd*,xfersize=4k,rdpct=0,seekpct=100
rd=run1,wd=wd1,iorate=max,el=100000,in=1,warmup=600
 

结果分析


每次运行后,vdbench 会创建一个包含以下文件的output文件夹:

(1)errorlog.html——当为测试启用了数据验证(-jn)时,它可包含一些数据块中的错误的相关信息:

        无效的密钥读取

        无效的 lba 读取(一个扇区的逻辑字节地址)

        无效的 SD 或 FSD 名称读取

        数据损坏,即使在使用错误的 lba 或密钥时

        数据损坏

        坏扇区

(2)flatfile.html——包含 vdbench 生成的一种逐列的 ASCII 格式的信息。

(3)histogram.html——一种包含报告柱状图的响应时间、文本格式的文件。

(4)logfile.html——包含 Java 代码写入控制台窗口的每行信息的副本。logfile.html 主要用于调试用途

(5)parmfile.html——显示已包含用于测试的每项内容的最终结果

(6)resourceN-M.html、resourceN.html、resourceN.var_adm_msgs.html

         摘要报告、stdout/stderr 报告、主机 N 的摘要报告

        最后 “nn” 行文件 /var/adm/messages 和 /var/adm/messages。每个 M 个 JVM/Slave 的目标主机 N 和主机 N 上为 0。

(7)sdN.histogram.html、sdN.html——每个 N 存储定义的柱状图和存储定义 “N” 报告。

(8)summary.html——主要报告文件,显示为在每个报告间隔的每次运行生成的总工作负载,以及除第一个间隔外的所有间隔的加权平均值。

        interval:报告间隔序号

        I/O rate:每秒观察到的平均 I/O 速率

        MB sec:传输的数据的平均 MB 数

        bytes I/O:平均数据传输大小

        read pct:平均读取百分比

        resp time:以读/写请求持续时间度量的平均响应时间。所有 vdbench 时间都以毫秒为单位。

        resp max:在此间隔中观察到的最大响应时间。最后一行包含最大值总数。

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

        cpu% sys+usr:处理器繁忙 = 100(系统 + 用户时间)(Solaris、Windows、Linux)

        cpu% sys:处理器利用率:系统时间

(9)swat_mon.txt,swat_mon_total.txt

        vdbench 与 Sun StorageTekTM Workload Analysis Tool (Swat) Trace Facility (STF) 相结合,支持重放使用 Swat 创建的一个轨迹的 I/O 工作负载。
        Swat 使用 Create Replay File 选项创建和处理的轨迹文件会创建文件 flatfile.bin(flatfile.bin.gz 用于 vdbench403 和更高版本),其中包含 Swat 所识别的每个 I/O 操作的一条记录。

这些文件包含一个格式化的报告,可将该报告导入 Swat Performance Monitor (SPM) 中来创建性能图表。 

数据一致性校验

vdbench另一个重要功能就是做数据校验,可以通过执行时增加以下命令参数来打开数据校验功能:

-v Activate data validation.
-vr Activate data validation, immediately re-read after each write. (写完马上重读校验)

选项'-vr'可用于在每次写后立即进行读取和验证,而通常只在数据块计划下一次读或下一次写时进行验证。当对一个大LUN进行I/O操作时,块再次被引用通常需要一段时间。因此,有时这可能有助于快速确认数据是否正确。但是,请注意,在写之后立即读取块很可能只会显示数据已经到达控制器缓存,而没有证据表明数据曾经到达物理磁盘驱动器。

-vw Activate data validation, but don’t read before write. (保证读在写之后)
-vt Activate data validation, keep track of each write timestamp (memory intensive)  (跟踪每个写时间戳(内存密集型))

选项'-vt'将在内存中保存最近一次成功读或写的时间戳(没有日志可用)。当数据块失败时,将报告此时间戳。知道块在一天中的什么时候是好的,可以帮助您识别可能导致问题的错误注入。注意:这需要每个数据块多8个字节的内存(因此512字节块的内存需求可能令人望而却步)。


-j Activate data validation

-jn

-vr

-vt

配置文件方式如下:

vdbench配置中,校验方式:

create_anchors=yes

validate=yes

validate=read

validate=read_after_write

validate=no_preread

validate=time

journal=yes

journal=noflush

参考文章:
原文链接:https://blog.csdn.net/u012114090/article/details/81626430


http://chatgpt.dhexx.cn/article/Sd25lM05.shtml

相关文章

vdbench测试SSD快速入门

介绍 vdbench是一个I/O工作负载生成器,通常用于验证数据完整性和度量直接附加(或网络连接)存储性能。它可以运行在windows、linux环境,可用于测试文件系统或块设备基准性能。我们下面主要以块设备为介绍对象。 下载及安装 下载…

vdbench多主机运行指导

测试工具之vdbench多主机运行 本文介绍vdbench在多机环境下的操作和配置,以及本人在配置过程中遇到的问题和解决方法。 文章目录 测试工具之vdbench多主机运行前言一、vdbench在linux环境下多机运行1.环境参数2.配置说明二、vdbench在windows环境下多机运行1.环境参数2.配置…

Vdbench工具安装使用

一、 概述 1.1 内容简介 Vdbench 是一个命令行使用程序,旨在帮助工程师和客户生成用于验证存储性能和存储数据完 整性的磁盘 I/O 负载。还可通过输入文本文件指定 Vdbench 执行参数。它是一个免费的工具,容 易使用,而且常常用于测试和基准测试…

Vdbench工具的安装及使用

Vdbench工具的安装 Vdbench的运行依赖java环境,请务必先安装java运行环境安装java,Ubuntu OS环境安装java: apt-get install openjdk-8-jdkCentos OS环境安装: yum install openjdk-8-jdk检查是否安装成功 安装vdbench,下载vdbench50407.zip包&#…

Java jre的安装与卸载

文章目录 1. jre安装2. 卸载 Java JDK安装教程 Idea Java开发环境配置教程: https://tangxing.blog.csdn.net/article/details/112392218 1. jre安装 java下载网址: https://www.java.com/zh-CN/download/manual.jsp 这里有联机版和脱机版,…

彻底卸载jdk,jdk安装 ,javaa安装,jdk删除干净

标签: 一.备份安装好的绿色版JDK a.重新安装JDK到任意目录,假设这个目录是C:\java。 b.将装好的JDK,JRE拷贝到任意一个其他目录,如D:\bak,这样做的目的主要是为了备份JDK。(建议打成zip压缩包奔备用)二.彻底卸载JDK1.第一步,首先卸载或删除J…

Java如何卸载?怎么删掉Windows计算机上的Java?Java卸载流程详解!

大家都知道Java版本不是一成不变的,Java会朝着功能增加、漏洞修复和性能优化的方向一直进步。而公布新版Java之后,我们需要使用它,那么卸载掉旧版的Java很有必要,为什么呢? 这是Java官方给出的回复: 我们强烈建议您…

JAVA安装、配置及卸载

基本上从入门到实用非常全面了。 安装 安装Eclipse先配置jdk jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html (此处以jdk8为示例) 一、安装jdk 此处默认路径即可,单击下一步 安装完成后会…

Java类的卸载机制

类的生命周期 当Sample类被加载、连接和初始化后,它的生命周期就开始了。 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命…

JAVA的安装与卸载

1.java的卸载 1.删除java的安装目录 2.删除系统环境变量里的JAVA_HOME和Path里面的bin目录和jre/bin目录 3.cmd输入java -version 查看是否删除取消 2.java的安装 1.百度搜索jdk1.8找到下载地址 2.双击安装文件安装 3.配置系统环境变量 1.配置环境变量JAVA_HOME&#xff…

教你如何完全卸载Java

有时候卸载Java时真的让人很烦,明明卸载了但重新安装Java时还报错,今天我就把我卸载Java的过程给大家分享一下。 1. 在控制面板中删除。(但我这么卸载之后java没有完全卸载)。 2.找到java的安装目录,直接将Java文件夹删…

【java基础】Java如何卸载

Java如何卸载 首先右键我的电脑,属性选择高级系统设置,找到环境变量,打开之后在系统变量里找到JAVA_HOME,点击JAVA_HOME复制变量值中的路径 在资源管理器中找到这个目录,将目录删除。 再次打开环境变量&#xff…

Java的安装与卸载方法

Java的安装与卸载方法(附图) JDK的卸载步骤 我的电脑–>属性–>高级系统设置–>环境变量 删除Java的安装目录–>删除JAVA_HOME 双击path,然后删除path下JAVA_HOME相关的 打开DOS输入java -version检查 JDK的安装步骤 百…

如何卸载干净JAVA

有很多小伙伴下载了JAVA的JDK(java开发工具包)并安装成功运行后,发现自己下错了版本。凉了,半天白搞了。卸载之后又发现在再安装出现安装不了的问题。这往往是因为JAVA并没有卸载完全。今天我们就看看如何完全卸载JAVA。 JAVA卸载有两种方式。手动和用J…

JAVA的卸载与重新安装

1.JAVA的卸载,在系统的添加与删除中删去Java。 2.清理Java有关的缓存文件 到Java安装途径下把Java文件夹删除干净,然后删除Java的缓存文件 一般在C盘Users文件夹下的APPData\LocalLow\Sun下去看看有没有 3.清除注册表 使用电脑管家把无用的注册表清除…

Java卸载删除(2023最强版)

Java卸载删除(2023最强版) 卸载程序删除相关环境变量删除编辑注册表相关检查C盘相关文件是否删除收尾 看了网上很多教程,结果还是提示没卸载干净,做了以下整理,希望对大家有所帮助。 卸载程序 在应用和功能中&#xf…

如何卸载干净JAVA?

有很多小伙伴下载了JAVA的JDK(java开发工具包)并安装成功运行后,发现自己下错了版本。凉了,半天白搞了。卸载之后又发现在再安装出现安装不了的问题。这往往是因为JAVA并没有卸载完全。今天我们就看看如何完全卸载JAVA。 JAVA卸载有两种方式。手动和用J…

如何将Java完全卸载

之前安装的Java没有卸载干净,造成重新安装JDK能正常安装,接着安装JRE的时候总是报1603错误。虽然说JRE安装报错了没安装上,但是eclipse、IntelliJ IDEA和AndroidStudio都能正常打开和使用,然而在命令行里却无法使用。虽然工具能正…

【异常解决】vim编辑文件时提示 Found a swap file by the name “.start.sh.swp“的解决方案

vim编辑文件时提示 Found a swap file by the name ".start.sh.swp"的解决方案 一、问题描述二、原因说明三、解决方案3.1 方案1 删除即可3.2 方案2 禁止生成swp文件 一、问题描述 vim编辑文件时提示 Found a swap file by the name “.start.sh.swp”,如…

linux swap file already exists,vim编辑文件警告Swap file already exists ,如何删除vim编辑产生的.swp文件?查看隐藏文件命令...

Linux(centos7)下多个用户同时编辑一个文件,或编辑时非正常关闭,再下次编辑打开文件时均为显示如下警告信息: E325: ATTENTION Found a swap file by the name ".other.conf.swp" owned by: root dated: Wed Nov 29 02:23:20 2017 …