运行 在 3 个 OSD 节点上使用 2 路复制的 Ceph 安全吗?

Is it safe to run Ceph with 2-way replication on 3 OSD nodes?

假设我想在这 3 个 OSD 节点设置上实现最大可用容量和数据弹性,其中每个节点包含 2 个 1TB OSD。

它安全吗运行 3 个 Ceph 节点和 2 路复制?

使用 2-way 的优点和缺点是什么?会不会造成数据裂脑?

最后但同样重要的是,运行双向复制的域容错能力是多少?

谢谢!

有时,即使三个副本也不够,例如如果 ssd 磁盘(来自缓存)一起发生故障或一个接一个发生故障。

http://lists.ceph.com/pipermail/ceph-users-ceph.com/2015-October/005672.html

对于两个 osd,您甚至可以手动设置最小 1 个副本和最大 2 个副本(我没有设法在所有三个 osd 中一个 osd 失败的情况下自动设置):

osd pool default size = 2 # 写一个对象2次

osd pool default min size = 1 # 允许在降级状态下写入 1 个副本

但是这个命令:ceph osd pool set mypoolname set min_size 1 将其设置为池,而不仅仅是默认设置。

对于n = 4节点,每个节点有1个osd和1个mon,副本设置为min_size 1size 4三个osd可以失败,只有一个mon可以失败(monitor quorum意味着更多一半以上会存活)。 4 + 1 需要两个故障监视器的监视器数量(至少一个应该是没有 osd 的外部监视器)。对于 8 监视器(四个外部监视器)三个监视器可能会失败,因此即使每个具有 1 osd 和 1 监视器的三个节点也可能会失败。我不确定是否可以设置 8 监视器。

因此,对于三个节点,每个节点都有一个监视器和 osd,唯一合理的设置是副本 min_size 2size 3 或 2。只有一个节点可以失败。 如果您有外接显示器,如果您将 min_size 设置为 1(这非常危险)并且将 size 设置为 21,则 2 节点可以关闭。但是有了一个副本(没有副本,只有原始数据),你很快就会失去工作。