代码之家  ›  专栏  ›  技术社区  ›  SRobertJames

Ceph:当足够的磁盘无法导致数据丢失时会发生什么?

  •  1
  • SRobertJames  · 技术社区  · 6 年前

    假设Ceph中有足够多的磁盘故障导致实际的数据丢失。(例如,所有3个副本在3个副本中失败;或在k+m擦除编码中>m个失败)。现在怎么办?

    1. 集群是否仍然稳定?当然,也就是说,我们已经丢失了这些数据,但是其他数据和新的数据是否还能正常工作呢。

    在我们的用例中,我们可以从离线备份中恢复丢失的数据。但是,要做到这一点,我们需要知道哪些数据实际上丢失了——也就是说,获取丢失的对象id的列表。

    1 回复  |  直到 6 年前
        1
  •  1
  •   itsafire    6 年前

    回答1:如果发生了什么?

    Ceph将您的数据分发到放置组(PGs)中。把它们看作数据池的碎片。默认情况下,PG存储在存储设备上的3个副本中。同样,在默认情况下,ceph必须知道至少存在两个副本才能继续访问。如果只有一个副本可用(因为两个OSD(也称为磁盘)处于脱机状态),则对该PG的写入将被阻止,直到最小副本数(2)再次联机为止。如果PG的所有副本都脱机,则在一个副本联机之前,您的读取将被阻止。如果有足够的副本,所有其他PG都可以免费访问。

    回答2:受影响的是什么?

    identifying blocked RadosGW requests 另一部分关于 getting from defective PGs to the rados objects