9.10. Ceph 对象网关数据布局


虽然 RADOS 仅了解具有其扩展属性(xattrs)和对象映射(OMAP)的池和对象,但概念上 Ceph 对象网关将其数据组织为三种不同的类型:

  • 元数据
  • bucket 索引
  • data

元数据

元数据有三个部分:

  • 用户 :保存用户信息。
  • bucket :包含存储桶名称和 bucket 实例 ID 之间的映射。
  • bucket.instance :保存存储桶实例信息。

您可以使用以下命令查看元数据条目:

语法

radosgw-admin metadata get bucket:BUCKET_NAME
radosgw-admin metadata get bucket.instance:BUCKET:BUCKET_ID
radosgw-admin metadata get user:USER
radosgw-admin metadata set user:USER

示例

[ceph: root@host01 /]# radosgw-admin metadata list
[ceph: root@host01 /]# radosgw-admin metadata list bucket
[ceph: root@host01 /]# radosgw-admin metadata list bucket.instance
[ceph: root@host01 /]# radosgw-admin metadata list user

每个元数据条目都保留在单个 RADOS 对象上。

注意

Ceph 对象网关对象可能由多个 RADOS 对象组成,第一个是包含元数据的头,如清单、访问控制列表(ACL)、内容类型、ETag 和用户定义的元数据。元数据存储在 xattrs 中。头还可能包含最多 512 KB 的对象数据,以提高效率和原子性。清单描述各个对象在 RADOS 对象中布局的方式。

bucket 索引

它是不同类型的元数据,并单独保存。bucket 索引在 RADOS 对象中包含键值映射。默认情况下,每个 bucket 是一个 RADOS 对象,但可以在多个 RADOS 对象上对映射进行分片。

映射本身保存在与每个 RADOS 对象关联的 OMAP 中。每个 OMAP 的键是对象的名称,值包含该对象的一些基本元数据,在列出存储桶时显示的元数据。每个 OMAP 均包含一个标头,并在该标头中保留一些存储桶核算元数据,如对象数量、总大小等。

重要

在使用 radosgw-admin 工具时,请确保工具和 Ceph 集群具有相同的版本。支持使用不匹配的版本。

注意

OMAP 是一个键值存储,与对象关联,类似于与 POSIX 文件关联的扩展属性。对象的 OMAP 不物理位于对象的存储中,但其精确实施对 Ceph 对象网关不可见且不可更改。

data

对象数据保存在每个 Ceph 对象网关对象的一个或多个 RADOS 对象中。

9.10.1. 对象查找路径

在访问对象时,REST API 附带三个参数的 Ceph 对象网关:

  • 帐户信息,在 Swift 中有 S3 或帐户名称中的访问密钥
  • 存储桶或容器名称
  • 对象名称或密钥

目前,Ceph 对象网关仅使用帐户信息来查找用户 ID 和 访问控制。它仅使用 bucket 名称和对象键来寻址池中的对象。

帐户信息

Ceph 对象网关中的用户 ID 是一个字符串,通常是来自用户凭证的实际用户名,而不是散列或映射的标识符。

在访问用户数据时,用户记录将从带有 users.uid 命名空间的 default.rgw.meta 池中的对象 USER_ID 加载。.Bucket 名称 They 在带有 root 命名空间的 default.rgw.meta 池中表示。加载存储桶记录,以获取一个标记,它充当存储桶 ID。

对象名称

对象位于 default.rgw.buckets.data 池中。对象名称是 MARKER_KEY,如 default.7593.4_image.png,其中标记为 default.7593.4,键是 image.png。这些串联的名称不会被解析,并且仅传递到 RADOS。因此,选择分隔符并不重要,不会造成不确定。因此,对象名称中允许斜杠,如键。

9.10.1.1. 多个数据池

可以创建多个数据池,使得不同用户的 bucket 默认在不同的 RADOS 池中创建,从而提供必要的扩展。这些池的布局和命名由策略设置控制。

9.10.2. 存储桶和对象列表

属于给定用户的 bucket 在名为 USER_ID.buckets 的对象的 OMAP 中列出,例如 foo.buckets,位于带有 users.uid 命名空间的 default.rgw.meta 池中。在列出存储桶时,在更新存储桶时访问这些对象,并更新和检索存储桶统计信息,如配额。这些列表与 .rgw 池中的 bucket 保持一致。

注意

有关这些 OMAP 条目的值,请参阅用户可见的、编码的类 cls_user _bucket 及其嵌套类 cls_user_bucket

属于给定存储桶的对象列在存储桶索引中。索引对象的默认命名在 default.rgw.buckets.index 池中是 .dir.MARKER

其它资源

9.10.3. 对象网关数据布局参数

这是 Ceph 对象网关的数据布局参数列表。

已知的池:

.rgw.root
每个对象未指定的区域、区域和全局信息记录。
ZONE.rgw.control
notify.N
ZONE.rgw.meta

具有不同元数据的多个命名空间

Namespace: root

BUCKET .bucket.meta.BUCKET:MARKER # see put_bucket_instance_info ()

租户用于忽略存储桶,但不用于 bucket 实例。

示例

.bucket.meta.prodtx:test%25star:default.84099.6
.bucket.meta.testcont:default.4126.1
.bucket.meta.prodtx:testcont:default.84099.4
prodtx/testcont
prodtx/test%25star
testcont

namespace: users.uid

USER 对象中包括每个用户信息 (RGWUserInfo),以及 USER.buckets 对象的 omaps 中的每个用户的存储桶列表。如果非空,USER 可能会包含租户。

示例

prodtx$prodt
test2.buckets
prodtx$prodt.buckets
test2

namespace: users.email
Unimportant
namespace: users.keys

47UA98JSTJZ9YAN3OS3O

这允许 Ceph 对象网关在身份验证过程中按其访问密钥查找用户。

namespace: users.swift
test:tester
ZONE.rgw.buckets.index
对象名为 .dir.MARKER,每个对象都包含存储桶索引。如果索引被分片,每个分片会在标记后附加分片索引。
ZONE.rgw.buckets.data

default.7593.4__shadow_.488urDFerTYXavx4yAd-Op8mxehnvTI_1 MARKER_KEY

一个标记示例为 default.16004.1default.7593.4。当前格式为 ZONE.INSTANCE_ID.BUCKET_ID,但生成后,不会再次解析标记,因此其格式可能会在以后自由更改。

其它资源

  • 如需了解更多详细信息,请参阅 Red Hat Ceph Storage 对象网关指南中的 Ceph 对象网关数据布局
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.