検索

7.4. バケットインデックスのリシャーディングを設定する

download PDF

ストレージ管理者は、単一サイトおよびマルチサイトデプロイメントでバケットインデックスのリシャーディングを設定して、パフォーマンスを向上させることができます。

手動でオフラインで、または動的にオンラインで、バケットインデックスをリシャーディングできます。

7.4.1. バケットインデックスのリシャーディング

Ceph Object Gateway は、デフォルトで .rgw.buckets.index パラメーターに設定されているインデックスプールにバケットインデックスデータを保存します。クライアントが、バケットあたりの最大オブジェクト数のクォータを設定せずに 1 つのバケットに多数のオブジェクトを配置すると、インデックスプールによってパフォーマンスが大幅に低下する可能性があります。

  • バケットインデックスのリシャーディングは、バケットごとに多数のオブジェクトを追加する場合のパフォーマンスのボトルネックを防ぎます。
  • 新しいバケットのバケットインデックスのリシャーディングを設定したり、既存のバケットのバケットインデックスを変更したりできます。
  • 計算されたシャード数に最も近い素数としてシャード数を取得する必要があります。素数であるバケットインデックスシャードは、シャード間で均等に分散されたバケットインデックスエントリーでより適切に機能する傾向があります。
  • バケットインデックスは、手動または動的にリシャーディングできます。

    バケットインデックスを動的にリシャーディングするプロセス中に、すべての Ceph Object Gateway バケットが定期的にチェックされ、リシャーディングが必要なバケットが検出されます。バケットが rgw_max_objs_per_shard パラメーターで指定された値よりも大きい場合、Ceph Object Gateway はバックグラウンドでバケットを動的に再シャードします。rgw_max_objs_per_shard のデフォルト値は、シャードごとに 100k オブジェクトです。バケットインデックスのリシャーディングは、ゾーンまたはゾーングループを変更しなくても、アップグレードされた単一サイト設定で期待どおりに動的に機能します。シングルサイト設定は、以下のいずれかです。

    • レルムのないデフォルトのゾーン設定。
    • レルムが 1 つ以上あるデフォルト以外の設定。
    • 複数レルムのシングルサイト設定。

7.4.2. バケットインデックスの回復

bucket_index_max_shards = 0 で作成されたバケットを再シャーディングすると、バケットのメタデータが削除されます。ただし、影響を受けたバケットを回復することにより、バケットインデックスを復元できます。

bucket_index_max_shards = 0 で作成されたバケットを再シャーディングすると、バケットのメタデータが削除されます。ただし、影響を受けたバケットを回復することにより、バケットインデックスを復元できます。

/usr/bin/rgw-restore-bucket-index ツールは、/tmp ディレクトリーに一時ファイルを作成します。これらの一時ファイルは、以前のバケットのバケットオブジェクト数に基づいてスペースを消費します。1000 万を超えるオブジェクトを含む以前のバケットでは、/tmp ディレクトリーに 4 GB を超える空き領域が必要です。/tmp のストレージ容量が不足すると、ツールは次のメッセージを表示して失敗します。

ln: failed to access '/tmp/rgwrbi-object-list.4053207': No such file or directory

一時オブジェクトが削除されました。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway が少なくとも 2 つのサイトにインストールされている。
  • jq パッケージがインストールされている。

手順

  • バケットインデックスのリカバリーを実行するには、次の 2 つの手順のいずれかを実行します。

    • radosgw-admin object reindex --bucket BUCKET_NAME --object OBJECT_NAME コマンドを実行します。
    • スクリプト /usr/bin/rgw-restore-bucket-index -b BUCKET_NAME -p DATA_POOL_NAME を実行します。

      [root@host01 ceph]# /usr/bin/rgw-restore-bucket-index -b bucket-large-1 -p local-zone.rgw.buckets.data
      
      marker is d8a347a4-99b6-4312-a5c1-75b83904b3d4.41610.2
      bucket_id is d8a347a4-99b6-4312-a5c1-75b83904b3d4.41610.2
      number of bucket index shards is 5
      data pool is local-zone.rgw.buckets.data
      NOTICE: This tool is currently considered EXPERIMENTAL.
      The list of objects that we will attempt to restore can be found in "/tmp/rgwrbi-object-list.49946".
      Please review the object names in that file (either below or in another window/terminal) before proceeding.
      Type "proceed!" to proceed, "view" to view object list, or "q" to quit: view
      Viewing...
      Type "proceed!" to proceed, "view" to view object list, or "q" to quit: proceed!
      Proceeding...
      NOTICE: Bucket stats are currently incorrect. They can be restored with the following command after 2 minutes:
          radosgw-admin bucket list --bucket=bucket-large-1 --allow-unordered --max-entries=1073741824
      Would you like to take the time to recalculate bucket stats now? [yes/no] yes
      Done
      
      real    2m16.530s
      user    0m1.082s
      sys    0m0.870s

注記
  • このツールは、バージョン管理されたバケットに対しては機能しません。

    [root@host01 ~]# time rgw-restore-bucket-index  --proceed serp-bu-ver-1 default.rgw.buckets.data
    NOTICE: This tool is currently considered EXPERIMENTAL.
    marker is e871fb65-b87f-4c16-a7c3-064b66feb1c4.25076.5
    bucket_id is e871fb65-b87f-4c16-a7c3-064b66feb1c4.25076.5
    Error: this bucket appears to be versioned, and this tool cannot work with versioned buckets.
  • ツールの範囲は単一のサイトのみに限定され、マルチサイトではありません。つまり、サイト 1 で rgw-restore-bucket-index ツールを実行すると、サイト 2 のオブジェクトは復元されません。また、その逆も同様です。マルチサイトでは、回復ツールとオブジェクトの再インデックスコマンドはバケットの両方のサイトで実行する必要があります。

7.4.3. バケットインデックスのリシャーディングの制限

重要

注意して、以下の制限を使用してください。お使いのハードウェアの選択には影響があるため、この要件を Red Hat アカウントチームと常に相談してください。

  • リシャーディングが必要になる前の 1 つのバケット内のオブジェクトの最大数: バケットインデックスシャードごとに最大 102,400 個のオブジェクトを使用します。リシャーディングを最大限に活用して並列処理を最大化するには、Ceph Object Gateway バケットインデックスプールに十分な数の OSD を提供します。この並列化は、Ceph Object Gateway インスタンスの数に応じてスケーリングされ、順序が適切なインデックスシャードの列挙を数列に置き換えます。デフォルトのロックタイムアウトが 60 秒から 90 秒に延長されました。
  • シャード化の使用時の最大オブジェクト数: 以前のテストに基づき、現在サポートされているバケットインデックスシャードの数は 65,521 です。
  • 他のゾーンが追いつく前にバケットを 3 回再シャーディングできます。古い世代が同期されるまで、再シャーディングは推奨されません。以前の再シャーディングからの約 4 世代のバケットがサポートされます。制限に達すると、古いログ世代の少なくとも 1 つが完全にトリミングされるまで、動的再シャーディングはバケットを再度再シャーディングしません。コマンド radosgw-admin bucket reshard を使用すると、以下のエラーが発生します。

    Bucket _BUCKET_NAME_ already has too many log generations (4) from previous reshards that peer zones haven't finished syncing.
    Resharding is not recommended until the old generations sync, but you can force a reshard with `--yes-i-really-mean-it`.

7.4.4. シンプルなデプロイでのバケットインデックスのリシャーディングの設定

すべての新規バケットでバケットインデックスリシャードを有効にし、設定するには、rgw_override_bucket_index_max_shards パラメーターを使用します。

パラメーターは以下のいずれかの値に設定できます。

  • 0 を指定すると、バケットインデックスのシャーディングが無効になります。これがデフォルト値です。
  • 0 より大きい値を有効にすると、バケットシャード化が有効になり、シャードの最大数が設定されます。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway が少なくとも 2 つのサイトにインストールされている。

手順

  1. 推奨されるシャード数を計算します。

    number of objects expected in a bucket / 100,000
    注記

    現在サポートされているバケットインデックスシャードの最大数は 65,521 です。

  2. rgw_override_bucket_index_max_shards パラメーターを適宜設定します。

    構文

    ceph config set client.rgw rgw_override_bucket_index_max_shards VALUE

    VALUE を、計算されたシャードの推奨数に置き換えます。

    [ceph: root@host01 /]# ceph config set client.rgw rgw_override_bucket_index_max_shards 12

    • Ceph Object Gateway のすべてのインスタンスに対してバケットインデックスのリシャーディングを設定するには、rgw_override_bucket_index_max_shards パラメーターを global オプションで設定します。
    • Ceph Object Gateway の特定のインスタンスに対してのみバケットインデックスのリシャーディングを設定するには、インスタンスの下に rgw_override_bucket_index_max_shards パラメーターを追加します。
  3. クラスター内のすべてのノードで Ceph Object Gateways を再起動して、有効にします。

    構文

    ceph orch restart SERVICE_TYPE

    [ceph: root#host01 /]# ceph orch restart rgw

7.4.5. マルチサイトデプロイメントでのバケットインデックスのリシャーディングの設定

マルチサイトデプロイメントでは、フェイルオーバーを管理するために、ゾーンごとに異なる index_pool 設定を使用できます。1 つのゾーングループ内のゾーンに対して一貫したシャード数を設定するには、そのゾーングループの設定で bucket_index_max_shards パラメーターを設定します。bucket_index_max_shards パラメーターのデフォルト値は 11 です。

パラメーターは以下のいずれかの値に設定できます。

  • バケットインデックスシャード化を無効にする場合は 0
  • 0 より大きい値を有効にすると、バケットシャード化が有効になり、シャードの最大数が設定されます。
注記

SSD ベースの OSD の CRUSH ルールセットにインデックスプール (該当する場合は各ゾーン) をマッピングすることも、バケットインデックスのパフォーマンスに役立つ可能性があります。詳細は、パフォーマンスドメインの確立 セクションを参照してください。

重要

マルチサイトデプロイメントで同期の問題を回避するには、バケットに 3 世代を超えるギャップがないようにする必要があります。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway が少なくとも 2 つのサイトにインストールされている。

手順

  1. 推奨されるシャード数を計算します。

    number of objects expected in a bucket / 100,000
    注記

    現在サポートされているバケットインデックスシャードの最大数は 65,521 です。

  2. ゾーングループ設定を zonegroup.json ファイルにデプロイメントします。

    [ceph: root@host01 /]# radosgw-admin zonegroup get > zonegroup.json

  3. zonegroup.json ファイルで、名前付きゾーンごとに bucket_index_max_shards パラメーターを設定します。

    構文

    bucket_index_max_shards = VALUE

    VALUE を、計算されたシャードの推奨数に置き換えます。

    bucket_index_max_shards = 12

  4. ゾーングループをリセットします。

    [ceph: root@host01 /]# radosgw-admin zonegroup set < zonegroup.json

  5. 期間を更新します。

    [ceph: root@host01 /]# radosgw-admin period update --commit

  6. リシャーディングが完了したかどうかを確認します。

    構文

    radosgw-admin reshard status --bucket BUCKET_NAME

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data

検証

  • ストレージクラスターの同期ステータスを確認します。

    [ceph: root@host01 /]# radosgw-admin sync status

7.4.6. バケットインデックスの動的リシャーディング

バケットをリシャーディングキューに追加することで、バケットインデックスを動的にリシャーディングできます。リシャーディングされる予定です。リシャードスレッドはバックグラウンドで実行され、スケジュールされたリシャーディングを一度に 1 つずつ実行します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway が少なくとも 2 つのサイトにインストールされている。

手順

  1. rgw_dynamic_resharding パラメーターを true に設定します。

    [ceph: root@host01 /]# radosgw-admin period get

  2. オプション: 次のコマンドを使用して、Ceph 設定をカスタマイズします。

    構文

    ceph config set client.rgw OPTION VALUE

    OPTION を次のオプションに置き換えます。

    • rgw_reshard_num_logs: 再シャードログのシャードの数。デフォルト値は 16 です。
    • rgw_reshard_bucket_lock_duration: リシャード中にバケットのロックの期間。デフォルト値は 360 秒です。
    • rgw_dynamic_resharding: 動的リシャードを有効または無効にします。デフォルト値は true です。
    • rgw_max_objs_per_shard: シャードごとのオブジェクトの最大数。デフォルト値は、シャードごとに 100000 オブジェクトです。
    • rgw_reshard_thread_interval: 再シャード処理のラウンド間の最大時間。デフォルト値は 600 秒です。

    [ceph: root@host01 /]# ceph config set client.rgw rgw_reshard_num_logs 23

  3. リシャーディングキューにバケットを追加します。

    構文

    radosgw-admin reshard add --bucket BUCKET --num-shards NUMBER

    [ceph: root@host01 /]# radosgw-admin reshard add --bucket data --num-shards 10

  4. リシャーディングキューを一覧表示します。

    [ceph: root@host01 /]# radosgw-admin reshard list

  5. バケットログの世代とシャードを確認します。

    [ceph: root@host01 /]# radosgw-admin bucket layout --bucket data
    {
        "layout": {
            "resharding": "None",
            "current_index": {
                "gen": 1,
                "layout": {
                    "type": "Normal",
                    "normal": {
                        "num_shards": 23,
                        "hash_type": "Mod"
                    }
                }
            },
            "logs": [
                {
                    "gen": 0,
                    "layout": {
                        "type": "InIndex",
                        "in_index": {
                            "gen": 0,
                            "layout": {
                                "num_shards": 11,
                                "hash_type": "Mod"
                            }
                        }
                    }
                },
                {
                    "gen": 1,
                    "layout": {
                        "type": "InIndex",
                        "in_index": {
                            "gen": 1,
                            "layout": {
                                "num_shards": 23,
                                "hash_type": "Mod"
                            }
                        }
                    }
                }
            ]
        }
    }

  6. バケットの再シャーディングステータスを確認するには、以下のコマンドを実行します。

    構文

    radosgw-admin reshard status --bucket BUCKET

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data

  7. リシャーディングキューのエントリーをすぐに処理します。

    [ceph: root@host01 /]# radosgw-admin reshard process
  8. 保留中のバケットのリシャーディングをキャンセルします:

    警告

    保留中 の再シャード操作のみをキャンセルできます。継続中 の再シャード操作をキャンセルしないでください。

    構文

    radosgw-admin reshard cancel --bucket BUCKET

    [ceph: root@host01 /]# radosgw-admin reshard cancel --bucket data

検証

  • バケットの再シャーディングステータスを確認するには、以下のコマンドを実行します。

    構文

    radosgw-admin reshard status --bucket BUCKET

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data

関連情報

7.4.7. マルチサイト設定でバケットインデックスを動的にリシャーディングする

Red Hat Ceph Storage 5.3 は、マルチサイト設定でのバケットインデックスの動的再シャーディングをサポートします。この機能により、オブジェクトのレプリケーションを中断せずに、マルチサイト設定でバケットを再シャーディングできます。rgw_dynamic_resharding を有効にすると、各ゾーンで個別に実行され、ゾーンで同じバケットに異なるシャード数が選択される可能性があります。

従う必要があるこれらの手順は、既存の Red Hat Ceph Storage クラスター 専用 です。ストレージクラスターのアップグレード後に、既存のゾーンおよびゾーングループで resharding 機能を手動で有効にする必要があります。

注記

Red Hat Ceph Storage 5.3 の新規インストールでは、ゾーンおよびゾーングループの resharding 機能がデフォルトでサポートされ、有効にされます。

注記

他のゾーンが追い付く前に、バケットを 3 回再シャーディングできます。詳細は、バケットインデックスのリシャーディングの制限 を参照してください。

注記

バケットが作成され、動的にリシャーディングするためのオブジェクト数のしきい値を超えてアップロードされた場合、リシャーディングプロセスを開始するには、引き続き古いバケットに I/O を書き込む必要があります。

前提条件

  • 両方のサイトの Red Hat Ceph Storage クラスターは、最新バージョンにアップグレードされている。
  • 両方のサイトで有効になっているすべての Ceph Object Gateway デーモンは、最新バージョンにアップグレードされている。
  • すべてのノードへの root レベルのアクセス。

手順

  1. ゾーングループで resharding が有効になっているかどうかを確認します。

    [ceph: root@host01 /]# radosgw-admin sync status

    ゾーングループでの再シャーディング用に zonegroup features enabled が有効化されていない場合は、手順を続行してください。

  2. Ceph Object Gateway がインストールされているマルチサイト設定のすべてのゾーングループで、resharding 機能を有効にします。

    構文

    radosgw-admin zonegroup modify --rgw-zonegroup=ZONEGROUP_NAME --enable-feature=resharding

    [ceph: root@host01 /]# radosgw-admin zonegroup modify --rgw-zonegroup=us --enable-feature=resharding

  3. 期間を更新してコミットします。

    [ceph: root@host01 /]# radosgw-admin period update --commit

  4. Ceph Object Gateway がインストールされているマルチサイト設定のすべてのゾーンで、resharding 機能を有効にします。

    構文

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --enable-feature=resharding

    [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east --enable-feature=resharding

  5. 期間を更新してコミットします。

    [ceph: root@host01 /]# radosgw-admin period update --commit

  6. ゾーンおよびゾーングループで、resharding 機能が有効化されていることを確認します。各ゾーンが supported_features をリスト表示し、ゾーングループで enabled_features がリストされていることを確認できます。

    [ceph: root@host01 /]# radosgw-admin period get
    
    "zones": [
                        {
                            "id": "505b48db-6de0-45d5-8208-8c98f7b1278d",
                            "name": "us_east",
                            "endpoints": [
                                "http://10.0.208.11:8080"
                            ],
                            "log_meta": "false",
                            "log_data": "true",
                            "bucket_index_max_shards": 11,
                            "read_only": "false",
                            "tier_type": "",
                            "sync_from_all": "true",
                            "sync_from": [],
                            "redirect_zone": "",
                            "supported_features": [
                                "resharding"
                            ]
    .
    .
                    "default_placement": "default-placement",
                    "realm_id": "26cf6f23-c3a0-4d57-aae4-9b0010ee55cc",
                    "sync_policy": {
                        "groups": []
                    },
                    "enabled_features": [
                        "resharding"
                    ]

  7. 同期のステータスを確認します。

    [ceph: root@host01 /]# radosgw-admin sync status
              realm 26cf6f23-c3a0-4d57-aae4-9b0010ee55cc (usa)
          zonegroup 33a17718-6c77-493e-99fe-048d3110a06e (us)
               zone 505b48db-6de0-45d5-8208-8c98f7b1278d (us_east)
    zonegroup features enabled: resharding

    この例では、resharding 機能が us ゾーングループに対して有効になっていることを確認できます。

  8. オプション: ゾーングループの resharding 機能を無効にすることができます。

    1. Ceph Object Gateway がインストールされているマルチサイトのすべてのゾーングループで、機能を無効にします。

      構文

      radosgw-admin zonegroup modify --rgw-zonegroup=ZONEGROUP_NAME --disable-feature=resharding

      [ceph: root@host01 /]# radosgw-admin zonegroup modify --rgw-zonegroup=us --disable-feature=resharding

    2. 期間を更新してコミットします。

      [ceph: root@host01 /]# radosgw-admin period update --commit

関連情報

7.4.8. バケットインデックスの手動リシャーディング

バケットが最適化された初期設定よりも大きくなった場合は、radosgw-admin bucket reshard コマンドを使用してバケットインデックスプールをリシャーディングします。このコマンドは、次のタスクを実行します。

  • 指定されたバケットのバケットインデックスオブジェクトの新しいセットを作成します。
  • これらのバケットインデックスオブジェクトにオブジェクトエントリーを分散します。
  • 新規バケットインスタンスを作成します。
  • 新規インデックス操作すべてが新規バケットインデックスを通過するように、新しいバケットインスタンスをバケットとリンクします。
  • 古いバケット ID および新しいバケット ID をコマンド出力に出力します。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway が少なくとも 2 つのサイトにインストールされている。

手順

  1. 元のバケットインデックスをバックアップします。

    構文

    radosgw-admin bi list --bucket=BUCKET > BUCKET.list.backup

    [ceph: root@host01 /]# radosgw-admin bi list --bucket=data > data.list.backup

  2. バケットインデックスを再シャード化します。

    構文

    radosgw-admin bucket reshard --bucket=BUCKET --num-shards=NUMBER

    [ceph: root@host01 /]# radosgw-admin bucket reshard --bucket=data --num-shards=100

検証

  • バケットの再シャーディングステータスを確認するには、以下のコマンドを実行します。

    構文

    radosgw-admin reshard status --bucket bucket

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data

7.4.9. リシャーディング後のバケットエントリーの古いインスタンスのクリーニング

リシャーディングプロセスでは、バケットエントリーの古いインスタンスが自動的に消去されない場合があり、これらのインスタンスはストレージクラスターのパフォーマンスに影響を与える可能性があります。

古いインスタンスがストレージクラスターのパフォーマンスに悪影響を与えないように、手動でクリーンアップします。

重要

古いインスタンスを消去する前に、Red Hat サポート にお問い合わせください。

重要

この手順は、マルチサイトクラスターではなく、単純なデプロイメントでのみ使用してください。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway がインストールされている。

手順

  1. 古いインスタンスをリスト表示します。

    [ceph: root@host01 /]# radosgw-admin reshard stale-instances list
  2. バケットエントリーの古いインスタンスを消去します。

    [ceph: root@host01 /]# radosgw-admin reshard stale-instances rm

検証

  • バケットの再シャーディングステータスを確認するには、以下のコマンドを実行します。

    構文

    radosgw-admin reshard status --bucket BUCKET

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data

7.4.10. 再シャーディング後のライフサイクルポリシーの修正

インスタンスが再シャーディングされたストレージクラスターの場合に、古いライフサイクルプロセスは、再シャーディング中にバケットインスタンスが変更されたため、ライフサイクル処理にフラグを立てて削除していました。ただし、古いバケットにライフサイクルポリシーがあり、再シャーディングが行われた場合は、reshard fix オプションを使用してそのようなバケットを修正できます。

前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • Ceph Object Gateway がインストールされている。

手順

  • 古いバケットのライフサイクルポリシーを修正します。

    構文

    radosgw-admin lc reshard fix --bucket BUCKET_NAME

    重要

    --bucket 引数を使用しない場合、コマンドはストレージクラスター内のすべてのバケットのライフサイクルポリシーを修正します。

    [ceph: root@host01 /]# radosgw-admin lc reshard fix --bucket mybucket

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.