本来不想再写Ceph相关的文章了,最近在做ceph元数据优化研究及架构,整体思路是:将rados作为数据存储引擎,构建分布式元数据集群来管理元数据,如:将rgw或者fs相关的元数据从ceph的元数据池中抽取出来,转存到分布式元数据集群中,以此达到提升单集群处理能力的目的;要达到这个目的,有两个基础条件:1.对ceph中rgw或者fs的各CURD操作原理及IO路径非常熟悉,2.对ceph中元数据的组织及存储非常熟悉;然后才能在rgw或者mds的IO路径中进行数据及元数据的分离操作,并以合适的格式将元数据转存到分布式元数据集群中。

这篇文章将着重描述rgw中user,bucket,bucket instance以及bucket index等元数据的组织形式及数据结构,一些概念及说明请参考官方资料Rados Gateway Data Layout。

对官方资料的一些补充:

  1. 存储池Pools:在新版本中,还有:
    1.1){zone}.rgw.log :用来存储gc,lc,reshard等的log信息
    1.2){zone}.rgw.otp:存储one-time password秘钥,开启MFA(Multi-Factor Authentication)是使用
    1.3){zone}.rgw.non-ec:这个存储池之前就有,用来存储multipart相关的中间结果

下文的操作在最新的Nautilus版本环境下进行

元数据分析

user元数据

通过下面的命令可以查看某个用户的元信息,包括:id,name,key,quota等信息:

radosgw-admin metadata user get user:{user}

在逻辑上,user信息存储在{zone}.rgw.meta池的users:*命名空间中,如下:
1)users.uid:存储用户id及其bucket信息
2)users.keys:存储用户的access key信息,通过它可以找到用户id
3)users.email:存储用户的email信息
4)users.swfit:存储swfit子用户信息

其中用户的基本信息(id,key,email,subuser等)包含在结构RGWUserInfo中,用户的bucket信息包含在结构cls_user_bucket_entry中,还有其他结构也包含在cls_user_types.h文件中,详情可以参考源码,物理上,这些信息都存储在存储池映射的OSD磁盘上;下面是一个示例:

users.uid命名空间

1)包含user1和user1.buckets两个对象, 其中user1包含用户的基本信息,user1.buckets包含用户的bucket信息。

2)user1对象本身包含了用户的基本信息,基本上与用户相关的描述信息都包含在里面,只有一个扩展属性,没有omap属性。

3)user1.buckets本身不包含信息,信息包含在omap属性中,没有扩展属性;用户在list bucket的时候会用到这个信息。

users.keys命名空间

1)包含了key到uid映射信息,可以通过access key找到uid。

由于没有设置email和swift用户,所以users.email和users.swift空间没有记录相应的信息。

通过radosgw-admin user命令获取的所有信息都来至于上述的命名空间,各个命令的工作过程在这里就不相信分析了(掌握各操作的IO路径也是实现元数据分布式集群很重要的一部分,留待后面分析吧

bucket元数据

通过下面的命令可以查看某个用户的元信息,包含:name,key,marker等信息:

radosgw-admin metadata bucket get bucket:{bucket}

在逻辑上,bucket信息存储在{zone}.rgw.meta池的root命名空间中,其中{bucket} 记录了bucket与instance_id的对应关系,记录是的静态信息,对应于结构RGWBucketEntryPoint,.bucket.meta.{tenent}:{bucket}:{marker} 记录bucket的寻址方式,记录的是动态信息,对应于结构RGWBucketInfo,bucket的ACL,Policy信息存放在xattr属性中,物理上,这些信息都存储在存储池映射的OSD磁盘上;下面是一个示例:
1)包含bucket1和.bucket.meta.bucket1:475c3d39-2f37-4ffd-ab72-fecc7272339c.34580.1两个对象

2)bucket1对象本身包含了用户的基本信息,基本上与用户相关的描述信息都包含在里面,只有一个扩展属性,没有omap属性。

3).bucket.meta.bucket1:475c3d39-2f37-4ffd-ab72-fecc7272339c.34580.1对象的扩展属性中包含acl,policy等信息,对象本身包含bucket的动态信息。

Bucket Index

通过下面的命令可以枚举bucket下的对象信息:

radosgw-admin bucket list --bucket={bucket}

在逻辑上,bucket index信息存储在{zone}.rgw.buckets.index池中,bucket index用于维护bucket下的对象信息,存储在一个或者多个对象的omap中 - key为对象的名字,value为结构rgw_bucket_dir_entry 。bucket index对象的命名为:.dir.{bucket_id}.{shard_id}。下面是一个示例:
1)omap keys:bucket index对象中包含的object key列表。

2)omap value: 某个object的信息,对应结构rgw_bucket_dir_entry

3)omap header: 当前bucket index对象下的统计信息,对象数,总大小等。对应结构rgw_bucket_dir_header

通过本文,我们基本上弄清楚了user,bucket(instance),bucket index的数据结构及其存储方式,下篇介绍Ceph 中Object的组织方式。

Ceph rgw中的元数据组织形式及存储结构分析相关推荐

  1. 【大咖专栏】如何配置CEPH RGW对象存储与公有云同步

    新钛云服已为您服务1280天 容灾 (Disaster Recovery),即容灾备份或灾备,是业务连续性系统的一个子集,用于保障 IT 系统在遭受自然灾害.人为操作失误或蓄意破坏后的数据还原和业务恢 ...

  2. Ceph使用系列之——Ceph RGW使用

    本文分享主题是<Ceph使用系列之--Ceph RGW使用>,欢迎关注. Ceph RGW介绍 Ceph对象网关是在librados之上构建的对象存储接口,旨在为应用程序提供通往Ceph存 ...

  3. cinder与ceph的区别_分布式存储基础、Ceph、cinder及华为软件定义的存储方案 -

    块存储与分布式存储 块存储,简单来说就是提供了块设备存储的接口.通过向内核注册块设备信息,在Linux中通过lsblk可以得到当前主机上块设备信息列表. 本文包括了单机块存储介绍.分布式存储技术Cep ...

  4. ceph rgw:bucket policy实现

    ceph rgw:bucket policy实现 相比于aws,rgw的bucket policy实现的还不是很完善,有很多细节都不支持,并且已支持的特性也在很多细节方面与s3不同,尤其是因为rgw不 ...

  5. 趣解 ceph rgw multisite data sync 机制

    multisite是ceph rgw对象数据异地容灾备份的一个有效方案,笔者希望深入理解该技术,并应用于生产环境中,然而rgw的这部分代码晦涩难懂,笔者多次尝试阅读,仍云里雾里不解其意,最终流着泪咬着 ...

  6. 聊一聊数据仓库中的元数据管理系统

    原文地址 一.元数据的定义 按照传统的定义,元数据(Metadata)是关于数据的数据.在数据仓库系统中,元数据可以帮助数据仓库管理员和数据仓库的开发人员非常方便地找到他们所关心的数据:元数据是描述数 ...

  7. ceph rgw java_java 使用amazon s3接口访问本地ceph rgw

    ceph官网中使用java访问rgw s3的代码已经不能使用了, http://docs.ceph.com/docs/kraken/radosgw/s3/java/ 折腾了好长时间,在同事的帮助下终于 ...

  8. Python-EEG工具库MNE中文教程(14)-Epoch对象中的元数据(metadata)

    目录 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 .QQ交流群:903290195 本案例演示使用Epochs元数据.关于Epochs数据结构:可以查看文章Python-EEG工具库MN ...

  9. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  10. 往往存储与计算机硬盘或其他,硬盘是计算机系统中信息资源最重要的存储设备其所存放信息-Read.DOC...

    硬盘是计算机系统中信息资源最重要的存储设备其所存放信息-Read PAGE PAGE 2 摘要 关键字:磁盘.硬盘.中断13.扩展中断13.分区表.MBR.DBR.DPT.Boot.CMOS.FAT. ...

最新文章

  1. Arithmetic
  2. 类库,通用变量,is/as运算符,委托。
  3. Codeforces Round #321 (Div. 2) B. Kefa and Company (尺取)
  4. 对于下一代互联网的畅想
  5. 知识图谱论文阅读【十二】【KDD2020】 使用贝叶斯图卷积神经网络推荐精确和多样化项目的框架【看不懂,待续】
  6. linux安装weblogic_WebLogic的Azure虚拟机主要版本发布
  7. vue-ls vue 本地储存示例
  8. Nexus 安装 使用说明
  9. 2021年计算机二级考试广东卷英语,2021年广东计算机等级考试考试模拟练习卷.doc...
  10. 【实践】美团外卖图谱推荐比赛冠军经验分享:从多领域优化到AutoML框架
  11. 为什么说吉利博越定义了智能SUV
  12. cf378D(stl模拟)
  13. 数据库实时同步技术解决方案
  14. html修改每页显示数量,JS实现动态设置每页显示固定行数
  15. PMP课程笔记:第5章 项目范围管理
  16. 美洽SDK通过广播结束消息提示
  17. 研究生的生活原来是酱紫的……
  18. 识字水平测试软件,3000字良心测评,市面上最火的3款识字App,这款最便宜好用...
  19. 程控电源CANoe上位机面板(CAN\ETH测试、RS232串口通信、编写设计思路)
  20. PostgreSQL:psql 介绍

热门文章

  1. 副高 职称计算机 上海,高级职称评定
  2. 最新发布!2021软科中国大学排名
  3. java.lang.IllegalStateException: No instances available for user
  4. 剩余电流动作继电器在浴室中的应用
  5. 到底有多少种病毒?科学家们分析了100多种SARS-CoV-2变种的功能
  6. BCH硬分叉,又一场“权力的游戏” | 8问大事件
  7. iOS Mac安装ipa文件的几种方法
  8. 威联通qnap SMB速度慢 只有30M、50M的解决方法
  9. 键盘连不上计算机,电脑键盘失灵的解决办法
  10. iOS活体人脸识别的Demo和一些思路