8.4. 列出放置组不一致
使用 rados 实用程序列出对象副本中的不一致。使用 --format=json-pretty 选项列出更详细的输出。
本节涵盖以下列表:
- 池中 PG 不一致
- 放置组中的对象不一致
- PG 中的快照设置不一致
先决条件
- 正在运行的红帽 Ceph 存储集群处于健康状态。
- 节点的根级别访问权限。
流程
列出池中所有不一致的放置组:
语法
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:池逻辑分割的命名空间。默认情况下是空的。 -
locator:这个键用于放置的替代对象名称。 -
snap:对象的快照 ID。对象的唯一可写版本被称为head。如果对象是克隆,则此字段包含其顺序 ID。 -
Version:副本不一致的对象的版本 ID。每个对象写入操作都会递增它。 错误:显示分片之间不一致的错误列表,但不决定哪个分片或分片不正确。请参阅shard数组以进一步调查错误。-
data_digest_mismatch:从一个 OSD 读取的副本摘要与其他 OSD 不同。 -
size_mismatch:克隆的大小或头对象与预期不匹配。 -
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示例
[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:克隆的大小或头对象与预期不匹配。
-