xianghezhang
作者xianghezhang·2022-12-25 19:43
系统工程师·新华三技术有限公司

分布式存储的数据可靠性估计 - 简单计算法

字数 1618阅读 843评论 1赞 2

本文介绍分布式存储数据可靠性的一种简单估计方法。

如前文所述,在分布式存储系统中,为防止因为单点失效(单个硬盘、单个存储节点等)造成数据丢失,一般采用一定的数据冗余策略(多副本、纠删码等)来提升数据可靠性。以三副本为例,数据在写入分布式存储系统时,会被切割成固定长度的数据块。对于每一个数据块,系统以一定的算法映射到一个放置组(逻辑概念,其总数一般实现配置好,一个放置组对应 3 块磁盘,这 3 块磁盘位于不同节点上),不同放置组对应的磁盘可以有交集。这个算法一般是一个 Hash 伪随机算法,在写入比较多的数据时,根据概率论中的大数定理,可以保证每个磁盘写入的数据量基本相等。

当系统中某个磁盘失效时,部分数据就变成了 2 副本状态,此时,系统会自动启动数据重构,利用其他副本,将失效磁盘的数据在系统中重构出来,恢复成原始的 3 副本状态。由于失效磁盘的数据可以并行恢复,所以重构周期( T )比较短,一般 1TB 数据可以在数十分钟内完成数据重构。

从上面的描述可知,当且仅当在某个重构周期内发生同一个放置组的 3 块磁盘相继失效时,才会引起数据丢失。所以要计算一个分布式存储集群的数据可靠性,只需要计算某段时间内(典型如一年)发生该事件的概率。

显然,这个概率和磁盘的失效模式强相关。下图是磁盘故障率示意图。


磁盘故障的实际模式是比较复杂的,为简单起见,一般假设其生命周期内的故障率为定值,从实际使用看,一般企业级硬盘的年故障率( AFR )为百分之几到千分之几。有了 AFR 值,就可以求出单位时间(一小时)的故障率λ =AFR/ ( 365*24 )。假设某个分布式存储集群中总共有 K 块硬盘,利用泊松公式,便可以求出一个重构周期 T 内,同时有 n 块磁盘失效的概率,其值为:

,其中 e 是自然对数的底。

本例中,因为是 3 副本,故 n 值取 3 。上面公式求出了一个重构周期 T 内发生 3 块硬盘同时失效事件的概率。如果考虑一年内发生该事件的概率,一个简单的估计是将上述值乘以一年所包含的 T 的个数。

另外,以上只是估计了任意 3 块硬盘同时失效的概率。实际上,由前面描述的数据分布策略可知, K 块硬盘中,并非任意 3 块硬盘失效都会引起数据丢失,如果失效的 3 块硬盘不处于任意一个放置组内,则不会引起数据丢失。所以最终值还需要乘以一个系数,即( 3 块硬盘恰好包含某个放置组的组数 /K 块硬盘任取 3 块的组合数)。

为有一些感性认识,我们通过 excel 表格做了一个简单计算公式。假设一个分布式存储集群包含 8 个节点,每节点 32 块 4TB 硬盘,写满数据。硬盘数据的重构速度是 2TB/ 小时,硬盘年失效率是千分之四。集采采用 3 副本配置。

在以上假设下,计算可得,集群一年内的数据可靠性约为 99.9999999% 。也就是所,可以达到 9 个 9 的数据可靠性。

需要说明的是,不同的因子对数据可靠性影响不同。比如,在相同的集群配置下,如果采用 4 副本配置,其它条件不变,则数据可靠性可达到 13 个 9 ,可靠性比 3 副本高了 10000 倍。同样,在其他假设不同的前提下,如果把重构速度提升一倍,则可靠性变为原来的 4 倍。如果磁盘故障率变为原来的 10 倍,则数据可靠性降低 1000 倍。

另外,从上面的分析过程可知,降低任意三块硬盘失效导致数据丢失的比例也可以提升数据可靠性。为此,部分先进厂商在故障域的基础上提出了保护域的概念,可以在相同副本配置下进一步提升数据可靠性。

对于 EC 配置下的数据可靠性,其计算原理和副本类似,不赘述。定性地说, EC K+2 的配置比 3 副本数据可靠性略低。因为此时,任意 3 块盘失效导致数据丢失的概率较 3 副本更高。

注:在上述计算中,对某些计算步骤做了近似处理,这样可以大大降低计算的复杂度。近似处理的结果和准确结果会有些出入,但不会有数量级上的差异。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论1 条评论

yulu4314yulu4314技术支持长春
2023-04-29 19:55
学习了,谢谢分享
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广