本篇文章给大家分享的是有关Ceph RGW中Pool的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
在使用Ceph的radosgw服务时,会通过create pool命令创建一系列的pool,服务于radosgw.我想在本文中分析出各个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信息,我在此处说明各自功用。
在.rgw.root中,存放的是集群命名空间信息。我使用默认配置。应用上可以配置集群的region, zone信息,并使用radosgw-agent实现region中zone之间的信息同步。这是顶层的划分。
[root@ceph5 ~]# 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策略的时候需要修改。
创建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 ls app app-download [root@ceph5 ~]# rados -p .users ls 5HJ1G*****84FKIQY15W CE4R2*****AZWHS2MRQ5 [root@ceph5 ~]# rados -p .users.email ls
在.rgw中,通过命令可以看到BUCKET名称及其编号
[root@ceph5 ~]#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
在我对用户信息进行个性化配置时,配置了某个用户的数据使用哪个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中看出一些端倪。
我对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 }
.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.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 .....
集群使用情况氛围两种,一种是集群整体使用情况,一种是单个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 } },
在我们删除文件时,并不是立刻删除文件,而是先标记文件删除,根据配置文件的设置参数,进行异步删除,在.rgw.gc中记录的就是文件的待删除任务。 关于Ceph中的任务删除详细信息,可以参考Ceph radosgw gc 的处理过程
以上就是Ceph RGW中Pool的作用是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。