本文介绍vdbench的安装与使用,本文使用的系统为debian。
vdbench简介
vdbench是一个 I/O 工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。
可以使用vdbench测试磁盘和文件系统的读写性能。
vdbench中常用的一些名词解释:
hd:
vdbench的安装
1.下载Vdbench压缩包到所有client的“/home”目录下。
下载链接:
https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/utilities_drivers/vdbench/vdbench50406.zip
注意:可能需要登录Oracle账号之类,没有的话就注册一个
2.进入所有客户端“/home”目录下解压Vdbench压缩包。
1 | cd /home && unzip vdbench50406.zip |
3.安装Java
1 | apt install default-jre -q -y |
说明:vdbench的使用依赖java,若已安装,则可跳过本步骤。
4.测试Vdbench是否工作正常。
1 | cd vdbench50406 |
若出现“Vdbench execution completed successfully”字段则说明Vdbench工作正常。
Vdbench测试模型
Vdbench通过执行工作负载配置文件运行,选取其中一台客户端执行即可,该客户端会通过负载配置文件中的其他客户端IP地址等信息自动登录到其他客户端执行测试。
创建Vdbench工作负载
本文以1个Ceph客户端为例,在任意一个客户端上(本文使用client1)创建vdbench 4KB随机读工作负载:
1 | vi /home/4k_randread.txt |
添加以下内容:
1.为所有测试机设置统一的默认参数,请根据实际情况修改Vdbench路径,此处为“/home”目录。
1 | hd=default,vdbench=/home/vdbench50406,user=root,shell=ssh |
2.定义测试机。
1 | hd=hd1,system=client1 |
相关参数说明
参数 | 说明 |
---|---|
hd | 测试机的名称 |
system | 主机IP地址或主机名 |
3.文件系统定义。
1 | fsd=fsd1,anchor=/mnt/cephfs,depth=1,width=10,files=200,size=20m,shared=yes |
参数说明
参数 | 说明 |
---|---|
fsd | 标识文件系统的名称 |
anchor | 将在其中创建目录结构的父目录,此处为CephFS挂载点 |
depth | 要在定位符下创建的级别数 |
width | 要在定位符下创建的目录数 |
files | 要在最低级别创建的文件数 |
size | 创建的文件大小 |
shared | 所有主机共享fsd参数 |
4.文件系统工作负载定义。
1 | fwd=default,xfersize=4k,fileio=random,fileselect=random,rdpct=100,threads=128 |
参数说明
参数 | 说明 |
---|---|
fwd | default表示为所有工作负载设置统一的默认参数 |
xfersize | 数据块大小 |
fileio | 取值为random或sequential,表示文件IO将执行的方式 |
fileselect | 取值为random或sequential,标识选择文件或目录的方式 |
rdpct | 读写百分比 rdpct=100表示只有读请求 rdpct=0表示只有写请求 |
operation | 取值为read或write,确定文件系统的操作 |
threads | 此工作负载的并发线程数量 |
fsd | 要使用的文件系统ID |
host | 要用于此工作负载的主机ID |
5.运行定义。
1 | rd=rd1,fwd=fwd*,fwdrate=max,elapsed=600,interval=5 |
参数说明
参数 | 说明 |
---|---|
rd | 表示运行的名称 |
fwd | 要使用的文件系统工作负载ID |
fwdrate | 每秒执行的文件系统操作数量 |
elapsed | 以秒为单位的运行持续时间 |
interval | 终端报告间隔 |
执行vdbench测试
说明:
本文默认每台客户端的“/mnt/cephfs”目录已挂载Ceph文件系统,创建100个子目录,每个子目录下包含200个文件,每个文件20MB(可用dd写满20MB)。若实际测试时,客户端内无测试文件,可参考以下步骤创建文件以供测试。
1.创建文件生成脚本。
1 | vim create_file.sh |
1 | #!/bin/bash |
2.执行脚本。
1 | sh create_file.sh |
以创建Vdbench工作负载创建好的4k_randread.txt负载为例进行说明:
1 | cd /home |
说明:
-f 指定待测试的工作负载配置文件;-o表示测试结果存放的目录。
收集测试结果
测试完成后默认会在当前目录下创建一个名为“output”的目录存放测试结果,若测试命令中添加-o参数指定结果输出路径,则测试结果存放到该路径下。
以执行Vdbench测试的测试命令为例,会在“/home/4k_randread_output”目录下存放测试结果。
查看测试结果。
1 | cd /home/4k_randread_output |
totals.html内容如下,其中i/o rate表示IOPS,MB/sec表示带宽,resp time表示时延: