本来不想再写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。
对官方资料的一些补充:
- 存储池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相关的中间结果
下文的