1

Ceph 版本:0.94.1

ceph -s
    cluster 30266c5f-5e10-4027-936c-e4409667b409
 health HEALTH_WARN
        65 pgs stale
        22 pgs stuck inactive
        65 pgs stuck stale
        22 pgs stuck unclean
 monmap e7: 7 mons at {kvm1=10.136.8.129:6789/0,kvm2=10.136.8.130:6789/0,kvm3=10.136.8.131:6789/0,kvm4=10.136.8.132:6789/0,kvm5=10.136.8.133:6789/0,kvm6=10.136.8.134:6789/0,kvm7=10.136.8.135:6789/0}
        election epoch 122, quorum 0,1,2,3,4,5,6 kvm1,kvm2,kvm3,kvm4,kvm5,kvm6,kvm7
 osdmap e368: 14 osds: 14 up, 14 in
  pgmap v1072573: 1128 pgs, 8 pools, 186 GB data, 51533 objects
        630 GB used, 7330 GB / 8319 GB avail
            1041 active+clean
              65 stale+active+clean
              22 creating

客户端 io 361 kB/s rd,528 kB/s wr,48 op/s

ceph osd stat 
osdmap e368: 14 osds: 14 up, 14 in

如您所见,我遇到了陈旧/非活动/不干净的问题。我试着做

ceph pg 0.21 query

这挂了。(0.21 是陈旧的 pgs 之一)。Strace 显示了这一点:

[pid 4850] futex(0x7f8cd8003984, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7f8cd8003980,

{FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...>
[pid  4855] <... sendmsg resumed> )     = 9
[pid  4850] <... futex resumed> )       = 1
[pid  4855] futex(0x7f8cd8026cd4, FUTEX_WAIT_PRIVATE, 19, NULL <unfinished ...>
[pid  4841] <... futex resumed> )       = 0
[pid  4850] futex(0x7f8cd801e2ac, FUTEX_WAIT_PRIVATE, 11, NULL <unfinished ...>
[pid  4841] futex(0x7f8cd8003900, FUTEX_WAKE_PRIVATE, 1) = 0
[pid  4841] futex(0x7f8cd8003984, FUTEX_WAIT_PRIVATE, 39, NULL <unfinished ...>
[pid  4833] <... select resumed> )      = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 4000}) = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 8000}) = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 16000}) = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 32000}) = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)
[pid  4833] select(0, NULL, NULL, NULL, {0, 50000}) = 0 (Timeout)

它永远不会返回信息。其他 PG 确实显示了正确的 JSON 数据。我尝试重新启动 osd0,但没有看到任何错误。

有人有什么想法吗?

4

2 回答 2

1

我发现了问题!这是通过粉碎规则删除后没有 OSD 的池。我不确定为什么要创建 PG 并且规则只允许移动 OSD,但这并不重要。

删除所有空池后,我现在很好。

对于那些想要一个程序的人,如何找到它:

第一的:

ceph health detail

要找出哪个有问题,然后:

ceph pg ls-by-pool

将 pg 与池匹配。然后使用以下命令删除池:

ceph osd pool delete <pool name> <pool name> --yes-i-really-really-mean-it
于 2015-06-08T01:05:07.130 回答
0

您很可能有一个不允许某些 OSD 相互通信的网络配置。您遇到的问题pg 0.21 dump可能是同一个问题。

与大多数ceph与 MON 通信的命令相反,pg 0.21 dump它将尝试直接与托管 pg 的 OSD 通信

由于ceph osd stat返回所有 OSD 都是upin,这意味着 MON 和 OSD 之间的通信没有故障。

于 2015-06-05T07:27:48.687 回答