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:/
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9QzVa5mVzQmdGdVYxljMkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNyEDO0IzM1ETOwIDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
分析問題原因,首先把radosgw日志資訊打開,打開方法如下:
1)修改ceph.conf,增加如下兩條日志相關資訊
[client.radosgw.gateway]
debug_rgw =
log file=/var/log/radosgw/client.radosgw.gateway.log
2)重新開機radosgw
重新執行上面你的建立bucket指令:S3cmd mb s3://aa_test
觀察radosgw的日志輸出,有如下的報錯輸出:
rgw_create_bucketreturnedret=-bucket=yy_test(
@{i=.rgw.buckets.index,e=.rgw.buckets.extra}.rgw.buckets
[default])
WARNING: set_req_state_err err_no=resorting to
req ::s3:PUT/yy_test/:create_bucket:http status=
====== req done req=http_status= ======
process_request() returned -
解決辦法
隻把rgw bucket資料池設定為ec模式,其他pool都設定為副本模式。
這裡bucket資料池是.rgw.buckets,也即隻把該值設定為erasure模式,其他池都必須是replicated模式
參考文獻:
http://obsidiancreeper.com/2017/10/23/Using-Erasure-Coding-with-RadosGW/