vdbench的使⽤教程——裸盘测试和⽂件系统测试
⼀、vdbench简介
vdbench是⼀个 I/O ⼯作负载⽣成器,⽤于验证数据完整性和度量直接附加和⽹络连接的存储的性能。它是⼀个免费的⼯具,容易使⽤,⽽且常常⽤于测试和基准测试。
可以使⽤vdbench测试磁盘和⽂件系统的读写性能。
vdbench中常⽤的⼀些名词解释:
HD    主机定义
SD    存储定义
WD  ⼯作负载定义
RD    运⾏定义
FSD  ⽂件系统存储定义
FWD  ⽂件⼯作负载定义
⼆、vdbench的安装和配置
1、linux下配置vdbench
(1)下载Vdbench
(2)然后安装java(vdbench的运⾏依赖于java)
apt-get update
思念成殇apt-get install 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 ⽂件中执⾏命令。
安装:apt-get install csh
查看:ls /bin/ |grep csh
(4)进⼊vdbench相应⽬录下./vdbench -t 来测试⼀下vdbench的可⽤性,如果正常,会在⽬录下⾃动⽣成⼀个output⽬录。
root@node1:/home/vdbench/vdbench50406# ./vdbench -t
显⽰如下信息:
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Vdbench distribution: vdbench50406 Wed July 20 15:49:52 MDT 2016
For documentation, see 'vdbench.pdf'.
00:06:57.521 input argument scanned: '-f/tmp/parmfile'
00:06:57.572 Starting slave: /home/vdbench/vdbench50406/vdbench SlaveJvm -m localhost -n localhost-10-180813-00.06.57.396 -l localhost-0 -p 5570  00:06:58.012 All slaves are now connected
00:06:59.001 Starting RD=rd1; I/O rate: 100; elapsed=5; For loops: None
Aug 13, 2018  interval        i/o  MB/sec  bytes  read    resp    read    write    resp    resp queue  cpu%  cpu%
rate  1024**2    i/o    pct    time    resp    resp      max  stddev depth sys+u  sys
00:07:00.046        1      49.00    0.05    1024  46.94    2.487    1.616    3.257  45.206    9.831  0.5  15.4  4.4
00:07:01.043        2    112.00    0.11    1024  52.68    3.808    2.381    5.397  103.290  17.076  0.1  4.6  0.5
00:07:02.044        3      92.00    0.09    1024  51.09  11.979    3.486  20.849  172.867  40.460  1.1  1.0  0.5
00:07:03.043        4      98.00    0.10    1024  53.06    1.574    1.413    1.757  43.221    7.044  0.2  3.0  0.0
00:07:04.053        5    106.00    0.10    1024  55.66    1.795    1.340    2.367  51.104    8.163  0.2  2.5  0.0
00:07:04.077  avg_2-5      91.40    0.09    1024  52.52    4.366    2.059    6.917  172.867  21.192  0.4  6.9  1.6
00:07:05.275 Vdbench execution completed successfully. Output directory: /home/vdbench/vdbench50406/output
如果报错,则需修改vdbench的权限:
root@node03:/home/vdbench/vdbench50406# chmod 777 vdbench
2、Windows下配置vdbench;
(1)解压vdbench包(vdbench的linux版本的包和windows是同⼀个),解压之后,下载32位的java,安装java,配置windows上java 的环境变量;(注意:⽬前vdbench在windows⽀持32位的java)
(2)打开dos窗⼝,切换到vdbench⽬录,执⾏命令 vdbench -t来测试vdbench的可⽤性
三、vdbench的使⽤
vdbench的使⽤按照我的理解,就是先编写⼀个脚本,然后在vdbench的安装⽬录下直接运⾏就好了。
1、脚本的编写
这部分可以参考解压后的examples⽂件夹下的脚本,⽐如create_files;也可以参考output⽬录下的parmfile.html
root@node1:/home/vdbench/vdbench50406/examples/filesys# cat create_files
*
略过
*
fsd=fsd1,anchor=/dir,depth=1,width=1,files=10000,size=8k
fwd=fwd1,fsd=fsd1,operation=read,threads=16
rd=rd1,fwd=fwd*,fwdrate=100,format=yes,elapsed=5,interval=1
注:(1)anchor=/dir 这个需要把路径换成你ceph挂载的路径,我的是anchor=/home/baymax/cephfs
2、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 操作。选项相同。
vdbench⽂件系统测试Example:
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
3、运⾏脚本
李孝利 只要爱上你
root@node1:/home/vdbench/vdbench50406# ./vdbench -f examples/filesys/create_files -jn
其中-jn是为了做数据校验,⽬前还不太懂。
4、输出结果
会回写输出⼀⼤堆东西,如果没有出现错误,最后会出现:
Vdbench execution completed successfully. Output directory: /home/vdbench/vdbench50406/output
每次运⾏后,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_
vdbench 与 Sun StorageTekTM Workload Analysis Tool (Swat) Trace Facility (STF) 相结合,⽀持重放使⽤ Swat 创建的⼀个轨迹的 I/O ⼯作负载。
Swat 使⽤ Create Replay File 选项创建和处理的轨迹⽂件会创建⽂件 flatfile.bin( ⽤于 vdbench403 和更⾼版本),其中包含 Swat 所识别的每个 I/O 操作的⼀条记录。
这些⽂件包含⼀个格式化的报告,可将该报告导⼊ Swat Performance Monitor (SPM) 中来创建性能图表。
四、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的通⽤配置;