前言
众所周知,在存储系统中,为了保障数据的高可用性,我们会通过保存多个副本来防止因为机器物理故障导致数据丢失的现象。在一个集群(数据中心)内,我们会设定多个副本。甚至我们做的时候做的更完善一些,还做到异地数据的同步,这可能是完全集群的数据同步了。当然企业将数据做到异地多活本身初衷没用问题,但是成本开销一定还是有的,这意味着副本数据其实又进行了double。这里面的成本效益其实是不低的。本文笔者结合最近在看的一篇关于分级副本的理论,来聊聊这个话题。
传统三副本模式是否从根本上解决数据丢失问题
在阐述本文主题前,我们先来探讨一个关键问题:传统三副本模式是否从根本上解决数据丢失问题?有人会说了,我将数据做了3份冗余,应该会是很安全了吧。其实问题并没有那么简单,我们继续往下看。
数据的丢失起因在这里我们姑且把它归为节点的故障,宕机。那么节点的故障又可以分为以下两类:
- 单一节点故障(independent node failures),故障原因可能是机器硬件老化,突发故障等等。
- 相关节点故障(correlated node failures),故障原因可能是任务跑满了节点资源,OOM,电源断电,等等。此类型牵扯到的节点数据就可能会比较多。
那么针对相关节点故障的极大不确定性,传统固定模式的3副本显然也就不是绝对稳妥安全