vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能
可以使用vdbench测试磁盘和文件系统的读写性能
vdbench的安装
1.先安装java环境
2.更改windows环境变量path,
将C:\Program Files\Java\jre7\bin添加到windows环境变量path中,一个路径和另一个路径之间要记得用分号隔开
3.安装完成后,进入vdbench安装目录,执行vdbench.bat -t,测试安装是否正确
vdbench的安装目录,就是对应bat文件所在的目录
vdbench的使用
A.编写脚本文件,保存在vdbench的安装目录下,利用type命令查看脚本
如 type example1
B.执行脚本文件,利用vdbench -f 命令
如 vdbench -f example7
C.打开vdbench校验数据的参数为-v 或 -j 或 -jn
这个过程会为每一次写操作记录日志用于后续校验
-v记录于内存中,易丢失 ;-j写到磁盘上,但是速度慢;-jn异步写到磁盘上,速度和安全都有一定的保证
对于一个文件系统,配置以下参数:
(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 操作。选项相同
数据校验原理
vdbench创建的数据每512 byte为一个sector,这个sector会有一个逻辑字节地址标识符(LBA:Logical Byte Adress)
数据校验的工作流程如下:每一个在存储系统中的第一次写操作记录在一个表中,假定写操作的块大小是1m,
那么这个块大小中的每512字节中包含的两项,8字节的逻辑字节地址(LBA)和一个字节的数据校验key值
(标记是第几次写,范围为0-125,00代表创建写,01代表第一次覆盖写,以此类推,当到达126后折返00,重新来一轮)会被记录,
这个过程为生成校验日志;第二次重新运行脚本(使用参数-jr或者-vr)则根据第一次记录的日志进行数据校验