文档章节

Ceph RGW中各Pool的作用

西昆仑
 西昆仑
发布于 2016/06/15 22:17
字数 1689
阅读 1762
收藏 1

Ceph RGW中各Pool的作用

1.引言

在使用Ceph的radosgw服务时,会通过create pool命令创建一系列的pool,服务于radosgw.我想在本文中分析出各个pool的作用。

2.pool信息罗列

POOLS:
NAME                              ID     USED       %USED     MAX AVAIL     OBJECTS   
.rgw.root                         18       4375         0        19575G             7 
.rgw                              19       8559         0        13050G            43 
.rgw.control                      20          0         0        19575G             9 
.rgw.gc                           21          0         0        19575G            76 
.rgw.buckets                      22          0         0        19575G             0 
.rgw.buckets.index                23          0         0        25849G          2048 
.log                              24          0         0        19575G           180 
.intent-log                       25          0         0        19575G             0 
.usage                            26          0         0        19575G             0 
.users                            27         74         0        19575G             6 
.users.email                      28          0         0        19575G             0 
.users.swift                      29         52         0        13050G             4 
.users.uid                        30       2847         0        19575G            12 

上文罗列了所有默认的rgw工作所需要的pool信息,我在此处说明各自功用。

3.region及zone信息管理

在.rgw.root中,存放的是集群命名空间信息。我使用默认配置。应用上可以配置集群的region, zone信息,并使用radosgw-agent实现region中zone之间的信息同步。这是顶层的划分。

[root@ceph4 ~]# rados -p .rgw.root ls
zone_info.main
region_map
default.region
region_info.default
zone_info.default
region_info.

可以通过如下命令获取region,zone信息,也可以编辑配置文件,重新设置。

radosgw-admin region get >> region.conf.json
radosgw-admin zone get >> zone.conf.json
radosgw-admin region set << region.conf.json
radosgw-admin zone set << zone.conf.json

一般使用无需修改,系统会有默认设置。只要在为用户设置独立的placement策略的时候需要修改。

4.用户管理

创建S3用户后才可以进行数据读写。通过radosgw-admin user create命令指定用户名及用户ID,生成accesskey, secretkey, 借助这两个key,和radosgw建立连接,执行创建、删除bucket, 上传下载删除对象等操作。

在.users.uid中可以看到创建用户时的指定uid信息,在.users中可以看到用户的accesskey信息。.users.email中应该是用户的email信息,但是我在创建用户时没有指定,所以内容为空。

[root@ceph4 ~]# rados -p .users.uid ls
app
app-download
[root@ceph4 ~]# rados -p .users ls
5HJ1G*****84FKIQY15W
CE4R2*****AZWHS2MRQ5
[root@ceph4 ~]# rados -p .users.email  ls

5.BUCKET管理

在.rgw中,通过命令可以看到BUCKET名称及其编号

[root@ceph4 ~]#rados -p .rgw ls
down-update.app.com
.bucket.meta.down-update.app.com:default.8172.22
.bucket.meta.down.app.com:default.8157.4
down.app.com

6.BUCKET实际数据存储

在我对用户信息进行个性化配置时,配置了某个用户的数据使用哪个index pool 和data pool。 在我的集群中有如下两个pool

.rgw.buckets.app.download           17     1890G      1.69        30956G      802808 
.rgw.buckets.app.download.index     18         0         0        22283G          40 

这两个POOL是我为了某个特定业务专门创建出来,分别用于存放BUCKET index信息以及BUCKET data信息。那这里面放了哪些BUCKET,这个信息可以从.rgw中看出一些端倪。

6.1 INDEX信息

我对INDEX POOL中的object信息做了一个整理,可以发现,每个都是8个一组,原因是在设置INDEX的shard num为8,所以每一个BUCKET的INDEX对应8个dir。

.dir.default.8871.2.0
.dir.default.8871.2.1
.dir.default.8871.2.2
.dir.default.8871.2.3
.dir.default.8871.2.4
.dir.default.8871.2.5
.dir.default.8871.2.6
.dir.default.8871.2.7

.dir.default.8172.22.0
.dir.default.8172.22.1
.dir.default.8172.22.2
.dir.default.8172.22.3
.dir.default.8172.22.4
.dir.default.8172.22.5
.dir.default.8172.22.6
.dir.default.8172.22.7

.dir.default.8157.4.0
.dir.default.8157.4.1
.dir.default.8157.4.2
.dir.default.8157.4.3
.dir.default.8157.4.4
.dir.default.8157.4.5
.dir.default.8157.4.6
.dir.default.8157.4.7

.dir.default.8865.1.0
.dir.default.8865.1.1
.dir.default.8865.1.2
.dir.default.8865.1.3
.dir.default.8865.1.4
.dir.default.8865.1.5
.dir.default.8865.1.6
.dir.default.8865.1.7

这个地方要研究的是,每个dir对象,对应的是哪一个BUCKET。在上文中我们在.rgw中看到如下信息

.bucket.meta.down-update.app.com:default.8172.22
.bucket.meta.down.app.com:default.8157.4

BUCKET:down-update.app.com 对应的编号为 default.8172.22 bUCKET:down.app.com对应编号是:default.8157.4

通过这个,我们就可以将BUCKET信息和INDEX中的dir信息关联起来。

下面我要研究的是,INDEX信息里面究竟放的是什么

rados -p .rgw.buckets.app.download.index listomapvals

其中存放的都是这些信息
cf/ts/tcls_verify/600/rez/UI/Achieve/Mark/23x26/S_COMBAT_Base_11_4.tga
value: (258 bytes) :
0000 : 08 03 fc 00 00 00 46 00 00 00 63 66 2f 74 73 2f : ......F...cf/ts/
0010 : 74 63 6c 73 5f 76 65 72 69 66 79 2f 36 30 30 2f : tcls_verify/600/
0020 : 72 65 7a 2f 55 49 2f 41 63 68 69 65 76 65 2f 4d : rez/UI/Achieve/M
0030 : 61 72 6b 2f 32 33 78 32 36 2f 53 5f 43 4f 4d 42 : ark/23x26/S_COMB
0040 : 41 54 5f 42 61 73 65 5f 31 31 5f 34 2e 74 67 61 : AT_Base_11_4.tga
0050 : da 01 00 00 00 00 00 00 01 04 03 69 00 00 00 01 : ...........i....
0060 : 89 06 00 00 00 00 00 00 f3 ec 52 57 00 00 00 00 : ..........RW....
0070 : 20 00 00 00 32 37 38 30 36 62 33 61 65 65 38 61 :  ...27806b3aee8a
0080 : 39 37 33 62 37 38 34 61 30 64 36 35 66 65 32 39 : 973b784a0d65fe29
0090 : 37 61 63 38 10 00 00 00 74 65 6e 63 65 6e 74 2d : 7ac8....tencent-
00a0 : 64 6f 77 6e 6c 6f 61 64 10 00 00 00 74 65 6e 63 : download....tenc
00b0 : 65 6e 74 2d 64 6f 77 6e 6c 6f 61 64 00 00 00 00 : ent-download....
00c0 : 89 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
00d0 : 01 01 04 00 00 00 11 82 da 01 82 9c 35 13 00 00 : ............5...
00e0 : 00 64 65 66 61 75 6c 74 2e 38 31 36 30 2e 31 35 : .default.8160.15
00f0 : 33 33 36 31 00 00 00 00 00 00 00 00 00 00 00 00 : 3361............
0100 : 00 00                                           : ..

这些二进制对应的信息其实是这样的格式。 包含了文件的KEY,owner, owner_display_name, size, time, etag等内容。

#radosgw-admin bucket list --bucket=down.app.com  
{
        "name": "cf\/full\/CrossFire_OBV231_Full.exe",
        "instance": "",
        "namespace": "",
        "owner": "app-download",
        "owner_display_name": "app-download",
        "size": 1564956326,
        "mtime": "2016-06-04 17:31:01.000000Z",
        "etag": "f71cd24f5ca7d661a4c44faed925fa80-100",
        "content_type": "",
        "tag": "default.8193.647053",
        "flags": 0
    }

6.2 数据信息

.rgw.buckets.zj.app中存放的是实际数据,通过ls命令可以看到对象的oid信息,通过这些OID以及CRUSHMAP算法,可定位到对象所在的物理位置。从而进行文件读写。 部分示例信息 从中可以看到所属BUCKET的编号信息(default.8154.4)即OID信息。

[root@ceph4 ~]# rados -p .rgw.buckets.app.download ls | grep CrossFire_OBV354_Full.exe
default.8157.4__shadow_cf/full/CrossFire_OBV354_Full.exe.2~4VZa_ly8gX76_AMjDB2UCXC_0FpFG8r.96_2
default.8157.4__shadow_cf/full/CrossFire_OBV354_Full.exe.2~4VZa_ly8gX76_AMjDB2UCXC_0FpFG8r.145_3
.....

7.集群资源使用情况

集群使用情况氛围两种,一种是集群整体使用情况,一种是单个BUCKET的使用情况。 整体使用情况可以通过ceph df命令看到各POOL的使用情况。但是单个BUCKET的使用情况要用如下命令 其中包含了BUCKET的使用统计情况以及对象数量。这些信息就是存放在.usage pool中。

[root@ceph4 ]# radosgw-admin bucket stats --bucket=down.app.com

 "usage": {
        "rgw.main": {
            "size_kb": 1837686079,
            "size_kb_actual": 1838258768,
            "num_objects": 262774
        },
        "rgw.multimeta": {
            "size_kb": 0,
            "size_kb_actual": 0,
            "num_objects": 13
        }
    },

8 .资源删除

在我们删除文件时,并不是立刻删除文件,而是先标记文件删除,根据配置文件的设置参数,进行异步删除,在.rgw.gc中记录的就是文件的待删除任务。 关于Ceph中的任务删除详细信息,可以参考Ceph radosgw gc 的处理过程

说明

.log .intent-log内部的内容,我还没有完全搞清楚,待补充。

© 著作权归作者所有

西昆仑

西昆仑

粉丝 137
博文 141
码字总数 102735
作品 0
南京
高级程序员
私信 提问
RGW S3 User解析

一、RGW S3 User使用的类关系图。 clsuserheader和clsuserbucketentry从用户角度看到用户所拥有的buckets信息,这两个对象(其中clsuserbucketentry以数组的形式出现)需要保存在ceph集群中。...

linuxhunter
2016/04/15
405
0
利用bucket localtion实现rgw集群扩容

扩容思路:ceph集群容量不足的时候,新加的OSD组成新的pool,制定新的rule规则,新建的bucket都存放在这些新加入的pool里面,注意扩容仅限于新加的bucket,已有的bucket扩容不适用。 1.新建p...

秦牧羊
2016/07/07
506
1
Ceph 11.1.0 发布,分布式存储系统

Ceph 11.1.0 发布了。Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业之后,Sage开始全职投入到Ceph开 发...

王练
2016/12/13
1K
0
Ceph中查找BUCKET INDEX所在位置的方法

1.引言 本文说明了如何查看每个BUCKET对应的索引信息,以及所在的OSD位置,为以后运维做参考。 2.实验过程 2.1 罗列出当前系统下所有的bucket信息 上述命令展示了当前Ceph 对象存储系统中涉及...

西昆仑
2016/02/23
1K
2
玩转 Ceph 的正确姿势

玩转 Ceph 的正确姿势 本文先介绍 Ceph, 然后会聊到一些正确使用 Ceph 的姿势;在集群规模小的时候,Ceph 怎么玩都没问题;但集群大了(到PB级别),这些准则可是保证集群健康运行的不二法门...

张立达
2017/05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
9
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
9
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
9
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
11
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部