资讯专栏INFORMATION COLUMN

Cosbench基于对象存储性能负载

IT那活儿 / 1716人阅读
Cosbench基于对象存储性能负载

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!




对象存储介绍


 

1. 对象存储定义
对象存储是基于对象的存储是解决和处理离散单元的方法的通用术语。对象中包含数据,但对象在一个层结构中不会再有层级结构,每个对象都在存储池的扁平地址空间的同一级别里,一个对象不会属于另一对象。
每个对象都被分配一个唯一的标识符,允许一个服务器或者最终用户来检索对象,而不必知道数据的物理地址。这种方法对于在云计算环境中自动化和简化数据存储很有帮助。
对象存储核心是将数据读写和控制通元数据分离,并且基于对象存储设备(OSD)构建存储系统,每个对象存储设备能够自动管理其上的数据分布。
2. 文件存储、块存储、对象存储的区别
  • 文件存储

    文件存储的用户是自然人。计算机中所有的数据都是0和1,我们无法分辨和管理一连串的01组合,因此用“文件”概念对这些数据进行组织,所有用途相同的数据按照不同应用程序要求的结构方式组成不同的文件,通常用不同的文件后缀来指代不同的类型,再给文件命名方便理解记忆的名字。

    当文件很多的时候,按照某种划分方式给这些文件分组,每一组文件放在同一个目录里面,同样也需要给目录命名容易理解和记忆的名字。而且目录下面除了文件还可以包含下一级目录,即子目录,所有的文件、目录形成一个树状结构。


  • 块存储

    文件系统是直接访问存储数据的硬件介质的,硬件介质不关心数据的组织方式和结构。

    块存储是将数据按固定大小分块,每一块赋予一个用于寻址的编号。以机械硬盘为例,一块就是一个扇区,老式硬盘是512字节大小,新硬盘是4K字节大小。老式硬盘用柱面-磁头-扇区号组成的编号进行寻址,现代硬盘用一个逻辑块编号寻址,所以,硬盘也叫块设备至于哪些块组成一个文件,哪些块记录的是目录/子目录信息,这就是文件系统的事情了。


  • 对象存储

    对象存储其实介于块存储和文件存储之间。

    文件存储的树状结构以及路径访问方式虽然方便理解、记忆和访问,但计算机需要把路径进行分解,然后逐级向下查找,最后才能查找到需要的文件,对于应用程序来说既没必要,也很浪费性能。而块存储是排它的,服务器上的某个逻辑块被一台客户端挂载后,其它客户端就无法访问上面的数据了。

    为了解决文件存储和块存储中的麻烦,使用一个统一的底层存储系统来管理这些文件和底层介质的组织结构,然后给每个文件一个唯一标识,其它系统需要访问某个文件,直接提供文件的标识就可以了。

    存储系统可以用更高效的数据组织方式来管理这些标识以及其对应的存储介质上的块。当然,对于不同的软件系统来说,一次访问需要获取的不一定是单个传统意义上的文件,根据不同的需要可能是某个文件的一部分,也可能是多个文件的组合,甚至是某个块设备,统称为对象,即为对象存储。

3. 华为对象存储
华为FusionStorage是一款可大规模横向扩展的智能分布式存储产品,是既具备云基础架构的弹性按需服务能力,又满足企业关键业务需求的全自研存储系统。
向上层应用提供块存储、对象存储、大数据存储或文件存储资源,且提供极致的性能和丰富的企业级特性;基于华为FusionStorage存储系统,构建高效、可靠和智能的新型存储服务平台,轻松应对智能时代大规模数据敏捷存取需求。




CosBench介绍及部署



COSBench是Intel基于java开发的,用于对象存储的性能测试,全称是Cloud object Storage Bench。
COSBench包括控制台controller和发起请求的driver,driver可以分布式部署,可以支持swift、s3、Openstack等接口。
下载地址:https://github.com/intel-cloud/cosbench/releases/tag/v0.4.2.c4
1. Linux环境部署CosBench
1)安装Java
解压Java JDK,在/etc/profile文件末尾追加如下内容:
export JAVA_HOME=/home/cosbench/jdk1.8.0_102
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPAT
H
执行source/etc/profile命令使修改生效运行java –version查看java版本信息。
2)部署CosBench
上传CosBench压缩包并解压,直接在当前节点启动CosBench controller和driver,默认driver监听端口18088,controller监听端口19088,执行以下命令启动cosbench。
2. Windows环境部署CosBench
1)安装Java
2)部署CosBench
上传CosBench压缩包并解压,直接在当前节点启动CosBench controller和driver,默认driver监听端口18088,controller监听端口19088,直接执行start-all.bat启动cosbench。
3. CosBench页面验证
浏览器地址栏输入http://ip:19088/controller,页面访问正常,且driver状态为绿色,则表示cosbench工具运行成功。

4. Controller和Driver配置
controller和driver依赖不同的配置文件来启动,这些配置文件只是COSBench的配置,并不是workload配置,对象存储的性能测试需要配置workload。

controller和driver配置文件的格式和内容如下:
[controller]
drivers = 1
concurrency=1
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver1]
name = driver1
url = http://XXX.0.0.1:18088/driver





Workload运行及配置


 

1. 运行workload
CosBench提供了workload模板进行参考:
  • S3-config-sample.xml是Amazon S3兼容存储系统模板。

  • workload-config.xml提供了不同存储类型的配置模板,并添加了注释说明。

  • swift-config-sample.xml支持OpenStack Swift存储系统。

在CosBench的controller主页面点击[submit new workloads]跳转到Workload Submission页面,点击[选择文件]选择需要提交的workload文件’write_read1.xml’,点击[submit]提交文件,提示’Success:your workload has been accepted!’即为提交成功。
Workload文件提交成功后会自动运行,点击[view details]查看workload的运行情况,该页面显示运行时的性能数据。
2. 配置workload
Workload配置文件实际是XML文件:
  • Workload ——> workstage ——> work ——> operation。

  • workload可以定义一个或多个workstage。

  • 多个workstage按顺序执行,同一个workstage中的work是并发执行的,每个work中的workers属性即为负载并发数。

  • 认证定义(auth)和存储定义(storage)可以在多个级别定义,而较低级别的定义会覆盖较高级别的定义。例如,operation用work中的auth和storage的定义,而不是workload级别的定义。

2.1 workload选择表达式
Workload配置中,auth、storage、work、operation元素支持config属性,config属性包含可选参数列表,参数列表使用键值对格式,如下图work、operation属性所示。
Config参数列表中常用的键值对包括containers、objects、sizes,分别用于指定选择的桶、对象、对象大小,containers指定的数字表示桶的编号(桶是存储对象的容器),objects指定的数字表示对象的编号,size指定的数字表示对象大小。
2.2 workload中的元素格式和属性
1)workload格式及属性:
<workload name="obs-sample" description="10-100-64kb-test">


2)Storage格式及属性:
type="none|mock|swift|ampli|s3|obs|…" config="=;="/>


3)S3(Amazon S3)类型说明:
type="s3" config="accesskey=;secretkey=
endpoint=;proxyhost=;proxyport="/>


4)obs类型说明:
<storage type="obs" config="accesskey=C1820CD98DB79C95E979;secretkey=KI0pKjBYN1d
mWdeV11Y6ctb9sc0AAAF9jbecldNO;endpoint=http://obs.telecomhb.com"
 />


5)workflow格式及属性:
此步骤可在config中添加循环配置,参数说明如下:

如下示例表示循环workflow内第3个到第5个workstage,循环3次。
2.3 Work格式及属性
有五种不同类型的work(init、prepare、normal、cleanup、dispose),不同类型的work有不同的应用方式。
规则如下:
  • Worker:关键属性,控制负载。

  • Runtime:控制work的运行时长,work中只能设置一个。

  • normal work的参数说明:

  • init work参数说明:

  • prepare work参数说明:

  • cleanup work参数说明:


  • dispose work参数说明:

  • operation格式及属性:

操作类型示例说明:
  • Read操作 -- 100%读,10workers,60秒。

"100r10c60s" workers="10" runtime="60">
type="read" ratio="100" config="..."/>

  • Write操作 -- 100%写,10workers,60秒。

"100w10c60s" workers="10" runtime="60">
type="write" ratio="100" config="..."/>

  • Read/write混合操作 -- 80%读,20%写,100workers,300秒。

<work name="80r20w100c300s" workers="100" runtime="300">
<operation type="read" ratio="80" config="..."/>
<operation type="write" ratio="20" config="..."/>
work>





CosBench性能数据及使用技巧


 

1. 目录结构
  • .meta -- 初始运行id;

  • run-history -- workload运行情况,包括时间和主要阶段;

  • workload -- 历史workload运行的总体性能数据;

  • Sub-directories -- 以w -为前缀,存储每个workload的运行数据。

2. 性能数据
性能结果数据存放在archive目录,在archive中根据workload名称进行查找,保存有各执行阶段的性能数据。
Write操作结果数据:
Write时间段结果数据:
Write并发线程结果数据:
3. 使用技巧
3.1 Dispose阶段失败
原因:dispose阶段主要是做删桶操作,dispose阶段失败一般是cleanup阶段清理对象不彻底导致的,因为桶中有对象时,删桶会失败。
解决:检查配置文件的cleanup阶段是否清理了前面所有阶段创建的对象,或者查看桶内原来是否存在对象。如在prepare阶段创建了部分对象,在main阶段中配置了read、write两种操作,read操作读取prepare阶段创建的对象,write操作又新创建了部分对象,那么在cleanup阶段需要清理的对象就要包括prepare阶段创建的对象和main阶段创建的对象,这样dispose阶段才不会报错。另一种情况,cleanup阶段清理了前面阶段创建的所有对象,dispose还是失败,可能是桶中初始就有部分对象存在,这部分对象在cleanup阶段并没有清理,桶内仍然存在对象,导致删桶失败。
3.2 CosBench端口可配置
Cosbench的默认监听端口是19088/18088,conf/controller-tomcat-server.xml中可以指定controller的端口,driver-tomcat-server.xml中可以指定driver的端口。
3.3 报错排查
workload.log(archive//workload.log),可以查看相关运行细心和报错信息。
3.4 防止内存溢出
cosbench-start脚本中指定Java进程的最大堆大小,防止内存溢出,如参数“-Xmx2g”表示将最大堆大小限制为2GB。
3.5 读写分布在不同的桶
可以在operation中分配要访问的桶,以分割对不同桶的读或写;可以使用“config”中的“containers”参数设置不同的桶范围,如下,read在标号为1、2的桶,write在标号为3、4的桶。
<operation type=”read” ratio=”80” config=”containers=u(1,2);objects=u(1,50)”/>
<operation type=”write” ratio=”20” config=”containers=u(3,4);objects=u(51,100);sizes=c(64)KB”/>



END



本文作者:方 威

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129477.html

相关文章

  • 腾讯云和阿里云对比哪个好?云计算优势测评

    摘要:腾讯云和阿里云针对按量计费的云服务器,均要求账户内有一定的余额腾讯云好像没有最低充值要求,充值元即可阿里云要求账户内至少有元余额。基于上述原因,我们分别在腾讯云和阿里云创建最低配版的云数据库和。 云计算市场争夺阿里云作为名副其实的国内业界第一,名声非常大,不过最近 IT 之家的事闹出来之后,我有点庆幸最终没有选择它。腾讯云算是业界老二,而且有着腾讯这个强大的靠山,云服务产品的种类和质量...

    zengdongbao 评论0 收藏0
  • 国内公有云大幅降价后,首份一手云计算产品评测报告

    摘要:最近国内公有云服务商掀起了一轮降价浪潮,继阿里云上月宣布降价之后,腾讯云也在本月初推出全线降价优惠。上个月阿里云在云栖大会上宣布降价,昨天腾讯云方面也推出了全线降价活动,对包年包月产品均提供了大幅度的降价优惠。 最近国内公有云服务商掀起了一轮降价浪潮,继阿里云上月宣布降价之后,腾讯云也在本月初推出全线降价优惠。本文希望从云计算用户的角度,通过真实的产品使用、评测,对降价后各家的产品性价...

    3fuyu 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<