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
:池逻辑分割的命名空间。默认为空。 -
locator
:这个键用于放置的替代对象名称。 -
snap
:对象的快照 ID。对象的唯一可写版本被称为head
。如果对象是克隆,此字段包含其顺序 ID。 -
version
:副本不一致的对象版本 ID。每个写入操作都会递增对象。 错误
:指定分片或分片之间不一致的错误列表,而不确定哪个分片或分片不正确。请参阅shard
数组以进一步调查错误。-
data_digest_mismatch
:从一个 OSD 读取的副本摘要与其他 OSD 不同。 -
size_mismatch
:克隆的大小或head
对象与预期不匹配。 -
read_error
:这个错误表示磁盘错误最有可能导致的不一致。
-
union_shard_error
:所有特定于分片的错误的 union。这些错误连接到故障分片。以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
:快照集表示头
存在或不存在,但清理结果报告其他。 -
无头
:缺少快照集的头
。 -
size_mismatch
:克隆的大小或head
对象与预期不匹配。
-
其它资源
- Red Hat Ceph Storage Troubleshooting Guide 中的 inconsistent placement groups 部分。
- Red Hat Ceph Storage Troubleshooting Guide 中的 repair ing inconsistent placement groups 部分。