配置グループの状態

さまざまな配置グループ (PG) の状態について学習し、理解します。

ceph healthceph -sceph -wなどのコマンドを実行すると、クラスターが常にエコー・バックするとは限らないことに気付く場合があります。 HEALTH OK OSD が実行されているかどうかを確認した後、配置グループの状態も確認する必要があります。 いくつかの配置グループ・ピアリング関連の状況では、クラスターが HEALTH OK をエコー しない ことを予期してください。

  • プールを作成しましたが、配置グループはまだピア化されていません。

  • 配置グループはリカバリー中です。

  • クラスターに OSD を追加したか、クラスターから OSD を削除しました。

  • CRUSH マップを変更しました。配置グループをマイグレーションします。

  • 配置グループの異なるレプリカに不整合なデータがあります。

  • Ceph は、配置グループのレプリカをスクラブしています。

  • Ceph には、バックフィル操作を実行するための十分なストレージ容量がありません。

上記のいずれかの状況が原因で Ceph が HEALTH WARNをエコーする場合は、パニックにならないようにしてください。 多くの場合、クラスターは単独でリカバリーします。 場合によっては、アクションを実行する必要があります。 配置グループのモニターの重要な側面の 1 つは、クラスターが稼働中のときに、すべての配置グループが active(できれば clean 状態) であることを確認することです。

すべての配置グループの状況を表示するには、以下を実行します。

[ceph: root@host01 /]# ceph pg stat

結果として、配置グループ・マップのバージョン vNNNNNN、配置グループの総数 x、および特定の状態にある配置グループの数 y( active+cleanなど) が示されます。

vNNNNNN: x pgs: y active+clean; z bytes data, aa MB used, bb GB / cc GB avail
注: Ceph が配置グループの複数の状態を報告するのは一般的です。

スナップショット・トリミング PG 状態 (Snapshot Trimming PG States)

スナップショットが存在する場合、2 つの追加の PG 状態が報告されます。

  • snaptrim : PG は現在トリム中です

  • snaptrim_wait : PG はトリムされるのを待機しています

出力例:

244 active+clean+snaptrim_wait
 32 active+clean+snaptrim

配置グループの状態に加えて、Ceph は、使用されたデータ量、 aa、残りのストレージ容量、 bbおよびその配置グループの合計ストレージ容量 cc もエコー出力します。 これらの数値は、いくつかの場合に重要になる可能性があります。

  • near full ratio または full ratioに到達しようとしています。

  • CRUSH 構成のエラーのため、データがクラスター全体に分散されません。

配置グループ ID

配置グループ ID は、プール名ではなくプール番号と、それに続くピリオド (.) および配置グループ ID (16 進数) で構成されます。 ceph osd lspoolsの出力から、プール番号とその名前を表示できます。 デフォルトのプール名 datametadata 、および rbd は、それぞれプール番号 01 、および 2 に対応します。 完全修飾配置グループ ID の形式は以下のとおりです。

構文

POOL_NUM.PG_ID

出力例:

0.1f
  • 配置グループのリストを取得するには、以下のようにします。

    [ceph: root@host01 /]# ceph pg dump
  • 出力を JSON 形式でフォーマットし、ファイルに保存するには、以下のようにします。

    構文

    ceph pg dump -o FILE_NAME --format=json

    [ceph: root@host01 /]# ceph pg dump -o test --format=json
  • 特定の配置グループを照会します。

    構文

    ceph pg POOL_NUM.PG_ID query

    [ceph: root@host01 /]#  ceph pg 5.fe query
    {
        "snap_trimq": "[]",
        "snap_trimq_len": 0,
        "state": "active+clean",
        "epoch": 2449,
        "up": [
            3,
            8,
            10
        ],
        "acting": [
            3,
            8,
            10
        ],
        "acting_recovery_backfill": [
            "3",
            "8",
            "10"
        ],
        "info": {
            "pgid": "5.ff",
            "last_update": "0'0",
            "last_complete": "0'0",
            "log_tail": "0'0",
            "last_user_version": 0,
            "last_backfill": "MAX",
            "purged_snaps": [],
            "history": {
                "epoch_created": 114,
                "epoch_pool_created": 82,
                "last_epoch_started": 2402,
                "last_interval_started": 2401,
                "last_epoch_clean": 2402,
                "last_interval_clean": 2401,
                "last_epoch_split": 114,
                "last_epoch_marked_full": 0,
                "same_up_since": 2401,
                "same_interval_since": 2401,
                "same_primary_since": 2086,
                "last_scrub": "0'0",
                "last_scrub_stamp": "2022-10-17T01:32:03.763988+0000",
                "last_deep_scrub": "0'0",
                "last_deep_scrub_stamp": "2022-10-17T01:32:03.763988+0000",
                "last_clean_scrub_stamp": "2022-10-17T01:32:03.763988+0000",
                "prior_readable_until_ub": 0
            },
            "stats": {
                "version": "0'0",
                "reported_seq": "2989",
                "reported_epoch": "2449",
                "state": "active+clean",
                "last_fresh": "2022-10-18T05:16:59.401080+0000",
                "last_change": "2022-10-17T01:32:03.764162+0000",
                "last_active": "2022-10-18T05:16:59.401080+0000",
    ....