Ceph:为什么更多的“放置组”是一件“坏事”?

Ceph:为什么更多的“放置组”是一件“坏事”?

我一直在研究分布式数据库和文件系统,虽然我最初主要对 Hadoop/HBase 感兴趣,因为我是一名 Java 程序员,但我发现这篇关于头孢,这是一大优点,现已集成到Linux内核中。

Ceph 作为 HDFS 的可扩展替代方案

有一件事我不明白,希望你们能给我解释一下。它如下:

一个简单的哈希函数将对象标识符 (OID) 映射到一个放置组,即存储对象及其所有副本的 OSD 组。放置组的数量是有限的,这为存储任何给定 OSD 上存储的对象副本的 OSD 数量设置了上限。该数字越高,多个节点发生故障导致数据丢失的可能性就越高。例如,如果每个 OSD 都与其他每个 OSD 都有副本关系,则整个集群中仅三个节点发生故障就可能抹去存储在所有三个副本上的数据。

你能解释一下为什么更多的展示位置组增加数据丢失的可能性有多大?我原以为情况恰恰相反。

答案1

我目前正在研究 ceph 作为我们数据存储的替代方案。我找到了你的问题,并进行了一些阅读,希望这个想法有意义。他们动态分发数据的方式表明,如果你有大量的 OSD(远远超过复制级别)。那么似乎有可能(并且很可能)分发算法会将文件的某些部分放在大量 OSD 上,这样如果你丢失了 N 个节点(其中 N 大于你的复制级别),你很可能会丢失数据(或至少有大量损坏)。这并不奇怪。如果你在集群中丢失了 3 个节点(就像他们的示例一样),我预计会有数据丢失,除非你的复制级别为 4 或更高。

相关内容