Ceph对象存储所需要的pool如下,所有的pool都设置成了EC模式
.rgw.buckets;.rgw;.rgw.root;.rgw.control;
.rgw.gc;.log;.intent-log;.usage;.users;
.users.email;.users.swift;.users.uuid;
.users.uid;.rgw.buckets.extra;.rgw.buckets.index
用S3cmd指令创建bucket时,不能成功,报错信息如下:
WARNING: Retrying failed request:/
分析问题原因,首先把radosgw日志信息打开,打开方法如下:
1)修改ceph.conf,增加如下两条日志相关信息
[client.radosgw.gateway]
debug_rgw = 20
log file=/var/log/radosgw/client.radosgw.gateway.log
2)重启radosgw
重新执行上面你的创建bucket命令:S3cmd mb s3://aa_test
观察radosgw的日志输出,有如下的报错输出:
rgw_create_bucketreturnedret=-95bucket=yy_test(
@{i=.rgw.buckets.index,e=.rgw.buckets.extra}.rgw.buckets
[default.34220.4])
WARNING: set_req_state_err err_no=95resorting to 500
req 4:0.003398:s3:PUT/yy_test/:create_bucket:http status=500
====== req done req=0x7f928a699980http_status=500 ======
process_request() returned -95
解决办法
只把rgw bucket数据池设置为ec模式,其他pool都设置为副本模式。
这里bucket数据池是.rgw.buckets,也即只把该值设置为erasure模式,其他池都必须是replicated模式
参考文献:
http://obsidiancreeper.com/2017/10/23/Using-Erasure-Coding-with-RadosGW/