mon*_*ter 5 hdfs distributed-filesystems
我一直在研究分布式数据库和文件系统,虽然我最初对 Hadoop/HBase 最感兴趣,因为我是一名 Java 程序员,但我发现了这个关于Ceph 的非常有趣的文档,它作为一个主要的加分点,现在集成在Linux内核。
有一件事我不明白,我希望你们中的一位能向我解释。这里是:
一个简单的哈希函数将对象标识符 (OID) 映射到一个归置组,即一组存储对象及其所有副本的 OSD。有数量有限的归置组来创建 OSD 数量的上限,这些 OSD 存储存储在任何给定 OSD 上的对象的副本。该数字越高,多个节点的故障导致数据丢失的可能性就越大。例如,如果每个 OSD 与其他每个 OSD 都有副本关系,那么整个集群中仅三个节点的故障就可以清除所有三个副本上存储的数据。
您能否向我解释为什么更多的归置组会增加数据丢失的可能性?我会认为这是相反的。
我目前正在研究 ceph 作为我们数据存储的替代方案。我发现了你的问题并做了一些阅读,希望这个想法有意义。他们动态分配数据的方式表明您是否有大量 OSD(明显多于复制级别)。那么似乎分发算法有可能(并且很可能)将文件的某些部分放在大量 OSD 上,这样,如果您丢失了 N 个节点(其中 N 大于您的复制级别),则很可能您会丢失您的数据(或至少有大量损坏)。这并不奇怪。如果您的集群中丢失了 3 个节点(如他们的示例),我预计会出现数据丢失,除非您的复制级别为 4 或更高。