8.10. Ceph Object Gateway データレイアウト
RADOS は拡張属性 (xattrs
) とオブジェクトマップ (OMAP) を持つプールとオブジェクトしか認識しませんが、概念的には、Ceph Object Gateway はそのデータを 3 つの異なる種類に編成します。
- metadata
- バケットインデックス
- data
メタデータ
メタデータには 3 つのセクションがあります。
-
user
: ユーザー情報を保持します。 -
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 Object Gateway オブジェクトは、いくつかの RADOS オブジェクトで設定される場合があります。最初のオブジェクトは、マニフェスト、アクセス制御リスト (ACL)、コンテンツタイプ、ETag、およびユーザー定義のメタデータなどのメタデータなどの Head です。メタデータは xattrs
に保存されます。また、効率性とアトミック性を確保するために、最大 512 KB のオブジェクトデータが含まれる場合もあります。マニフェストには、各オブジェクトが RADOS オブジェクトでどのように配置されているかが記述されています。
バケットインデックス
これは別の種類のメタデータであり、個別に保持されます。バケットインデックスは RADOS オブジェクトのキーと値マップを保持します。デフォルトでは、バケットごとに 1 つの RADOS オブジェクトですが、複数の RADOS オブジェクトにわたってマップをシャードすることができます。
マップ自体は、各 RADOS オブジェクトに関連付けられた OMAP に保持されます。各 OMAP のキーはオブジェクトの名前であり、値にはそのオブジェクトの基本的なメタデータ (バケットを一覧表示するときに表示されるメタデータ) が保持されます。各 OMAP はヘッダーを保持し、オブジェクトの数、合計サイズなど、そのヘッダーにバケットアカウンティングメタデータを保持します。
radosgw-admin
ツールを使用する場合は、ツールと Ceph クラスターが同じバージョンであることを確認してください。一致しないバージョンの使用はサポートされていません。
OMAP は、拡張属性が POSIX ファイルに関連付けられているのと同様に、オブジェクトに関連付けられたキー値ストアです。オブジェクトの OMAP はオブジェクトのストレージに物理的に配置されていませんが、その正確な実装は不可視であり、Ceph Object Gateway には重要ではありません。
データ
オブジェクトデータは、各 Ceph Object Gateway オブジェクトの 1 つ以上の RADOS オブジェクトに保持されます。
8.10.1. オブジェクトルックアップパス
オブジェクトにアクセスする場合、REST API は 3 つのパラメーターを持つ Ceph Object Gateway に送られます。
- S3 のアクセスキーまたは Swift のアカウント名を持つアカウント情報
- バケットまたはコンテナー名
- オブジェクト名またはキー
現在、Ceph Object Gateway はアカウント情報のみを使用してユーザー ID とアクセス制御を検索します。バケット名とオブジェクトキーのみを使用してプールのオブジェクトに対応します。
アカウント情報
Ceph Object Gateway のユーザー ID は文字列であり、通常はユーザー認証情報からの実際のユーザー名であり、ハッシュまたはマップされた識別子ではありません。
ユーザーのデータにアクセスする場合、ユーザーレコードは namespace が users.uid
の default.rgw.meta
プールのオブジェクト USER_ID
から読み込まれます。.バケット名 default.rgw.meta
プールで root
名前空間で表現されます。バケット ID として機能するマーカーを取得するために、バケットレコードがロードされます。
オブジェクト名
オブジェクトは default.rgw.buckets.data
プールにあります。オブジェクト名は MARKER_KEY
です。たとえば、default.7593.4_image.png
の場合、マーカーは default.7593.4
で、キーは image.png
です。これらの連結された名前は解析されず、RADOS のみに渡されます。したがって、セパレーターの選択は重要ではなく、あいまいさを生じさせることはありません。同じ理由で、キーなどのオブジェクト名ではスラッシュを使用できます。
8.10.1.1. 複数のデータプール
複数のデータプールを作成して、異なるユーザーのバケットがデフォルトで異なる RADOS プールに作成されるようにすることで、必要なスケーリングを実現できます。これらのプールのレイアウトと命名は、ポリシー
設定によって制御されます。
8.10.2. バケットおよびオブジェクトの一覧
特定のユーザーに属するバケットは、namespace が users.uid
の default.rgw.meta
プール内の foo.buckets
など、USER_ID.buckets
という名前のオブジェクトの OMAP にリストされます。これらのオブジェクトには、バケットの一覧表示時、バケットの内容の更新時、およびクォータなどのバケット統計の更新および取得時にアクセスされます。これらのリストは、.rgw
プール内のバケットと一貫性が保たれています。
これらの OMAP エントリーの値は、ユーザーに表示されるエンコードされたクラス cls_user_bucket_entry
およびネストされたクラス cls_user_bucket
を参照してください。
指定のバケットに属するオブジェクトはバケットインデックスに一覧表示されます。インデックスオブジェクトのデフォルトの命名は、default.rgw.buckets.index
プールの .dir.MARKER
です。
関連情報
- 詳細は、Red Hat Ceph Storage Object Gateway ガイド の バケットインデックスの再シャーディングの設定 のセクションを参照してください。
8.10.3. Object Gateway データレイアウトパラメーター
これは、Ceph Object Gateway のデータレイアウトパラメーターの一覧です。
既知のプール:
.rgw.root
- オブジェクトごとに 1 つの、指定されていない地域、ゾーン、およびグローバル情報レコード。
ZONE.rgw.control
- notify.N
ZONE.rgw.meta
さまざまな種類のメタデータを持つ複数の namespace
- Namespace: root
BUCKET .bucket.meta.BUCKET:MARKER # see put_bucket_instance_info()
テナントはバケットを明確にするために使用されますが、バケットインスタンスには使用されません。
例
.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
オブジェクトの omap 内のバケットのユーザーごとのリストの両方が含まれます。空でない場合には、USER
にそのテナントが含まれる場合があります。例
prodtx$prodt test2.buckets prodtx$prodt.buckets test2
- namespace: users.email
- Unimportant
- namespace: users.keys
47UA98JSTJZ9YAN3OS3O
これにより、Ceph Object Gateway は認証中にアクセスキーでユーザーを検索できます。
- 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.1
またはdefault.7593.4
です。現在の形式はZONE です。INSTANCE_ID。BUCKET_ID
ですが、一度生成されたマーカーは再度解析されないため、今後その形式が自由に変更される可能性があります。
関連情報
- 詳細は、Red Hat Ceph Storage Object Gateway ガイド の Ceph Object Gateway データレイアウト を参照してください。