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
:与分片相关的所有错误。这些错误连接到一个有问题的分片。以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
:快照集表示头
存在或不存在,但清理结果报告其他内容。 -
无头
:缺少快照集的头
条。 -
size_mismatch
:克隆或head
对象的大小与预期不匹配。
-
其它资源
- Red Hat Ceph Storage Troubleshooting Guide 中的 inconsistent placement groups 部分。
- Red Hat Ceph Storage 故障排除指南中的 修复不一致的放置组 部分。