Ceph:当足够的磁盘无法导致数据丢失时会发生什么?
Ceph: What happens when enough disks fail to cause data loss?
假设我们在 Ceph 中有足够多的磁盘故障导致实际数据丢失。 (例如,所有 3 个副本在 3 副本中均失败;或 >m 在 k+m 擦除编码中失败)。现在会发生什么?
集群还稳定吗?也就是说,当然我们已经丢失了该数据,但其他数据和新数据仍然可以正常工作。
有什么方法可以得到丢失对象 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 的文档。
假设我们在 Ceph 中有足够多的磁盘故障导致实际数据丢失。 (例如,所有 3 个副本在 3 副本中均失败;或 >m 在 k+m 擦除编码中失败)。现在会发生什么?
集群还稳定吗?也就是说,当然我们已经丢失了该数据,但其他数据和新数据仍然可以正常工作。
有什么方法可以得到丢失对象 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 的文档。