cosbench通过aws-S3协议测试对象存储服务

COSBench是Intel团队基于java开发,对云存储的测试工具,全称是Cloud object Storage Bench,本文主要针对的是支持aws-s3协议的存储服务进行测试,包括seaweedfs、以及华为云存储。
--配置信息基于xml配置,也可以在cosbench的
github地址:https://github.com/intel-cloud/cosbench
本文下载的是最新的0.4.2.c4版本,可以根据自己的需求去下载github上的相应的release版本, 本文所说的cosbench的下载地址: https://github.com/intel-cloud/cosbench/releases/download/v0.4.2.c4/0.4.2.c4.zip
也可以直接在girhub的release目录下下载。下载后解压如下所示:

0.4.2.c4/
0.4.2.c4.zip
total 4132
drwxr-xr-x 15 root root    4096 May 15 11:34 ./
drwxr-xr-x  3 root root    4096 May 13 11:07 ../
-rw-r--r--  1 root root  348912 Jul  9  2014 3rd-party-licenses.pdf
drwxr-xr-x 34 root root    4096 May 16 12:01 archive/
-rw-r--r--  1 root root    5266 Apr 27  2016 BUILD.md
-rw-r--r--  1 root root      10 Jun 15  2016 BUILD.no
-rw-r--r--  1 root root    7178 Apr 27  2016 CHANGELOG
-rw-r--r--  1 root root    2639 Jul  9  2014 cli.sh
drwxr-xr-x  4 root root    4096 May 16 14:40 conf/
-rw-r--r--  1 root root  985318 Jul  9  2014 COSBenchAdaptorDevGuide.pdf
-rw-r--r--  1 root root    2974 May 13 15:08 cosbench-start.sh
-rw-r--r--  1 root root    1423 Dec 30  2014 cosbench-stop.sh
-rw-r--r--  1 root root 2516640 Apr 27  2016 COSBenchUserGuide.pdf
drwxr-xr-x  4 root root    4096 Jun 17  2016 ext/
-rw-r--r--  1 root root      16 May 15 11:34 ip-port.list
drwxr-xr-x  5 root root    4096 Jun 17  2016 javadoc/
drwxr-xr-x  2 root root    4096 Jun 17  2016 lib-src/
-rw-r--r--  1 root root     578 Jul  9  2014 LICENSE
drwxr-xr-x  2 root root    4096 Jun 17  2016 licenses/
drwxr-xr-x  3 root root    4096 May 15 11:34 log/
drwxr-xr-x  2 root root    4096 May 15 11:34 main/
-rw-r--r--  1 root root     478 Jul  9  2014 NOTICE
drwxr-xr-x  4 root root    4096 Jun 17  2016 osgi/
-rw-r--r--  1 root root  201244 Jul  9  2014 pkg.lst
-rw-r--r--  1 root root    2182 Apr 27  2016 README.md
drwxr-xr-x  2 root root    4096 Jun 17  2016 scripts/
-rw-r--r--  1 root root     131 May 16 11:54 start
-rw-r--r--  1 root root     716 Jul  9  2014 start-all.bat
-rw-r--r--  1 root root     727 Apr 27  2016 start-all.sh
-rw-r--r--  1 root root     788 Jul  9  2014 start-controller.bat
-rw-r--r--  1 root root    1062 Jul  9  2014 start-controller.sh
-rw-r--r--  1 root root     783 Jul  9  2014 start-driver.bat
-rw-r--r--  1 root root    1910 Apr 27  2016 start-driver.sh
-rw-r--r--  1 root root     127 May 16 12:01 stop
-rw-r--r--  1 root root     724 Apr 27  2016 stop-all.sh
-rw-r--r--  1 root root     809 Jul  9  2014 stop-controller.sh
-rw-r--r--  1 root root    1490 Apr 27  2016 stop-driver.sh
-rw-r--r--  1 root root     278 Apr 27  2016 TODO.md
-rw-r--r--  1 root root       5 Apr 27  2016 VERSION
-rw-r--r--  1 root root     677 Jul  9  2014 web.bat
drwxr-xr-x  3 root root    4096 Jun 17  2016 work/
drwxr-xr-x  5 root root    4096 May 13 11:09 workloads/
drwxr-xr-x  3 root root    4096 Jun 17  2016 workspace/

基本概念介绍,可以参看上图中的COSBenchUserGuide.pdf 文件:
下面我们开始测试之旅吧:
进入conf目录下:

-rw-r--r--  1 root root 2000 Jul  9  2014 ampli-config-sample.xml
-rw-r--r--  1 root root 1189 Jul  9  2014 cdmi-base-config-sample.xml
-rw-r--r--  1 root root 1537 Jul  9  2014 cdmi-swift-config-sample.xml
-rw-r--r--  1 root root  914 May 16 11:54 config.xml
drwxr-xr-x  3 root root 4096 May 15 11:34 .controller/
-rw-r--r--  1 root root  163 Apr  8  2015 controller.conf
-rw-r--r--  1 root root  439 Jul  9  2014 controller-tomcat-server.xml
-rw-r--r--  1 root root  168 Jul  9  2014 cosbench-users.xml
-rw-r--r--  1 root root 2341 Jul  9  2014 delay-stage-config-sample.xml
drwxr-xr-x  3 root root 4096 May 15 11:34 .driver/
-rw-r--r--  1 root root   64 May 15 11:34 driver_1.conf
lrwxrwxrwx  1 root root   13 May 15 11:34 driver.conf -> driver_1.conf
-rw-r--r--  1 root root   55 Apr 27  2016 driver_template.conf
-rw-r--r--  1 root root  439 May 15 11:34 driver-tomcat-server_1.xml
-rw-r--r--  1 root root  439 Apr  7  2015 driver-tomcat-server2.xml
-rw-r--r--  1 root root  439 Apr 27  2016 driver-tomcat-server_template.xml
lrwxrwxrwx  1 root root   26 May 15 11:34 driver-tomcat-server.xml -> driver-tomcat-server_1.xml
-rw-r--r--  1 root root 1337 Jul  9  2014 filewriter-config-explanation.txt
-rw-r--r--  1 root root 1339 Jan 27  2016 gcs-config-sample.xml
-rw-r--r--  1 root root  846 Jan 27  2016 gcs-service-account-sample.json
-rw-r--r--  1 root root 1555 Jul  9  2014 hashcheck.xml
-rw-r--r--  1 root root 1078 Jul  9  2014 librados-config-sample.xml
-rw-r--r--  1 root root 1510 Jul  9  2014 librados-sample-annotated.xml
-rw-r--r--  1 root root 1648 Jul  9  2014 noop-config.xml
-rw-r--r--  1 root root 1543 Jul  9  2014 noop-read-config.xml
-rw-r--r--  1 root root 1571 Jul  9  2014 noop-write-config.xml
-rw-r--r--  1 root root 4647 Jun  8  2016 openio-config-sample.xml
-rw-r--r--  1 root root 2174 Jul  9  2014 reusedata.xml
-rw-r--r--  1 root root 1253 May 14 14:37 s3-config-sample.xml
-rw-r--r--  1 root root 1855 Jul  9  2014 splitrw.xml
-rw-r--r--  1 root root 1127 Jul  9  2014 sproxyd-config-sample.xml
-rw-r--r--  1 root root 1716 Apr 27  2016 swift-config-sample.xml
-rw-r--r--  1 root root 1630 Jul  9  2014 workload-config.xml
-rw-r--r--  1 root root 1038 May 13 16:01 workload-s3-config.xml

如上图所示,我们可以看到cosbench已经给我们提供了和你丰富的测试样例,本文主要是对S3协议的测试就看到了s3-config-sample.xml文件,我们就编写一个S3的测试脚本:

<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-sample" description="sample benchmark for s3">

  <storage type="s3" config="accesskey=xxxx;secretkey=xxxxx;endpoint=http://192.168.1.1" />

  <workflow>
    //初始化创建一个桶信息 cprefix 代表桶名的前缀,conttainers和前缀拼接成桶的唯一id。多个桶时r(1,n) n代表桶的个数理论上是100以内 s3的要求
    <workstage name="init">
      <work type="init" workers="1" config="cprefix=bucketname-;containers=r(1,1)" />
    </workstage>
//向桶里放大小为sizes的对象信息,oprefix同样代表对象名的前缀,objects和oprefix拼成对象的唯一标识
    <workstage name="putobject">
      <work name="putobject" workers="200" totalOps="300000">
        <operation type="write" ratio="100" config="cprefix=bucketname-;containers=r(1,1);oprefix=objects-50k-1-;objects=s(1,300000);sizes=c(50)KB" />
      </work>
    </workstage>

  </workflow>

</workload>

: 对于putobject的config编写要注意,s3的bucketname 和objectid都是唯一的,当对同一个对象(bucketname和objectid一样)进行反复put操作代表的是更新操作,测试的内容就发生了根本变化,
故每次测试时,要不就是重新填写桶的名称,要不就修改对象的前缀保证唯一性,不会影响我们的测试结果此处我们修改对象的前缀比如
objects-50k-1-
若是下次测试是100k的就把oprefix=objects-100k-1-
若是要重新测试100k的就把oprefix=objects-100k-2-
目的是保证测试的时候不受objectid+bucketname一样导致数据从新建操作变成了更新操作。
最后执行测试:
1.启动cosbench,进入上述的0.4.2.c4/ 目录下,此处为ubuntu系统故使用了一下命令:

0.4.2.c4# sh start-all.sh
Launching osgi framwork ...
Successfully launched osgi framework!
Booting cosbench driver ...
Starting    cosbench-log_0.4.2    [OK]
Starting    cosbench-tomcat_0.4.2    [OK]
Starting    cosbench-config_0.4.2    [OK]
Starting    cosbench-http_0.4.2    [OK]
Starting    cosbench-cdmi-util_0.4.2    [OK]
Starting    cosbench-core_0.4.2    [OK]
Starting    cosbench-core-web_0.4.2    [OK]
Starting    cosbench-api_0.4.2    [OK]
Starting    cosbench-mock_0.4.2    [OK]
Starting    cosbench-ampli_0.4.2    [OK]
Starting    cosbench-swift_0.4.2    [OK]
Starting    cosbench-keystone_0.4.2    [OK]
Starting    cosbench-httpauth_0.4.2    [OK]
Starting    cosbench-s3_0.4.2    [OK]
Starting    cosbench-librados_0.4.2    [OK]
Starting    cosbench-scality_0.4.2    [OK]
Starting    cosbench-cdmi-swift_0.4.2    [OK]
Starting    cosbench-cdmi-base_0.4.2    [OK]
Starting    cosbench-driver_0.4.2    [OK]
Starting    cosbench-driver-web_0.4.2    [OK]
Successfully started cosbench driver!
Listening on port 0.0.0.0/0.0.0.0:18089 ...
Persistence bundle starting...
Persistence bundle started.
----------------------------------------------
!!! Service will listen on web port: 18088 !!!
----------------------------------------------

======================================================

Launching osgi framwork ...
Successfully launched osgi framework!
Booting cosbench controller ...
Starting    cosbench-log_0.4.2    [OK]
Starting    cosbench-tomcat_0.4.2    [OK]
Starting    cosbench-config_0.4.2    [OK]
Starting    cosbench-core_0.4.2    [OK]
Starting    cosbench-core-web_0.4.2    [OK]
Starting    cosbench-controller_0.4.2    [OK]
Starting    cosbench-controller-web_0.4.2    [OK]
Successfully started cosbench controller!
Listening on port 0.0.0.0/0.0.0.0:19089 ...
Persistence bundle starting...
Persistence bundle started.
----------------------------------------------
!!! Service will listen on web port: 19088 !!!
----------------------------------------------

2.将修改的测试用例加入到测试计划中

sh cli.sh submit conf/config.xml
#出现下列内容代表成功
Accepted with ID: w54

3.查看测试内容
可以在浏览器中输入:http://ip:19088/controller/index.html
ip: 为启动cosbench的ip地址
查看测试信息和测试结果,以及在运行中的测试。
在这个界面可以上传测试计划,就是将编写好的xml文件上传到测试服务器上并执行,如下图所示:

红色框内

测试结果都会保存在服务端的archive/ 目录下,供你随时翻阅。

4.停止服务

0.4.2.c4# sh stop-all.sh
Stopping cosbench controller ...
Successfully stopped cosbench controller.

======================================================

127.0.0.1:18088
18088
Stopping cosbench driver ...
Successfully stopped cosbench driver.
  1. read 异常问题修复:
 com.amazonaws.AmazonClientException: Unable to verify integrity of data download.  Client calculated content hash didn't match hash calculated by Amazon S3.  The data may be corrupt.
        at com.amazonaws.services.s3.internal.DigestValidationInputStream.validateMD5Digest(DigestValidationInputStream.java:79)
        at com.amazonaws.services.s3.internal.DigestValidationInputStream.read(DigestValidationInputStream.java:61)
        at com.amazonaws.internal.SdkFilterInputStream.read(SdkFilterInputStream.java:72)
        at com.amazonaws.services.s3.model.S3ObjectInputStream.read(S3ObjectInputStream.java:155)
        at com.amazonaws.services.s3.model.S3ObjectInputStream.read(S3ObjectInputStream.java:147)
        at com.intel.cosbench.driver.operator.Reader.copyLarge(Reader.java:120)
        at com.intel.cosbench.driver.operator.Reader.doRead(Reader.java:92)
        at com.intel.cosbench.driver.operator.Reader.operate(Reader.java:69)
        at com.intel.cosbench.driver.operator.AbstractOperator.operate(AbstractOperator.java:76)
        at com.intel.cosbench.driver.agent.WorkAgent.performOperation(WorkAgent.java:197)
        at com.intel.cosbench.driver.agent.WorkAgent.doWork(WorkAgent.java:177)
        at com.intel.cosbench.driver.agent.WorkAgent.execute(WorkAgent.java:134)
        at com.intel.cosbench.driver.agent.AbstractAgent.call(AbstractAgent.java:44)
        at com.intel.cosbench.driver.agent.AbstractAgent.call(AbstractAgent.java:1)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)

出现以上异常的情况,是因为S3的sdk对获取到的大小进行了校验,关闭校验即可满足:
修改cosbench-start.sh 文件,修改如下:

 # 1. 先通过stop-all.sh关闭cosbench服务
 # 2. 增加参数 -Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true 
 /usr/bin/nohup java -Dcosbench.tomcat.config=$TOMCAT_CONFIG -Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true -server -cp main/*org.eclipse.equinox.launcher.Main -configuration $OSGI_CONFIG -console $OSGI_CONSOLE_PORT 1> $BOOT_LOG 2>&1 &
# 3. 修改完成后保存重启服务
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342