ceph集群中的pools
$ rados lspools
.rgw
.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid
.rgw.buckets.extra
查看ceph rgw中注册的用户:
每个用户在.users.uid pool 中都对应两个对象:< user_name > < user_name >_buckets
$ rados -p .users.uid ls
unitedstack
unitedstack.buckets
在.users中分别为用户的s3账号的的access_key创建一个对象,对象名是用access_key
$ rados -p .users ls
7EJLAI5N1HNG3NGWFYP5
在.users.uid pool 分别为每个用户创建两个对象,一个表示用户unitedstack本身,另一个unitedstack.buckets 用于在omap中保存这个用户创建的buckets。
查看用户创建的buckets
$ rados -p .users.uid listomapkeys unitedstack.buckets
yankun
用户unitedstack创建的bucket名字是yankun。
在.rgw pool中也为bucket创建了两个对象一个:一个是< bucket_name > 另一个是.bucket.meta.< bucket_name >.< marker > 这个marker是创建bucket中生成的。
同时用户创建的buckets在.rgw.buckets.index都对应一个object对象,其命名是格式:.dir.< marker >
$ rados -p .rgw ls | grep yankun
yankun
.bucket.meta.yankun:default.51486387.43
$ rados -p .rgw.buckets.index ls | grep default.51486387.43
.dir.default.51486387.43
在.rgw.buckes.index中每个对象的omap中保存着对应bucket中存放的对象。
$ rados -p .rgw.buckets.index listomapkeys .dir.default.51486387.43
osd-test
rgw.conf
s3test.py
test.txt
$ s3cmd ls s3://yankun
2016-04-16 07:21 31457280 s3://yankun/osd-test
2016-04-15 14:14 348 s3://yankun/rgw.conf
2016-04-15 14:14 573 s3://yankun/s3test.py
2016-04-15 14:14 14 s3://yankun/test.txt
rgw中bucket中的数据对象都是保存在.rgw.buckets中,其命名方式格式:< bucket_id >_< key >, key 是对象的名字,bucket_id(bucket marker) 对应bucket的元信息。
其中每个对象都分为两部分:一个是head < bucket_id >key 另个是< bucket_id >_shadow< manifest-prefix >_< num > manifest-prefix来源与.rgw.buckets pool中head对象的xattr num是一个从1开始的递增的序列号。
$ rados -p .rgw.buckets listxattr default.51486387.43_osd-test
user.rgw.acl
user.rgw.content_type
user.rgw.etag
user.rgw.idtag
user.rgw.manifest
user.rgw.x-amz-content-sha256
user.rgw.x-amz-date
user.rgw.x-amz-meta-s3cmd-attrs
$ rados -p .rgw.buckets getxattr default.51486387.43_osd-test user.rgw.manifest
���yankuosd-tesosd-testtyankun
.rgw.bucketsdefault.51486387.43default.51486387.43.rgw.buckets.index.rgw.buckets.extra*osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA �@tyankun
.rgw.bucketsdefault.51486387.43default.51486387.43.rgw.buckets.index.rgw.buckets.extra
$ rados -p .rgw.buckets ls | grep default.51486387.43
default.51486387.43_rgw.conf
default.51486387.43__shadow_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.2_1
default.51486387.43__multipart_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.1
default.51486387.43__shadow_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.2_2
default.51486387.43_osd-test
default.51486387.43__shadow_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.1_3
default.51486387.43__shadow_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.1_2
default.51486387.43__shadow_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.2_3
default.51486387.43_s3test.py
default.51486387.43__shadow_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.1_1
default.51486387.43__multipart_osd-test.2~toxkNCtoYExGQlJNHDqgbbv84NsfwtA.2
default.51486387.43_test.txt
注:这里的object有rados层面的object和rgw中定义的object。