您好,登录后才能下订单哦!
bucket删除中的细节有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
社区群里有人说删除bucket以后还有部分数据残留,用的ceph 10.2.x版本做的验证
测试用例
from boto.s3.connection import S3Connection import boto conn = boto.connect_s3( aws_access_key_id = '', aws_secret_access_key = '', host = 's3.cephbook.com', port = 80, is_secure = False, calling_format = boto.s3.connection.OrdinaryCallingFormat(), ) bucket = conn.create_bucket('foo') #bucket.delete()
删除前
root@demohost:/home/user# rados ls -p rgw.root foo .bucket.meta.foo:70af9a54-20bb-480b-92f4-cbdeef0b775c.217357.1
删除后
root@demohost:/home/user# rados ls -p rgw.root .bucket.meta.foo:70af9a54-20bb-480b-92f4-cbdeef0b775c.217357.1 #残留
对meta file的删除操作需要根据是否开启了多集群同步来决定
# src/rgw/rgw_rados.cc op_ret = store->delete_bucket(s->bucket, ot);#入口 .... /* if the bucket is not synced we can remove the meta file */ if (!is_syncing_bucket_meta(bucket)) { RGWObjVersionTracker objv_tracker; string entry = bucket.get_key(); r= rgw_bucket_instance_remove_entry(this, entry, &objv_tracker); if (r < 0) { return r; } /* remove bucket index objects*/ map<int, string>::const_iterator biter; for (biter = bucket_objs.begin(); biter != bucket_objs.end(); ++biter) { index_ctx.remove(biter->second); } }
满足下面4种情况是不会进行meta file的删除操作
当前period不是最新版本 zonegroup为非master zonegroup
当前集群只有单个zonegroup,且只有一个zone 当前zone不是master zone
/** * Check to see if the bucket metadata could be synced * bucket: the bucket to check * Returns false is the bucket is not synced */ bool RGWRados::is_syncing_bucket_meta(rgw_bucket& bucket) { /* no current period */ if (current_period.get_id().empty()) { return false; } /* zonegroup is not master zonegroup */ if (!get_zonegroup().is_master) { return false; } /* single zonegroup and a single zone */ if (current_period.is_single_zonegroup(cct, this) && get_zonegroup().zones.size() == 1) { return false; } /* zone is not master */ if (get_zonegroup().master_zone.compare(zone_public_config.id) != 0) { return false; } return true; }
rados命令手工删除对应的obj,但是要注意相应的bucket一定是不再需要的,最好是在多个集群上确认最终操作,确保数据一致性。
修改集群配置,满足上面4点需求之一。
最后非标准操作去删除bucket可能破坏底层数据一致性,起手无悔,一定要慎重。
看完上述内容,你们掌握bucket删除中的细节有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。