bucket删除中的细节有哪些
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,bucket删除中的细节有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。问题描述社区群里有人说删除bucket以后还有部分数据残留,
千家信息网最后更新 2025年01月23日bucket删除中的细节有哪些
bucket删除中的细节有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
问题描述
社区群里有人说删除bucket以后还有部分数据残留,用的ceph 10.2.x版本做的验证
测试用例
from boto.s3.connection import S3Connectionimport botoconn = 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.rootfoo.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::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删除中的细节有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
集群
数据
问题
细节
一致
一致性
内容
原因
只有
方法
更多
版本
残留
束手无策
为此
入口
单个
原因分析
命令
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络安全的目标是哪些
装修网络技术培训
sql数据库表组合函数
浙江推广网络技术要多少钱
阿里云服务器c盘扩容
邹平软件开发学习网址在线学习
服务器安全性问题
计算机网络技术考研有哪些专业
哪些公司在招聘网络安全
网络安全防护系统厂家
3u服务器采购
数据库如何对不同身份划分权限
软件开发的人员分工
著名的网络安全工程师
有一台服务器能做什么用
我的世界异释界服务器
上海乐虞网络技术电话是多少
MDV数据库
通讯录管理数据库设计
软件开发听说佷辛苦
小学生网络安全知识十条
数据库敲命令单词提示快捷键
佛山安卓软件开发常见问题
网络安全意识培训考试要求
学海领航网络技术参考答案
pc端软件开发需要多少成本
常用的医学文献数据库
数据库放在服务器上
青岛dns服务器地址
mac搭建ajax服务器