7.3. 包含の一覧表示
rados ユーティリティーを使用して、オブジェクトのさまざまなレプリカで不整合を一覧表示します。より詳細な出力を一覧表示するには、--format=json-pretty オプションを使用します。
以下を一覧表示できます。
プールに含まれる配置グループの一覧表示
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オブジェクトが期待したサイズと一致しない。