searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

对象存储COSBench工具介绍及安装配置使用说明

2022-12-29 07:28:32
591
0

1、简介

COSBench是Intel团队基于java开发,用于对象存储的测试工具,全称是Cloud object Storage Bench,可以支持swift、s3、Openstack等接口。

COSBench分控制台和发起请求的driver,其模式是一个控制台控制几个driver向后端对象存储网关节点发起请求。driver可以分布式部署。

2、组成

Cosbench包含Controller和Driver两个关键组件:

Controller(也称为Cosbench控制器):

负责协调drivers集体执行工作负载,收集和汇总来自driver实例的运行时状态和基准测试结果,并接受工作负载提交。

Driver(也称为Cosbench驱动或负载生成器):

负责工作负载生成,向目标云对象存储下发操作,收集性能统计数据。

Controller和Driver可以部署在相同的节点上,也可以部署在不同的节点上,节点可以是物理机或者虚拟机(VM)实例。

3、安装

这里我们以CentOS7为系统环境介绍COSBench的安装和使用。

安装步骤:

1)COSBench依赖java和nc,所以在安装COSBench前要先安装java和nc

yum install java nmap-ncat

2)下载COSBench工具并解压

wget https://github.com/intelcloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip

unzip 0.4.2.c2.zip

3)进入解压路径,赋予shell脚本可执行权限,并取消代理防止冲突

chmod +x *.sh

unset http_proxy

4)执行./start-driver.sh,启动Driver,出现如下画面则启动成功

5)执行./start-controller.sh,启动Controller,出现如下画面则表示启动Controller成功

备注:

  • 本机同时启动了Controller和Driver,Controller的默认端口为19088,Driver的默认端口为18088,所以要确保这两个端口可以被访问。
  • 如果Controller和Driver同时部署在一台机器上,可以用start-all.sh脚本同时启动Controller和Driver。
  • 一台Controller同时控制几台Driver发起请求,Driver节点只需要执行start-driver.sh启动Driver即可。

6)在浏览器中访问:http://192.168.188.129:19088/controller/,这里192.168.188.129为部署Controller的主机地址,出现如下画面则表示部署成功

4、配置

1)Driver配置

编辑conf目录下的driver.conf文件(新部署的COSBench要编辑driver_template.conf文件),修改driver name和ip地址,如下图所示:

2)Controller配置

编辑conf目录下的controller.conf文件,修改driver数量,日志级别,driver name和driver ip等信息,如下图所示:

3)COSBench测试文件示例

以conf/s3-config-sample.xml说明,代码如下图所示

下面对配置文件的参数进行说明:

  • workload name : 测试时显示的任务名称,这里可以自行定义
  • description : 描述信息,这里可以自己定义
  • storage type: 存储类型,这里配置为s3即可
  • config : 对该类型的配置,
  • workstage name : cosbench是分阶段按顺序执行,此处为init初始化阶段,主要是进行bucket的创建,workers表示执行该阶段的时候开启多少个工作线程,创建bucket不会计算为性能,所以单线程也可以;config处配置的是存储桶bucket的名称前缀;containers表示桶的轮询数,上例中将会创建以s3testqwer为前缀,后缀分别为1和2的bucket
  • prepare阶段 : 配置为bucket写入的数据,workers和config以及containers与init阶段相同,除此之外还需要配置objects,表示一轮写入多少个对象,以及object的大小。
  • main阶段 : 这里是进行测试的阶段,runtime表示运行的时间,时间默认为秒
  • operation type : 操作类型,可以是read、write、delete等。ratio表示该操作所占有操作的比例,例如上面的例子中测试读写,read的比例为80%,write的比例为20%; config中配置bucket的前缀后缀信息。注意write的sizes可以根据实际测试进行修改
  • cleanup阶段 : 这个阶段是进行环境的清理,主要是删除bucket中的数据,保证测试后的数据不会保留在集群中
  • dispose阶段 : 这个阶段是删除bucket

5、测试

配置完成后,就可以启动测试,这里提供两种启动测试的方法:

1)通过脚本启动

执行./cli.sh submit fc/gen-data.xml提交测试,其中(fc/gen-data.xml)为修改后的测试文件名,系统返回当前任务的任务号,如下图所示

2)通过页面提交任务

点击页面上的submit new workloads按钮,如下图1所示,选择要提交的任务文件,点击submit提交任务,如下图2所示

图1

图2

6、测试结果分析

测试结果存放在COSBench目录下的archive子目录下,以具体的任务号区分,每个任务一个目录,如下图所示:

以任务w8为例,该目录下有以下文件:

其中w8-s3-sample.csv为任务的概要运行数据,如IOPS、时延、带宽等总体数据都在此文件中,s3-main.csv为主要运行阶段的详细分时数据。

下载w8-s3-sample.cvs,打开该文件,会显示如下信息:

表中各列含义如下:

  • Op-Type : 操作类型
  • Op-Count : 操作总数
  • Byte-Count : 操作产生的Byte
  • Avg-ResTime : 操作产生的平均时间
  • Avg-ProcTime : 操作的平均时间,这个是主要的延时参考,它反映了平均每次请求的时延
  • Throughput : 吞吐量,主要反映了操作的并发程度,也是重要的参考
  • Bandwidth : 带宽,反映了操作过程中的平均带宽情况
  • Succ-Ratio : 操作的成功率

也可以在控制页面上看到这些数据,如下图所示:

7、使用中的问题

1)COSBench校验数据完整性失败导致测试终止

查看COSBench log发现以下错误信息(log路径为/path/to/cosbench/archive/workload/workload.log):

解决办法:

停止COSBench 进程(Controller和Driver都要停);

编辑cosbench-start.sh文件,找到java启动命令行参数, 增加”-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true”,关闭S3的MD5校验功能;

启动COSBench进程。

2)COSBench测试128M大对象的读取时,读取对象失败

查看COSBench log发现以下错误信息(log路径为/path/to/cosbench/archive/workload/workload.log):

Uploading large file fails with ResetException: Failed to reset the request input stream

 

解决办法:

根本原因是COSBench默认读文件的大小是128k,调整读取文件大小参数,在cosbench-start.sh脚本中的Java命令行加入以下参数:

-Dcom.amazonaws.sdk.s3.defaultStreamBufferSize=<YOUR_MAX_PUT_SIZE>

 

0条评论
0 / 1000
l****n
3文章数
0粉丝数
l****n
3 文章 | 0 粉丝
l****n
3文章数
0粉丝数
l****n
3 文章 | 0 粉丝
原创

对象存储COSBench工具介绍及安装配置使用说明

2022-12-29 07:28:32
591
0

1、简介

COSBench是Intel团队基于java开发,用于对象存储的测试工具,全称是Cloud object Storage Bench,可以支持swift、s3、Openstack等接口。

COSBench分控制台和发起请求的driver,其模式是一个控制台控制几个driver向后端对象存储网关节点发起请求。driver可以分布式部署。

2、组成

Cosbench包含Controller和Driver两个关键组件:

Controller(也称为Cosbench控制器):

负责协调drivers集体执行工作负载,收集和汇总来自driver实例的运行时状态和基准测试结果,并接受工作负载提交。

Driver(也称为Cosbench驱动或负载生成器):

负责工作负载生成,向目标云对象存储下发操作,收集性能统计数据。

Controller和Driver可以部署在相同的节点上,也可以部署在不同的节点上,节点可以是物理机或者虚拟机(VM)实例。

3、安装

这里我们以CentOS7为系统环境介绍COSBench的安装和使用。

安装步骤:

1)COSBench依赖java和nc,所以在安装COSBench前要先安装java和nc

yum install java nmap-ncat

2)下载COSBench工具并解压

wget https://github.com/intelcloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip

unzip 0.4.2.c2.zip

3)进入解压路径,赋予shell脚本可执行权限,并取消代理防止冲突

chmod +x *.sh

unset http_proxy

4)执行./start-driver.sh,启动Driver,出现如下画面则启动成功

5)执行./start-controller.sh,启动Controller,出现如下画面则表示启动Controller成功

备注:

  • 本机同时启动了Controller和Driver,Controller的默认端口为19088,Driver的默认端口为18088,所以要确保这两个端口可以被访问。
  • 如果Controller和Driver同时部署在一台机器上,可以用start-all.sh脚本同时启动Controller和Driver。
  • 一台Controller同时控制几台Driver发起请求,Driver节点只需要执行start-driver.sh启动Driver即可。

6)在浏览器中访问:http://192.168.188.129:19088/controller/,这里192.168.188.129为部署Controller的主机地址,出现如下画面则表示部署成功

4、配置

1)Driver配置

编辑conf目录下的driver.conf文件(新部署的COSBench要编辑driver_template.conf文件),修改driver name和ip地址,如下图所示:

2)Controller配置

编辑conf目录下的controller.conf文件,修改driver数量,日志级别,driver name和driver ip等信息,如下图所示:

3)COSBench测试文件示例

以conf/s3-config-sample.xml说明,代码如下图所示

下面对配置文件的参数进行说明:

  • workload name : 测试时显示的任务名称,这里可以自行定义
  • description : 描述信息,这里可以自己定义
  • storage type: 存储类型,这里配置为s3即可
  • config : 对该类型的配置,
  • workstage name : cosbench是分阶段按顺序执行,此处为init初始化阶段,主要是进行bucket的创建,workers表示执行该阶段的时候开启多少个工作线程,创建bucket不会计算为性能,所以单线程也可以;config处配置的是存储桶bucket的名称前缀;containers表示桶的轮询数,上例中将会创建以s3testqwer为前缀,后缀分别为1和2的bucket
  • prepare阶段 : 配置为bucket写入的数据,workers和config以及containers与init阶段相同,除此之外还需要配置objects,表示一轮写入多少个对象,以及object的大小。
  • main阶段 : 这里是进行测试的阶段,runtime表示运行的时间,时间默认为秒
  • operation type : 操作类型,可以是read、write、delete等。ratio表示该操作所占有操作的比例,例如上面的例子中测试读写,read的比例为80%,write的比例为20%; config中配置bucket的前缀后缀信息。注意write的sizes可以根据实际测试进行修改
  • cleanup阶段 : 这个阶段是进行环境的清理,主要是删除bucket中的数据,保证测试后的数据不会保留在集群中
  • dispose阶段 : 这个阶段是删除bucket

5、测试

配置完成后,就可以启动测试,这里提供两种启动测试的方法:

1)通过脚本启动

执行./cli.sh submit fc/gen-data.xml提交测试,其中(fc/gen-data.xml)为修改后的测试文件名,系统返回当前任务的任务号,如下图所示

2)通过页面提交任务

点击页面上的submit new workloads按钮,如下图1所示,选择要提交的任务文件,点击submit提交任务,如下图2所示

图1

图2

6、测试结果分析

测试结果存放在COSBench目录下的archive子目录下,以具体的任务号区分,每个任务一个目录,如下图所示:

以任务w8为例,该目录下有以下文件:

其中w8-s3-sample.csv为任务的概要运行数据,如IOPS、时延、带宽等总体数据都在此文件中,s3-main.csv为主要运行阶段的详细分时数据。

下载w8-s3-sample.cvs,打开该文件,会显示如下信息:

表中各列含义如下:

  • Op-Type : 操作类型
  • Op-Count : 操作总数
  • Byte-Count : 操作产生的Byte
  • Avg-ResTime : 操作产生的平均时间
  • Avg-ProcTime : 操作的平均时间,这个是主要的延时参考,它反映了平均每次请求的时延
  • Throughput : 吞吐量,主要反映了操作的并发程度,也是重要的参考
  • Bandwidth : 带宽,反映了操作过程中的平均带宽情况
  • Succ-Ratio : 操作的成功率

也可以在控制页面上看到这些数据,如下图所示:

7、使用中的问题

1)COSBench校验数据完整性失败导致测试终止

查看COSBench log发现以下错误信息(log路径为/path/to/cosbench/archive/workload/workload.log):

解决办法:

停止COSBench 进程(Controller和Driver都要停);

编辑cosbench-start.sh文件,找到java启动命令行参数, 增加”-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true”,关闭S3的MD5校验功能;

启动COSBench进程。

2)COSBench测试128M大对象的读取时,读取对象失败

查看COSBench log发现以下错误信息(log路径为/path/to/cosbench/archive/workload/workload.log):

Uploading large file fails with ResetException: Failed to reset the request input stream

 

解决办法:

根本原因是COSBench默认读文件的大小是128k,调整读取文件大小参数,在cosbench-start.sh脚本中的Java命令行加入以下参数:

-Dcom.amazonaws.sdk.s3.defaultStreamBufferSize=<YOUR_MAX_PUT_SIZE>

 

文章来自个人专栏
对象存储测试
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0