9.4. 配置グループ不整合のリスト表示

rados ユーティリティーを使用して、オブジェクトのさまざまなレプリカで不整合をリスト表示します。より詳細な出力をリスト表示するには、--format=json-pretty オプションを使用します。

本セクションでは、以下を取り上げます。

  • プールへの一貫性のない配置グループ
  • 配置グループの一貫性のないオブジェクト
  • 配置グループにおける一貫性のないスナップショットセット

前提条件

  • 健全な状態で稼働中の Red Hat Ceph Storage クラスター。
  • ノードへのルートレベルのアクセス。

手順

rados list-inconsistent-pg POOL --format=json-pretty

たとえば、data という名前のプール内の一貫性のない配置グループのリストを表示します。

# rados list-inconsistent-pg data --format=json-pretty
[0.6]
rados list-inconsistent-obj PLACEMENT_GROUP_ID

たとえば、ID 0.6 の配置グループに一貫性のないオブジェクトのリストを表示します。

# rados list-inconsistent-obj 0.6
{
    "epoch": 14,
    "inconsistents": [
        {
            "object": {
                "name": "image1",
                "nspace": "",
                "locator": "",
                "snap": "head",
                "version": 1
            },
            "errors": [
                "data_digest_mismatch",
                "size_mismatch"
            ],
            "union_shard_errors": [
                "data_digest_mismatch_oi",
                "size_mismatch_oi"
            ],
            "selected_object_info": "0:602f83fe:::foo:head(16'1 client.4110.0:1 dirty|data_digest|omap_digest s 968 uv 1 dd e978e67f od ffffffff alloc_hint [0 0 0])",
            "shards": [
                {
                    "osd": 0,
                    "errors": [],
                    "size": 968,
                    "omap_digest": "0xffffffff",
                    "data_digest": "0xe978e67f"
                },
                {
                    "osd": 1,
                    "errors": [],
                    "size": 968,
                    "omap_digest": "0xffffffff",
                    "data_digest": "0xe978e67f"
                },
                {
                    "osd": 2,
                    "errors": [
                        "data_digest_mismatch_oi",
                        "size_mismatch_oi"
                    ],
                    "size": 0,
                    "omap_digest": "0xffffffff",
                    "data_digest": "0xffffffff"
                }
            ]
        }
    ]
}

不整合の原因を特定するには、以下のフィールドが重要になります。

  • name: 一貫性のないレプリカを持つオブジェクトの名前。
  • nSpace: プールを論理的に分離する名前空間。デフォルトでは空です。
  • Static: 配置のオブジェクト名の代わりに使用されるキー。
  • snap: オブジェクトのスナップショット ID。オブジェクトの書き込み可能な唯一のバージョンは head と呼ばれます。オブジェクトがクローンの場合、このフィールドにはそのシーケンシャル ID が含まれます。
  • version: 一貫性のないレプリカを持つオブジェクトのバージョン ID。オブジェクトへの書き込み操作ごとにインクリメントされます。
  • errors: シャードの不一致を判別することなくシャード間の不整合を示すエラーのリスト。エラーをさらに調べるには、shard アレイを参照してください。

    • data_digest_mismatch: 1 つの OSD から読み取られるレプリカのダイジェストは他の OSD とは異なります。
    • size_mismatch: クローンのサイズまたは head オブジェクトが期待したサイズと一致しない。
    • read_error: このエラーは、ディスクエラーが発生したために不整合が発生したことを示しています。
  • union_shard_error: シャードに固有のすべてのエラーの結合。これらのエラーは、問題のあるシャードに関連しています。oi で終わるエラーは、障害のあるオブジェクトからの情報と、選択したオブジェクトとの情報を比較する必要があることを示しています。エラーをさらに調べるには、shard アレイを参照してください。

    上記の例では、osd.2 に保存されているオブジェクトレプリカは、osd.0 および osd.1 に保存されているレプリカとは異なるダイジェストを持ちます。具体的には、レプリカのダイジェストは、osd.2 から読み取るシャードから計算した 0xffffffff ではなく、0xe978e67f です。さらに、osd.2 から読み込むレプリカのサイズは 0 ですが、osd.0 および osd.1 によって報告されるサイズは 968 です。

rados list-inconsistent-snapset PLACEMENT_GROUP_ID

たとえば、ID 0.23 の配置グループにおける一貫性のないスナップショット (snapsets) のリストを表示します。

# rados list-inconsistent-snapset 0.23 --format=json-pretty
{
    "epoch": 64,
    "inconsistents": [
        {
            "name": "obj5",
            "nspace": "",
            "locator": "",
            "snap": "0x00000001",
            "headless": true
        },
        {
            "name": "obj5",
            "nspace": "",
            "locator": "",
            "snap": "0x00000002",
            "headless": true
        },
        {
            "name": "obj5",
            "nspace": "",
            "locator": "",
            "snap": "head",
            "ss_attr_missing": true,
            "extra_clones": true,
            "extra clones": [
                2,
                1
            ]
        }
    ]

このコマンドは、以下のエラーを返します。

  • ss_attr_missing: 1 つ以上の属性がありません。属性とは、スナップショットに関する情報で、キーと値のペアのリストとしてスナップショットセットにエンコードされます。
  • ss_attr_corrupted: 1 つ以上の属性がデコードできません。
  • clone_missing: クローンがありません。
  • snapset_mismatch: スナップショットセット自体に一貫性がありません。
  • head_mismatch: スナップショットセットは、head が存在するか、存在しない場合はスクラブ結果を報告します。
  • headless: スナップショットセットの head がありません。
  • size_mismatch: クローンのサイズまたは head オブジェクトが期待したサイズと一致しない。

関連情報