上一篇文章里,我們發現cosbench 0.4.2版本在CentOS 7 上運行有問題,於是我們換成了0.4.2.c4。但是,0.4.2.c4還是有問題。
我簡單地根據我的環境,修改了s3-conf-sample.xml,修改后的xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?> <workload name="s3-hwubai-yunlong-1" description="I am trying to make cosbench work"> <storage type="s3" config="accesskey=1_s3_accid;secretkey=u5SPrzbM4tZdT0zADF0JfVeLA9d2;endpoint=http://10.119.119.119:9020/bkt1" /> <workflow> <workstage name="init"> <work type="init" workers="1" config="cprefix=bucket;containers=r(1,1)" /> </workstage> <workstage name="prepare"> <work type="prepare" workers="1" config="cprefix=bucket;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" /> </workstage> <workstage name="main"> <work name="main" workers="1" runtime="120"> <operation type="write" ratio="80" config="cprefix=bucket;containers=u(1,2);objects=u(11,20);sizes=c(64)KB" /> <operation type="read" ratio="20" config="cprefix=bucket;containers=u(1,2);objects=u(1,10)" /> </work> </workstage> <workstage name="cleanup"> <work type="cleanup" workers="1" config="cprefix=bucket;containers=r(1,2);objects=r(1,20)" /> </workstage> <workstage name="dispose"> <work type="dispose" workers="1" config="cprefix=bucket;containers=r(1,2)" /> </workstage> </workflow> </workload>
測試的結果呢,寫操作可以進行,存儲上的確看到了創建出來的對象,但是讀操作總是報錯:
2020-06-04 03:55:28,335 [ERROR] [AbstractOperator] - worker 3 fail to perform operation bucket1/myobjects7
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:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
通過搜索,找到並驗證了下面的解決方案:
- 在所有的controller,driver的角色上,都運行stop-all.sh 停止 cosbench 進程(controller, drivers)
- 編輯 cosbench-start.sh 文件,找到java啟動命令行參數, 增加"-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true" 關閉S3的MD5校驗功能
- 在所有的角色上start-all.sh 啟動所有的cosbench processes.
這個問題解決了。
=======================
cosbench read異常解決辦法。 Unable to verify integrity of data download. Client calculated content hash didn't match hash calculated by Amazon S3. The data may be corrupt.
https://www.bbsmax.com/A/1O5EWLGz7a/
S3 md5 hash fails #363
https://github.com/intel-cloud/cosbench/issues/363
Cosbench 0.4.2.c4 gave data integrity error at the end of the read tests #320