如果 OSD 具有 PG 且状态为“降级”,是否可以从 Ceph 中完全删除 OSD

问题描述 投票:0回答:1

我想用 2Tb 代替 1Tb。在我的小型 Ceph 集群中。

池配置了 3x 副本。

添加了新驱动器。

对 2 个 OSD 做了

out

做了

ceph osd reweight-by-utilization
。这是一些重新平衡的过程。

对 2 个 OSD 做了

down

但在 kubernetes 中,它们会在 5 分钟后将状态从 down 更改为 up,并再次接收数据。

我有一些问题,寻求帮助和建议。

  1. 我可以删除osd.0和osd.1而不丢失数据吗?
  2. 为什么如果我禁用这 2 个 osd,它们仍然有 313 个 PG?应该是这样吗?根据我的理解,如果我禁用 OSD,那么 PG 应该为 0。
  3. 由于我禁用了这 2 个 OSD,因此我有 33.34 个处于降级状态的对象。
  4. 如果我删除这2个osd,那么集群会再次重新映射我,一切都会好起来吗?
  5. 为什么第一个osd.0上有这么多数据,并且没有以任何方式重新平衡到其他磁盘?事实上,最初有 3 个 OSD,每个 1Tb,现在我们正在用 2Tb 替换所有内容。
  6. 为什么OSD之间的平衡性差异如此之大?在第一和第二之间,在第一、第二和其余之间?

OSD:

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

谢谢!

kubernetes ceph rook-ceph
1个回答
0
投票

首先,您的集群非常小,在平衡方面有点特殊。虽然平衡器能够完成一些工作,但由于 OSD 太少,它可能还远非完美。

  1. 我可以删除osd.0和osd.1而不丢失数据吗?

不,通常默认的故障域是主机,删除 osd.0 将删除所有副本。我强烈建议先添加较大的磁盘,“停止”并将较小的 OSD 的压碎重新权重设置为 0(不仅重新权重,否则您将进行多次数据移动)并让它重新平衡。恢复完成后,清除小 OSD。

  1. 为什么如果我禁用这 2 个 osd,它们仍然有 313 个 PG?应该是这样吗?根据我的理解,如果我禁用 OSD,那么 PG 应该为 0。

您没有足够的主机/OSD 来让整个故障域(主机)在其余主机上恢复。

  1. 由于我禁用了这 2 个 OSD,因此我有 33.34 个处于降级状态的对象。

是的,正如前面的陈述中所解释的那样,您错过了整个故障域以从主机故障中安全恢复。

  1. 如果我删除这2个osd,那么集群会再次重新映射我,一切都会好起来吗?

不可以,主机 6d855885b8-z8bj2 上至少需要一个 OSD 才能拥有三个故障域。

  1. 为什么第一个osd.0上有这么多数据,并且没有以任何方式重新平衡到其他磁盘?事实上,最初有 3 个 OSD,每个 1Tb,现在我们正在用 2Tb 替换所有内容。

仍然是故障域的问题。

  1. 为什么OSD之间的平衡性差异如此之大?在第一和第二之间,在第一、第二和其余之间?

由于您的主机的权重不同,请查看“WEIGHT”列。如果您有三台主机,每台主机都有 2 TB OSD,情况会有所不同。我不确定将两个 2 TB 磁盘分配给主机 7b5fb4c8b8-sqx5g 是否是一个错误,但这可能是您真正的问题。

在如此小的环境中,更换磁盘总是会导致对象降级,因为它们没有地方可以恢复。这本身并不是一个关键问题,我们已经这样做过很多次了(故障磁盘有时无法正确排空),它只是解释了您所看到的情况。在较大的环境中,您可以耗尽 OSD,等待其重新平衡并添加新磁盘,然后重新平衡回新磁盘。这是最安全的方法,根据配置的弹性,可以跳过耗尽并仅更换磁盘。但你似乎对 Ceph 不太熟悉,所以我会选择安全的选项。

© www.soinside.com 2019 - 2024. All rights reserved.