微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

玩转ceph性能测试---对象存储一

笔者最近在工作中需要测试ceph的rgw,于是边测试边学习。
首先工具采用的intel的一个开源工具cosbench,这也是业界主流的对象存储测试工具。

1、cosbench的安装,启动
下载最新的cosbench包
wget https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
解压
unzip 0.4.2.c4.zip

安装相关工具包
yum install java-1.7.0-openjdk nmap-ncat

给所有的sh脚本加执行权限
chmod +x *.sh

取消http代理
unset http_proxy

如果是controller节点,执行start-all.sh
如果是driver节点,执行start-driver.sh
我的环境里面是1个controller+3个driver,controller和其中1个driver共用一个节点
修改conf/controller.conf

玩转ceph性能测试---对象存储(一)

修改各个节点的conf/driver.conf

玩转ceph性能测试---对象存储(一)

controller 执行start-all.sh

玩转ceph性能测试---对象存储(一)

玩转ceph性能测试---对象存储(一)

driver节点执行start-driver.sh

玩转ceph性能测试---对象存储(一)

http://controllerip:19088/controller/
登陆controller web页面

玩转ceph性能测试---对象存储(一)


3个driver节点都ok

2、在conf目录下有各个配置文件

玩转ceph性能测试---对象存储(一)

3、ceph的对象存储支持S3和swift两种接口,本篇先讨论S3
测试S3, 可以根据s3-config-sample.xml修改
<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-sample" description="sample benchmark for s3">

<storage type="s3" config="accesskey=dbce6f1739494a87b8d6770b0c831d8d;secretkey=72b3205f558c475daac7b3bc756a63bc;endpoint=http://rgwip:8080" />
-----认证信息 accesskey secretkey endpoiont 去自己的ceph环境中获取
<workflow>

<workstage name="init">
  <work type="init" workers="1" config="cprefix=s3testqwer;containers=r(1,32)" />
</workstage>

----init阶段,主要是创建bucket,上述配置为创建s3testqwer为前缀的32个bucket
<workstage name="prepare">
<work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,32);objects=r(1,100);sizes=c(64)KB" />
</workstage>
----prepare阶段,主要是创建bucket里面的object,上述为在每个bucket创建64k的object 100个,64k可配范围,预先创建好数据库可以供下面的读测试使用
<workstage name="main">
<work name="main" workers="8" runtime="300">
<operation type="read" ratio="100" config="cprefix=s3testqwer;containers=u(1,32);objects=u(1,100)" />
<operation type="write" ratio="0" config="cprefix=s3testqwer;containers=u(1,32);objects=u(1,100);sizes=c(64)KB" />
</work>
</workstage>
----main,执行阶段,ratio是执行百分比,workers是并发数,runtime是执行时间
<workstage name="cleanup">
<work type="cleanup" workers="1" config="cprefix=s3testqwer;containers=r(1,32);objects=r(1,100)" />
</workstage>
----cleanup,清理object
<workstage name="dispose">
<work type="dispose" workers="1" config="cprefix=s3testqwer;containers=r(1,32)" />
</workstage>
-----dispose,清理bucket
</workflow>

</workload>
一个workstage里面的work是并发执行的,比如你有多个driver,就会分配到多个driver去执行,每一个work里面的worker又是并发,worker也是负载到多个driver去的,多个workstage是顺序执行

导入写好的workstage脚本

玩转ceph性能测试---对象存储(一)

然后submit

依次执行init-prepare-main-cleanup-dispose

玩转ceph性能测试---对象存储(一)

执行结果

玩转ceph性能测试---对象存储(一)

上图中各个类别说明:
Op-type - 操作类型
Op-Count - 操作总数
Byte-Count - byte总数
Avg-ResTime - 响应时间,是数据传输时间和处理时间的总和
Avg-ProceTime - 读写操作的时间
Throughput - 吞吐量,每秒操作数
Bandwidth - 带宽
Succ-Ratio - 操作的成功率

图标可以看整个数据的波动 整体还算平稳

玩转ceph性能测试---对象存储(一)

玩转ceph性能测试---对象存储(一)

有33条错误

玩转ceph性能测试---对象存储(一)


可以在cosbench的log目录下找到错误log

玩转ceph性能测试---对象存储(一)

查看对应mission的log

玩转ceph性能测试---对象存储(一)


这是java启动的一个错误
1、stop-all.sh 停止 cosbench 进程(controller, drivers)
2、编辑 cosbench-start.sh 文件,找到java启动命令行参数, 增加"-Dcom.amazonaws.services.s3.disableGetobjectMD5Validation=true" 关闭S3的MD5校验功能
3、start-all.sh 启动

修改后再次执行workload,不再报错,可以根据自己的配置调整脚本,比如只想测试write并且又想保留数据,就可以不写cleanup和dispose,当然也可以自定义work

附加一个swift接口测试的xml

玩转ceph性能测试---对象存储(一)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐