副本集群可靠性

来源:互联网 发布:virtualbox ubuntu ip 编辑:程序博客网 时间:2024/04/28 02:22

数据可靠性

副本模式下,数据损坏指所有副本在同一时间同时损坏的场景。数据损坏的原因只考虑磁盘故障。机器故障时,如果与磁盘相关则已考虑,如果是网关,cpu 等其他原因,往往数据并没有真正丢失,所以在计算可靠性时不考虑机器故障的场景。

磁盘故障模型

单块磁盘损坏后,其上的所有的 oid 都不可用,对于单块磁盘,如果其在一年中发生故障,认为其故障的概率在所有时间点都是相等的,为均匀分布。

一、单 Oid 可靠性

双副本模式数据丢失场景:oid 的两个副本,分布在两块不同的磁盘上,两块磁盘都发生故障,且发生故障的时间差在 T 以内。
这里写图片描述

两副本都发生故障的概率为 P2,x 表示第一个副本发生故障的时间点(天为单位),y 表示第二个副本发生故障的时间点,(x,y)分布在正方形(0-365, 0-365)内,其中满足两块盘故障时间差在 T 以内也就是|yx|T在正方形内围成面积的比例 。
其比例为:2T365T23652, 所以两副本的数据损坏概率为:(2T365T23652)P22TP2365

三副本模式数据丢失场景:oid 的三个副本,分布在不同的磁盘上,三块磁盘都发生故障,且发生故障的时间差在 T 以内。
三副本都故障的概率为 P3,x,y,z 分别表示3个副本发生故障的时间点,数据损坏要求三副本故障时间差都在 T 以内。也就是

|zx|T,|zy|T,|yx|T,0365,0365,0365
其比例为:3T23652, 所以三副本的数据损坏概率为:3T2P33652

二、用户VDI 可靠性

因为用户并不关心其申请的单个 oid 的可靠性,而是认为其所申请的整个 vdi,如果丢失了任何一块数据,则认为自己的数据丢失了。对于三副本场景,并不是特定的3块盘损坏,才会丢失数据,而是对于该用户有数据分布的任意不同zone 的3块磁盘,如果在单盘修复时间T内同时损坏,则就会造成数据损坏。所以用户 vdi 可靠性与用户数据分布的盘数相关。其计算公式与以下的集群数据可靠性相同。

三、集群数据可靠性

对于 kdfs 系统,并不只是需要保证单个 oid 或者某个用户的 vdi 数据可靠性,而是需要保证整个集群数据的可靠性。其与整个集群的盘数,zone划分有关,对于三副本模式,只要任意不同的 3 个zone在单盘修复时间T内损坏,则认为集群数据丢失。集群规模越大,则其数据可靠性越低。

考虑划分zone 的数目对于可靠性的影响:集群总磁盘数据为 A,均匀划分为 Z 个zone。则取不同的 3 个zone,每个zone 坏一块盘的组合有:A36(13z+2z2),因为对于函数13x+2x2,取值范围 x>0, 在 x=4/3 时取得最小值,且在 x>4/3 时,函数单调递增。划分的 zone 数目越多,则任意坏 3 块盘,可能造成数据损坏的概率越大。所以从集群数据可靠性考虑,并不支持划分过多的 zone 数目。

在这里取任意不同 zone 的3块盘损坏来计算集群数据的损坏概率。实际上在单盘恢复时间T内可能同时损坏了 4 块盘或者更多,导致 3 块盘的场景被重复计算。但是每多坏一块盘,发生的概率就需要乘以 P 以及 T/365,其带来的影响可以忽略。所以只考虑同时坏 3 块盘的场景。
集群总磁盘数据为 A,均匀划分为 Z 个zone。磁盘年故障率为 P,单盘修复时间为 T 时。
集群数据损坏计算公式A36(13z+2z2)3T2P33652
在磁盘故障率P不变的情况下,不同的集群要达到 9个9或者10个9的数据可靠性,需要调节集群规模A,zone 划分数目 z 以及限定单盘修复时间T。

1 0
原创粉丝点击