千家信息网

ceph中rgw bucket相关操作有哪些

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍ceph中rgw bucket相关操作有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、list bucket。1、读取bucket信息处理流程。RGWL
千家信息网最后更新 2026年10月31日ceph中rgw bucket相关操作有哪些

这篇文章主要介绍ceph中rgw bucket相关操作有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、list bucket。

1、读取bucket信息处理流程。

RGWListBucket::execute()

|__RGWRados::Bucket::List::list_objects()

|__RGWRados::cls_bucket_list()

|__RGWRados::open_bucket_index()

|__CLSRGWIssueBucketList::issue_op()

|__issue_bucket_list_op()

|__librados::IoCtxImpl::aio_operate()op is rgw.bucket_list

|__cls_rgw.cc::rgw_bucket_list()

|__cls_rgw.cc::read_bucket_header()读取struct rgw_bucket_dir的header信息

|__cls_rgw.cc::get_obj_vals()读取struct rgw_bucket_dir的entry信息

|__将读取到的struct rgw_bucket_dir信息转换成RGWObjEnt结构

|__检查读取到的RGWObjEnt结构的合法性

实际保存到ceph集群中bucket信息的数据结构是struct rgw_bucket_dir,该结构内容如下:

Struct rgw_bucket_dir {

Struct rgw_bucket_dir_header header;保存bucket dir的头部信息

std::map m;保存bucket中文件或子bucket的名称和entry的对应关系

};

2、读取到的bucket信息返回给调用者。

RGWListBucket_ObjStore_S3::send_response()

拼接HTTP响应头并且将读取到的List信息RGWObjEnt放在Contents标签内返回给调用者;

二、stat bucket。

1、读取bucket stat信息处理流程。

RGWStatBucket::execute()

|__RGWRados::update_containers_stats()

|__RGWRados::cls_bucket_head()

|__遍历读取到的bucket head信息且从bucket head中更新count/size/size_rounded信息

2、读取到的bucket stat信息返回给调用者。

RGWStatBucket_ObjStore_S3::send_response()

三、create bucket。

1、创建bucket的处理流程。

RGWCreateBucket::execute()

|__rgw_make_bucket_entry_name()创建bucket_entry_name=tenant_name + bucket_name

|__RGWRados::get_bucket_info()获取指定用户的bucket info信息

|__RGWRados::create_bucket()创建bucket

|__RGWRados::select_bucket_placement()确定bucket.data_pool和bucket.index_pool名称

|__RGWRados::init_bucket_index()

|__CLSRGWIssueBucketIndexInit::issue_op()

|__issue_bucket_index_init_op()

|__rgw_bucket_init_index()

|__write_bucket_header()

|__cls_cxx_map_write_header()设置bucket的header信息

|__RGWRados::put_linked_bucket_info()

|__RGWRados::put_bucket_instance_info()

|__get_bucket_instance_entry()

|__rgw_bucket_instance_store_info()更新bucket instance信息

|__RGWRados::put_bucket_entrypoint_info()

|__rgw_make_bucket_entry_name()

|__rgw_bucket_store_info()更新bucket metadata信息

|__rgw_link_bucket()创建bucket的链接

|__rgw_get_bucket_obj()

|__RGWRados::cls_user_add_bucket()

|__RGWRados::cls_user_update_buckets()

|__cls_user_set_buckets()

|__cls_user.cc::cls_user_set_buckets_info()

|__read_header()读取bucket的header结构

|__get_key_by_bucket_name()

|__get_existing_bucket_entry()读取bucket中指定的entry

|__apply_entry_stats()更新entry的stats

|__write_entry()重新写bucket中指定的entry

|__add_header_stats() 更新bucket的header的stat结构

|__cls_cxx_map_write_header()更新bucket的header结构

|__RGWRados::put_bucket_entrypoint_info()

|__rgw_make_bucket_entry_name()

|__rgw_bucket_store_info()更新bucket metadata

2、创建bucket的返回处理函数。

RGWCreateBucket_ObjStore_S3::send_response()

四、delete bucket。

1、删除bucket的处理流程。

RGWDeleteBucket::execute()

|__rgw_bucket_sync_user_stats()

|__rgw_get_buckets_obj()

|__RGWRados::cls_user_sync_bucket_stats()

|__cls_bucket_head()读取bucket的header信息

|__统计用户所有buckets的stats信息并保存到cls_user_bucket_entry结构中

|__RGWRados::cls_user_update_buckets()

|__cls_user_set_buckets()

|__cls_user_set_buckets_info()更新bucket header和entry信息

|__RGWRados::delete_bucket()

|__rgw_bucket_delete_bucket_obj()

|__librados::meta_mgr->remove_entry()删除bucket metadata信息

|__rgw_bucket_instance_remove_entry()

|__librados::meta_mgr->remove_entry()删除bucket instance metadata信息

|__rgw_unlink_bucket()

|__RGWRados::cls_user_remove_bucket()

|__cls_user_remove_bucket()

|__cls_user_remove_bucket()

|__read_header()

|__get_key_by_bucket_name()

|__get_existing_bucket_entry()

|__remove_entry()

|__cls_cxx_map_remove_key()

|__RGWRados::get_bucket_entrypoint_info()

|__RGWRados::put_bucket_entrypoint_info()

|__rgw_make_bucket_entry_name()

|__rgw_bucket_store_info()更新bucket metadata信息

2、删除bucket的返回处理函数。

RGWDeleteBucket_ObjStore_S3::send_reponse()

五、bucket metadata。

1、RGWBucketMetadataHandler。

该类负责bucket metadata的get/put/delete操作。bucket metadata核心数据结构是struct RGWBucketEntryPoint。

Struct RGWBucketEntryPoint {

Rgw_bucket bucket;

Rgw_user owner;

Ceph::real_time creation_time;

Bool linked;

Bool has_bucket_info;

RGWBucketInfo old_bucket_info;

};

RGWBucketMetadataHandler类还负责遍历bucket中所有对象名称的方法:list_keys_init()/list_keys_next()/list_keys_complete()。其中bucket中所有对象名称使用struct RGWObjEnt结构描述。

2、RGWBucketInstanceMetadataHandler。

该类负责bucket instance metadata的get/put/delete操作。在执行put操作更新bucket info时,首先获取bucket location所在,之后根据得到的bucket location更新bucket info信息,最后调用RGWRados::init_bucket_index()函数来创建bucket的header信息。

RGWBucketMetadataHandler类还负责遍历bucket中所有对象名称的方法:list_keys_init()/list_keys_next()/list_keys_complete()。其中bucket中所有对象名称使用struct RGWObjEnt结构描述。

以上是"ceph中rgw bucket相关操作有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

信息 结构 更新 名称 处理 对象 流程 内容 函数 用者 中指 数据 数据结构 方法 用户 篇文章 合法 价值 兴趣 合法性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 什么是科技互联网 互联网科技图片 互联网金融与金融科技 金融科技与互联网金融 极限挑战互联网科技 唐信互联网科技 大连 互联网高科技企业 互联网科技实习生岗位职责 顶级互联网科技成果有哪些 互联网公司科技股 崇明区互联网教育科技售后服务 呼和浩特新华互联网科技学院 亳州好赞互联网科技有限公司 乌苏新华互联网科技做什么的 工业互联网展湾科技股份有限公司 互联网安防科技感 陕西云淼互联网科技公司 昆明中奇联合互联网科技 山东亿川互联网科技有限责任公司 互联网黑科技 互联网科技公司简介 科技互联网技术 极限挑战互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 常德市电业局互联网科技部 互联网和黑科技的看法 下一代互联网重大应用科技园 深圳互联网科技园地址 安徽九吞吴互联网科技有限公司
0