筆者最近在工作中需要測試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
修改各個節點的conf/driver.conf
controller 執行start-all.sh
driver節點執行start-driver.sh
http://controllerip:19088/controller/
登陸controller web頁面
3個driver節點都ok
2、在conf目錄下有各個配置文件
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腳本
然后submit
依次執行init-prepare-main-cleanup-dispose
執行結果
上圖中各個類別說明:
Op-type - 操作類型
Op-Count - 操作總數
Byte-Count - byte總數
Avg-ResTime - 響應時間,是數據傳輸時間和處理時間的總和
Avg-ProceTime - 讀寫操作的時間
Throughput - 吞吐量,每秒操作數
Bandwidth - 帶寬
Succ-Ratio - 操作的成功率
圖標可以看整個數據的波動 整體還算平穩
有33條錯誤
可以在cosbench的log目錄下找到錯誤log
查看對應mission的log
這是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
轉載于:https://blog.51cto.com/14009921/2311191