我想用 2Tb 代替 1Tb。在我的小型 Ceph 集群中。
池配置了 3x 副本。
添加了新驱动器。
对 2 个 OSD 做了
out
。
做了
ceph osd reweight-by-utilization
。这是一些重新平衡的过程。
对 2 个 OSD 做了
down
。
但在 kubernetes 中,它们会在 5 分钟后将状态从 down 更改为 up,并再次接收数据。
我有一些问题,寻求帮助和建议。
Ceph 状态:
ceph -s
cluster:
id: 995ea7a6-9287-4e97-862e-64cf4e21213f
health: HEALTH_OK
services:
mon: 3 daemons, quorum c,e,f (age 4d)
mgr: b(active, since 4d), standbys: a
mds: 1/1 daemons up, 1 hot standby
osd: 6 osds: 6 up (since 2d), 4 in (since 2d); 313 remapped pgs
rgw: 1 daemon active (1 hosts, 1 zones)
data:
volumes: 1/1 healthy
pools: 13 pools, 313 pgs
objects: 255.11k objects, 976 GiB
usage: 1.9 TiB used, 5.9 TiB / 7.8 TiB avail
pgs: 255112/765336 objects misplaced (33.333%)
313 active+clean+remapped
io:
client: 2.7 KiB/s rd, 101 KiB/s wr, 3 op/s rd, 9 op/s wr
ceph balancer status
{
"active": true,
"last_optimize_duration": "0:00:00.001511",
"last_optimize_started": "Tue Aug 15 12:23:18 2023",
"mode": "upmap",
"optimize_result": "Unable to find further optimization, or pool(s) pg_num is decreasing, or distribution is already perfect",
"plans": []
}
ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 9.58896 root default
-5 9.58896 region n1
-4 9.58896 zone n1-d3
-3 0.79999 host 6d855885b8-z8bj2
0 ssd 0.79999 osd.0 up 0 1.00000
-11 3.90619 host 7b5fb4c8b8-cc9kp
2 ssd 1.95309 osd.2 up 1.00000 1.00000
3 ssd 1.95309 osd.3 up 1.00000 1.00000
-9 4.88278 host 7b5fb4c8b8-sqx5g
1 ssd 0.97659 osd.1 up 0 1.00000
4 ssd 1.95309 osd.4 up 1.00000 1.00000
5 ssd 1.95309 osd.5 up 1.00000 1.00000
谢谢!
首先,您的集群非常小,在平衡方面有点特殊。虽然平衡器能够完成一些工作,但由于 OSD 太少,它可能还远非完美。
- 我可以删除osd.0和osd.1而不丢失数据吗?
不,通常默认的故障域是主机,删除 osd.0 将删除所有副本。我强烈建议先添加较大的磁盘,“停止”并将较小的 OSD 的压碎重新权重设置为 0(不仅重新权重,否则您将进行多次数据移动)并让它重新平衡。恢复完成后,清除小 OSD。
- 为什么如果我禁用这 2 个 osd,它们仍然有 313 个 PG?应该是这样吗?根据我的理解,如果我禁用 OSD,那么 PG 应该为 0。
您没有足够的主机/OSD 来让整个故障域(主机)在其余主机上恢复。
- 由于我禁用了这 2 个 OSD,因此我有 33.34 个处于降级状态的对象。
是的,正如前面的陈述中所解释的那样,您错过了整个故障域以从主机故障中安全恢复。
- 如果我删除这2个osd,那么集群会再次重新映射我,一切都会好起来吗?
不可以,主机 6d855885b8-z8bj2 上至少需要一个 OSD 才能拥有三个故障域。
- 为什么第一个osd.0上有这么多数据,并且没有以任何方式重新平衡到其他磁盘?事实上,最初有 3 个 OSD,每个 1Tb,现在我们正在用 2Tb 替换所有内容。
仍然是故障域的问题。
- 为什么OSD之间的平衡性差异如此之大?在第一和第二之间,在第一、第二和其余之间?
由于您的主机的权重不同,请查看“WEIGHT”列。如果您有三台主机,每台主机都有 2 TB OSD,情况会有所不同。我不确定将两个 2 TB 磁盘分配给主机 7b5fb4c8b8-sqx5g 是否是一个错误,但这可能是您真正的问题。
在如此小的环境中,更换磁盘总是会导致对象降级,因为它们没有地方可以恢复。这本身并不是一个关键问题,我们已经这样做过很多次了(故障磁盘有时无法正确排空),它只是解释了您所看到的情况。在较大的环境中,您可以耗尽 OSD,等待其重新平衡并添加新磁盘,然后重新平衡回新磁盘。这是最安全的方法,根据配置的弹性,可以跳过耗尽并仅更换磁盘。但你似乎对 Ceph 不太熟悉,所以我会选择安全的选项。