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

Ceph: What happens when enough disks fail to cause data loss?

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

  1. 集群还稳定吗?也就是说,当然我们已经丢失了该数据,但其他数据和新数据仍然可以正常工作。

  2. 有什么方法可以得到丢失对象 ID 的列表吗?

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

答案 1:如果 ?

会怎样

Ceph 将您的数据分布在归置组 (PG) 中。将它们视为数据池的碎片。默认情况下,PG 在您的存储设备上存储 3 个副本。同样,默认情况下,ceph 必须知道至少存在 2 个副本才能仍然可以访问。如果只有 1 个副本可用(因为 2 个 OSD(也称为磁盘)处于离线状态),对该 PG 的写入将被阻止,直到最小数量的副本 (2) 再次在线。如果 PG 的所有副本都离线,您的读取将被阻止,直到一个副本在线。其他所有PG只要在线且副本够多都可以免费访问。

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

您可能指的是类似 S3 的对象存储。这是在 rados 对象存储之上建模的,即 ceph 的密钥存储。有问题的 PG 可以被追踪并与给定的 rados 对象相关联。有关于 identifying blocked RadosGW requests and another section about getting from defective PGs to the rados objects 的文档。