7.3. 列出放置组不一致
使用 rados 实用程序列出对象中各种副本的不一致。使用 --format=json-pretty 选项列出更详细的输出。
本节涵盖以下列表:
- 池中的放置组不一致
- 放置组中的对象不一致
- 放置组中的快照集不一致
先决条件
- 正在运行的 Red Hat Ceph Storage 集群处于健康状态。
- 节点的根级别访问权限。
流程
列出池中所有不一致的放置组:
语法
rados list-inconsistent-pg POOL --format=json-pretty示例
[ceph: root@host01 /]# rados list-inconsistent-pg data --format=json-pretty [0.6]使用 ID 列出 PG 中不一致的对象:
语法
rados list-inconsistent-obj PLACEMENT_GROUP_ID示例
[ceph: root@host01 /]# 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:池逻辑分割的命名空间。它默认为空。 -
定位器:用作放置对象名称的替代的关键。 -
snap:对象的快照 ID。对象的唯一可写版本被称为head。如果对象是克隆,则此字段包含其连续 ID。 -
version:副本不一致的对象版本 ID。每个对象的写操作都会递增。 错误:指示分片之间不一致的错误列表,而不决定哪些分片或分片不正确。请参阅shard数组以进一步调查错误。-
data_digest_mismatch:从一个 OSD 读取的副本摘要与其他 OSD 不同。 -
size_mismatch:克隆的大小或head对象与预期不匹配。 -
read_error:这个错误表示最有可能被磁盘错误导致的不一致。
-
union_shard_error:特定于分片的所有错误的联合。这些错误连接到有问题的分片。以oi结尾的错误表示您必须将故障对象中的信息与选定对象的信息进行比较。请参阅shard数组以进一步调查错误。在上例中,存储在
osd.2上的对象副本的摘要与osd.0和osd.1上存储的副本不同。具体来说,副本摘要不是0xffffffff,作为从osd.2读取的分片计算,但0xe978e67f。另外,从osd.2读取的副本的大小是 0,而由osd.0和osd.1报告的大小是 968。
-
列出快照集不一致:
语法
rados list-inconsistent-snapset PLACEMENT_GROUP_ID示例
[ceph: root@host01 /]# 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: 缺少一个或多个属性。属性是关于快照编码到快照集中的信息,作为键值对列表。 -
ss_attr_corrupted: 一个或多个属性无法解码。 -
clone_missing:缺少克隆。 -
snapset_mismatch:快照集本身不一致。 -
head_mismatch:快照集表示head存在或不存在,否则清理结果报告。 -
无头:缺少快照集的头头。 -
size_mismatch:克隆的大小或head对象与预期不匹配。
-