假设我想在这 3 个 OSD 节点设置上通过数据弹性实现最大可用容量,其中每个节点包含 2 个 1TB OSD。
使用 2 路复制运行 3 个 Ceph 节点是否安全?
使用 2-way 的优缺点是什么?会不会造成数据脑裂?
最后但并非最不重要的一点是,它将在 2 路复制上运行什么域容错?
谢谢!
假设我想在这 3 个 OSD 节点设置上通过数据弹性实现最大可用容量,其中每个节点包含 2 个 1TB OSD。
使用 2 路复制运行 3 个 Ceph 节点是否安全?
使用 2-way 的优缺点是什么?会不会造成数据脑裂?
最后但并非最不重要的一点是,它将在 2 路复制上运行什么域容错?
谢谢!
有时,即使三个副本也是不够的,例如,如果 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 的节点以及 replicamin_size 1
和size 4
3 个 osd 的设置可能会失败,只有一个 mon 可能会失败(monitor quorum 意味着一半以上会存活)。4 + 1
两个失败的监视器需要多个监视器(至少一个应该是外部的,没有 osd)。对于8
监视器(四个外部监视器),三个 mon 可能会失败,因此即使是每个具有1
osd 和1
mon 的三个节点也可能会失败。我不确定是否可以设置8
监视器。
因此,对于三个节点,每个节点都有一个监视器和 osd,唯一合理的设置是副本min_size 2
和size 3
或 2。只有一个节点会失败。如果你有一个外部监视器,如果你设置min_size
为1
(这是非常危险的)和size
to2
或节点可以关闭。但是有了一个副本(没有副本,只有原始数据),您很快就会失去工作。1
2