乐趣区

关于服务器:分布式存储系统可靠性系统量化估算

一、引言

咱们经常听到掂量分布式存储系统好坏的两个指标:可用性和可靠性指标。

可用性指的是零碎服务的可用性。个别按全年可用工夫除以全年工夫来掂量可用性的好坏,平时咱们说的 SLA 指标就是可用性指标,这里就不开展细说。

可靠性指标指的是数据的可靠性。咱们常说的数据可靠性 11 个 9,在对象存储中就意味着存储一千亿个对象大略会有 1 个文件是不可读的。由此可见,数据可靠性指标给分布式存储系统带来的挑战显而易见。

本文就重点来剖析一下分布式系统的数据可靠性的量化模型。

二、背景

数据的重要性不用多说,基本上数据能够称得上是企业生命力的外围,是企业赖以生存的基本。因而数据的可靠性是根底的根底,任何数据的失落都会给企业造成无奈计算和补救的损失。

随着数据规模的日益增大,环境更加简单,咱们大体能够把威协数据可靠性的因素归为几大类:

  • 硬件故障 :次要是磁盘故障、还有网络故障、服务器故障、IDC 故障;
  • 软件隐患 :内核 BUG,软件设计上的 BUG 等;
  • 运维故障 :人为误操作。

其中,第 1 类的硬件故障中又以磁盘故障最为频繁,坏盘对于从事分布式存储运维的同学来说再失常不过了。

因而,咱们接下来从磁盘故障这个维度来尝试量化一下一个分布式系统的数据可靠性。

三、数据可靠性量化

为了进步数据的可靠性,数据正本技术和 EC 编码冗余技术是分布式系统可靠性最罕用的伎俩了。以多正本为例,正本数越多,数据的可靠性必定越高。

为了对分布式系统的数据可靠性作一个量化估算,进一步剖析失去影响存储数据可靠性的因素次要有:

  • N:分布式系统磁盘的总数,能够很直观了解,磁盘的数量是和可靠性强相干,N 的大小与数据的打散水平有很大关系。
  • R:正本数,正本数越高数据的可靠性必定越高,但同时也会带来更大的存储老本。
  • T:RecoveryTime 呈现坏盘状况下数据恢复的工夫,这个也很好了解,复原工夫越短,数据的可靠性越高。
  • AFR:Annualized Failure Rate 磁盘的年度故障率,这个和磁盘自身的品质相干,品质越好,AFR 越低,数据的可靠性越高。
  • S:CopySet 数量,一个盘上的数据的冗余在集群中的打散水平,打得越散,则有可能任意坏 3 块盘就刚好有数据的冗余数据都失落。所以,仅从打散水平这个维度看,打散水平越小越好。

因而,咱们能够用一个公式示意分布式系统的全年数据可靠性:

3.1 磁盘年故障率:AFR

AFR:Annualized Failure Rate 又称为硬盘年度失败概率,个别用来反映一个设施在全年的应用出故障的概率,能够很直观的了解,AFR 越低,零碎的可靠性越高,因为 AFR 与零碎的数据可靠性强相干;而这个指标通常又是由另一个磁盘质量指标 MTBF(Mean Time Before Failure)推算出来,而 MTBF 各大硬盘厂商都是有出厂指标的,比如说希捷的硬盘出厂的 MTBF 指标为 120W 个小时。以下为 AFR 的计算公式:

然而理论应用当中往往 MTBF 会低于硬盘出厂指标。Google 就依据他们的线上集群的硬盘状况进行了统计计算 AFR 如下:

(5 年内硬盘 AFR 统计状况)

(图片来自 http://oceanbase.org.cn)

3.2 正本数据复制组:CopySet

正本数据复制组 CopySet:用艰深的话说就是,蕴含一个数据的所有正本的节点,也就是一个 copyset 损坏的状况下,数据会失落。

(单个数据随机复制分组示意图)

(图片来自 https://www.dazhuanlan.com)

如图 2 所示,以 9 块盘为例,这 9 块盘的 copyset 就是:{1,5,6},{2,6,8},如果不做任何非凡解决,数据多了之后,数据的随机散布如下:

(海量数据随机散布示意图)

(图片来自 https://www.dazhuanlan.com)

最大 CopySet:如上图所示,12 个数据的多正本随机打散到 9 块盘上,从上图中任决意挑 3 块盘都能够挑出蕴含某个数据的三个正本,就相当于从 n 个元素中取出 k 个元素的组合数量为:

最大的 CopySet 配置下一旦有三块磁盘坏了,丢数据的概率是 100%。另外一种状况,数据的散布是有法则的,比方一块盘上的数据只会在另外一块盘上备份,如下图所示,在这种状况下数据笼罩的 CopySet 只有(1,5,7)、(2,4,9)、(3,6,8)也就是说这种状况下 CopySet 为 3。咱们不难理解,9 块盘的最小 CopySet 为 3。也就是 N /R。

(磁盘粒度冗余散布示意图)

因而,CopySet 数量 S 合乎以下:

既然 CopySet 数据能够最小为 N /R,能不能把 CopySet 数量调到最小,答案当然是不行的,因为,一方面如果 CopySet 调到最小,当有一个盘坏了后,只有其它 2 块盘进行这块盘的复原操作,这样数据的复原工夫又变长了,复原工夫变长也会影响数据的可靠性;而且一旦命中了 CopySet 中的一个,则失落的数据量规模十分大。因而,分布式系统中的 CopySet 的量和复原速度 RecoveryTime 是一个平衡整个零碎数据可靠性和集群可用性的参数。

文献【1】Copysets: Reducing the Frequency of Data Loss in Cloud Storage 提供了一种分布式系统的 CopySet Replication 的抉择策略,在分布式存储系统当中比方对象存储和文件存储当中,还有一种形式能够依据零碎的可靠性和可用性进行调整零碎 CopySets 的数量,就是在随机搁置状况下,应用小文件合并成大文件的存储策略,能够通过管制大文件的大小从而管制每个磁盘上大文件的数量,比方 100G 一个文件,8T 盘上的最大文件存储数量也就是 8T/100G = 80 个文件,也就是说一个 8T 的盘的数据最多打散到了 80 块其它的盘上,对于集群盘远大于 80 的零碎显然也可能很好的管制一个数据盘的数据打散水平。

因而,在磁盘上的分片是随机打散的状况下,CopySets 数量能够量化为以下公式:

其中,P 为磁盘的容量,B 为分片大小,N 为零碎磁盘的数据,R 为正本数。80% 为使用率。

3.3 数据恢复工夫:Recovery Time

数据恢复工夫对数据可靠性影响很大,这个很好了解,因而缩短数据恢复工夫能够无效升高数据失落的危险。后面曾经介绍数据恢复工夫和磁盘上数据打散水平强相干,同时数据恢复工夫也与服务自身的可用性相干。

比方磁盘带宽为 200MB/s,假如留给复原可用的带宽为 20% 就是 40MB/s,磁盘容量为 P,使用率为 80%,B 为 BlockSize 大小,则复原速度可按以下形式计算:

四、可靠性模型推导

4.1 磁盘故障与泊松散布

泊松散布:泊松散布其实是二项分布的极限状况,泊松散布公式如下:

(图片来自知乎)

其中,t 为工夫周期(小时为单位),n 为故障的盘的块数,N 为整个集群的盘的数量,为单位工夫 1 小时内出故障的磁盘平均数。

从 3.1 节咱们曾经介绍过了磁盘一年之内出故障的概率为 AFR,那么单位工夫 1 个小时的工夫周期磁盘出故障的概率为 FIT(Failures in Time):

那么 N 块盘的集群在单位工夫 1 小时内出故障的盘的数量为 FIT*N,换句话说,也就是单位工夫 1 小时内出故障的磁盘平均数。因而能够失去:

4.2 零碎全年可靠性计算推导

由 4.1 咱们失去磁盘故障是合乎泊松散布,N 块盘的集群中在 t 小时内有 n 块盘故障的概率:

接下来咱们以 3 正本为例,来推导一下全年集群没有数据失落的概率的量化模型,3 正本状况下,全年集群没有数据失落的概率不太好量化,咱们能够通过计算全年集群呈现数据失落的概率,而后全年集群没有数据失落的概率就以计算出来:

全年集群呈现数据失落的概率:只有在 t(1 年)的工夫内有第一块磁盘呈现故障之后,而后零碎进入数据恢复阶段,在数据恢复的工夫 tr 内又有第二块磁盘呈现故障,咱们先不思考数据恢复了多少,而后在 tr 内又有第三块磁盘呈现故障,然而这三个磁盘不肯定刚好命中了咱们在 3.2 介绍的 copyset 复制组如果命中了 copyset,那么集群在全年就真的有呈现数据失落了。因为全年集群呈现数据失落的概率和 P1,P2,P3,以及 Copyset 命中概率 Pc 相干。

1 年工夫 t 内有任意一块磁盘呈现故障的概率为:

下面这块磁盘呈现问题后,须要马上复原,在复原工夫 tr 内有另外一块盘呈现故障概率:

在复原工夫 tr 内有第三块任意盘呈现故障的概率:

而这三块呈现故障的磁盘刚好命中集群的 CopySets 的概率为:

因而,不难失去全年集群呈现数据失落的概率 P:

而后全年集群不呈现数据失落的概率 1 - P 就能够计算失去了。

4.3 EC 冗余全年可靠性计算推导

EC 冗余机制绝对于三正本机制是用额定的校验块来达到当有一些块呈现故障的状况下数据不会丢,按(D,E)数据块进行 EC 编码,那么在计算 EC 冗余下的全年集群数据失落概率的时候,EC 模式下的复原速度 tr 和三正本必定是不一样的,另外,EC 模式下的 copysets 是不一样的,EC 模式是容许 E 个数据块失落,而且是在 D 个数据块有任意的 E 个数据块失落数据都找不回来了,因而,不难得出,EC 模式的全年集群呈现数据失落的概率 P,以下公式,默认 E 为 4,也就是失落 4 个数据块:

绝对于三正本模式来说,EC 模式的 copyset 须要思考在 D + E 个块当中失落其中任意 E 个块,则 EC 模式下的 copyset 数为:

五、可靠性模型估算

5.1 量化模型影响因素

以三正本为例,从以上量化的全集群出故障的概率计算公式能够失去影响的因素有:

  • N:集群的盘的个数;
  • FIT:就也是 1 小时磁盘的故障率, 能够由 AFR 失去;
  • t:这个是固定 1 年;
  • tr:复原工夫,单位为小时,和复原速度 W 和磁盘存储量、分片大小相干;
  • R:正本数;
  • Z:磁盘的存储总空间;
  • B:分片或者 Block 的大小,小文件合并成大文件的最大 Size。

5.2 可靠性量化计算

接下来咱们把影响可靠性计算的几个因素依据生产集群的现状带入模型计算可靠性计算:

联合 4.2 的磁盘故障与可靠性的推导,通过表格中 10 个 case 的计算,能够看到:

Case 1,2,3 通过扩大磁盘的数量从 48 块盘到 804 再到 3600 块盘,可靠性从 11 个 9 进步到靠近 13 个 9,而后 804 块盘到 3600 块盘还是保护在 13 个 9,按理说,集群的规模增大,增 3 块盘的概率会进步,然而因为复原速度也随着磁盘的减少而线性减少,因而,可靠性始终在晋升,而从 804 到 3600 块盘,可靠性没有减少,是因为这时候复原速度曾经不随磁盘减少而线性增大,因为在磁盘量很大后,决定复原速度因素就变为单盘分片个数。

Case 5,6 比拟好了解,复原速度由 100M/ S 变为 10M/S,可靠性升高 2 个以上数量级;

Case 7,8 也比拟好了解,AFR 由 0.43 进步到 1.2 再进步到 7,可靠性升高了 3 个数量级;

Case 9,10 比拟绕,磁盘数在 100 的状况下,Block 大小由 80G 一个进步到 100G 一个,可靠性升高了,这种状况下是因为复原速度进步,CopySet 也进步,但速度影响更大导致。

Case 11,12 也比拟绕,因为咱们限定了复原速度不能超过 5 分钟(模仿线上,因为零碎检测坏盘,主动踢盘等操作也须要工夫),这两个 Case 下的 CopySet 都超级大,所以复原的并发度都十分高,但受限于 5 分钟限定,所以两个 Case 的复原速度一样,所以 PK CopySet 的数量,Case12 的 CopySet 比 Case11 的 CopySet 要小,所以更不容易失落,所以可靠性更高。

六、总结

  • 首先 AFR 越低越好,AFR 是间接决定整个集群磁盘故障引起的数据失落概率的最大因素;
  • 其次是复原速度:在不影响服务可用性指标的前提下,最大限度的进步磁盘故障的复原带宽是进步集群数据可靠性的另一个重要因素;
  • 如果在复原速度受限的前提下,比方零碎架构设计导致的相干发现坏盘到踢盘到进行数据恢复操作启动为 5 分钟,那么能够通过正当升高磁盘数据的扩散水平升高 CopySet,如果零碎是按分片粒度或 Block 粒度,则相应的以进步 Block 粒度来升高数据扩散水平的形式来进步数据的可靠性。

参考资料

1. https://zhuanlan.zhihu.com

2.《Copysets: Reducing the Frequency of Data Loss in Cloud Storage》

3. https://www.dazhuanlan.com

4.http://oceanbase.org.cn

​作者:vivo 互联网通用存储研发团队 -Gong Bing

退出移动版