Ceph RGW中Pool的作用是什么
本篇文章给大家分享的是有关Ceph RGW中Pool的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
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@ceph5 ~]# rados -p .rgw.root lszone_info.mainregion_mapdefault.regionregion_info.defaultzone_info.defaultregion_info.
可以通过如下命令获取region,zone信息,也可以编辑配置文件,重新设置。
radosgw-admin region get >> region.conf.jsonradosgw-admin zone get >> zone.conf.jsonradosgw-admin region set << region.conf.jsonradosgw-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@ceph5 ~]# rados -p .users.uid lsappapp-download[root@ceph5 ~]# rados -p .users ls5HJ1G*****84FKIQY15WCE4R2*****AZWHS2MRQ5[root@ceph5 ~]# rados -p .users.email ls
5.BUCKET管理
在.rgw中,通过命令可以看到BUCKET名称及其编号
[root@ceph5 ~]#rados -p .rgw lsdown-update.app.com.bucket.meta.down-update.app.com:default.8172.22.bucket.meta.down.app.com:default.8157.4down.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.tgavalue: (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/M0030 : 61 72 6b 2f 32 33 78 32 36 2f 53 5f 43 4f 4d 42 : ark/23x26/S_COMB0040 : 41 54 5f 42 61 73 65 5f 31 31 5f 34 2e 74 67 61 : AT_Base_11_4.tga0050 : 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 : ...27806b3aee8a0080 : 39 37 33 62 37 38 34 61 30 64 36 35 66 65 32 39 : 973b784a0d65fe290090 : 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....tenc00b0 : 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.1500f0 : 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@ceph5 ~]# rados -p .rgw.buckets.app.download ls | grep CrossFire_OBV354_Full.exedefault.8157.4__shadow_cf/full/CrossFire_OBV354_Full.exe.2~4VZa_ly8gX76_AMjDB2UCXC_0FpFG8r.96_2default.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@ceph5 ]# 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 的处理过程
以上就是Ceph RGW中Pool的作用是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。