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.uiddefault.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.uiddefault.rgw.meta プール内の foo.buckets など、USER_ID.buckets という名前のオブジェクトの OMAP にリストされます。これらのオブジェクトには、バケットの一覧表示時、バケットの内容の更新時、およびクォータなどのバケット統計の更新および取得時にアクセスされます。これらのリストは、.rgw プール内のバケットと一貫性が保たれています。

注記

これらの OMAP エントリーの値は、ユーザーに表示されるエンコードされたクラス cls_user_bucket_entry およびネストされたクラス cls_user_bucket を参照してください。

指定のバケットに属するオブジェクトはバケットインデックスに一覧表示されます。インデックスオブジェクトのデフォルトの命名は、default.rgw.buckets.index プールの .dir.MARKER です。

関連情報

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_IDBUCKET_ID ですが、一度生成されたマーカーは再度解析されないため、今後その形式が自由に変更される可能性があります。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.