列双保险--RAID 6
技术简介
为什么需要
RAID 6
在经过多年的沉寂之后,
RAID 6
技术随着大容量
ATA
硬盘的广泛采用又重新引起了业界的重视。相对于
RAID 5
来说,用户对
RAID 6
的了解比较少,因此本站根据
HDS
的技术白皮书《采用
RAID-6
技术,增强数据保护》改编成此文与大家共享。为了较为完整地说明问题,编者保留了一些与具体产品配置相关的内容。
RAID 5
是在存储系统中广泛采用的数据保护技术。该技术是通过把应用数据分成数段,连同这些数据段的校验信息写入一组磁盘来实现的。如果其中有个磁盘出现了故障,就会利用其余的磁盘中的数据和检验信息把故障盘中的数据恢复到热备盘中以保证数据不会丢失。这样
RAID 5
就存在一种风险,如果在数据重建的过程中,
RAID
组中的第二块硬盘出现故障,就会出现数据丢失。
以前,两块盘同时坏的情况是小概率事件,几乎不可能发生。但是近来随着光纤(
FC
)盘和
SATA
盘的容量和密度不断增加,使得
RAID 5
的重建时间也不断增加。这样两块盘同时坏的概率也增加了,在企业级存储上,这种风险必须得到重视。
为了应对这种情况,存储厂商的
RAID 6
技术就是可以保证两块盘同时出故障而不会丢失数据的新技术。日立数据系统(
HDS
)公司的
TagmaStore
全线存储系统除了支持
RAID 5
,
RAID 1
技术以外还可以支持
RAID 6
保护技术,提供给用户多种保护方式的选择。
RAID 6
技术背景和简介
RAID
技术是为了防止存储系统因为磁盘故障而丢失数据而研发出来的。该技术把数据和校验信息分布到一组盘中(
RAID
组),当有盘坏的时候,丢失的那部分数据可以通过其他盘上的数据和校验信息计算恢复。这样就增强了存储系统的可靠性。
HDS
公司的
TagmaStore
全线存储系统可以支持
RAID 0
,
RAID 1
,
RAID 5
和
RAID 6
技术,所以
HDS
的存储系统不但可以提供更好的可靠性,而且也可以比以往的存储系统有更出色的性能。
HDS
的高端存储系统一般以
4
个磁盘为一个组,称为
Array Group
,而一个
RAID
组则包含一个或者多个
Array Group
。例如:
RAID 1
(镜像)可以是
2D + 2P
或者
4D + 4P
的配置,也就是说
2
块数据盘,
2
块镜像盘,或者
4
块数据盘和
4
块镜像盘的配置。
RAID 5
(带校验的条带化)可以是
3D + 1P
的配置,其中
3
块数据盘,
1
块检验盘,或者是
7D + 1P
的配置,其中
7
块数据盘,
1
块检验盘的配置。实际上,
RAID 5
的数据和校验都是条带化后分散在
RAID
组中的各个磁盘中的。
RAID-1
提供了最高的可靠性,一块盘上的数据都镜像到
RAID
组中的另外一块磁盘上。但是这种方式对磁盘的利用率不高,只有一半的磁盘空间能够存放数据,存放同样的数据要多买一倍的磁盘。
RAID 5
改善了利用率的问题,但是因为要计算校验信息而使得写性能有所下降。
HDS TagmaStore
系列存储中的模块化产品也能支持
RAID 0
技术(没有校验的条带化),
RAID 0
技术有很好的性能表现,但是
RAID 0
没有冗余保护功能,
RAID
组中任何一块磁盘的损坏都会造成数据的丢失。因此
HDS
只在中端模块化阵列的光纤盘上支持
RAID 0
技术,在
SATA
盘上不支持
RAID 0
,同时
HDS
建议用户不要在关键数据上采用
RAID 0
技术。
当采用
RAID 1
或者
RAID 5
技术的时候,如果其中有个磁盘出现了故障,就会利用
RAID
组中其余的磁盘中的数据和检验信息把故障盘中的数据恢复到热备盘中以保证数据不会丢失。工程师用新盘替换坏掉的磁盘,这时候存储系统会把热备盘中的数据拷贝回新换上的盘中(
HDS
的
WMS/AMS
中端模块化存储可以支持不回拷)。当回拷完成后,系统又回到了正常工作状态,可以再次抵御磁盘故障。
如今磁盘的容量和密度一再变大,出现了
300GB
的光纤盘和
500GB
的
SATA
盘,每个盘中存放的数据比以往大了很多,磁盘故障影响的数据量也跟着增加。这样从磁盘故障,到磁盘系统恢复正常状态的时间也会比以往长很多,这个过程中同一个
RAID
组里面第二块磁盘出现故障而导致数据丢失的可能性也变大。
为了防止两块磁盘故障而引起的数据丢失,
HDS TagmaStore
存储系统现在支持
RAID 6
(
6D + 2P
)。和
RAID 5
相似的是,
RAID 6
采用了校验数据,和
RAID 5
不同的是
RAID 6
有两份检验数据,可以保证同一
RAID
组中两块磁盘同时故障而不丢失数据。
RAID 6
(
6D + 2P
)原理
和
RAID 5
相似,
RAID 6
(
6D + 2P
)根据条带化的数据生成校验信息,条带化数据和校验数据一起分散存储到
RAID
组的各个磁盘上。
D0
,
D1
,
D2
,
D3
,
D4
和
D5
是条带化的数据,
P
代表校验数据,
Q
是第二份校验数据。
RAID 6
校验数据生成公式(
P
和
Q
):
P
的生成用了异或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q
的生成用了系数和异或
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D0
~
D5
:条带化数据
A0
~
A5
:系数
XOR
:异或
*
:乘
在
RAID 6
中,当有
1
块磁盘出故障的时候,利用公式
1
恢复数据,这个过程是和
RAID 5
一样的。而当有
2
块磁盘同时出故障的时候,就需要同时用公式
1
和公式
2
来恢复数据了。
各系数
A0
~
A5
是线性无关的系数,在
D0
,
D1
,
D2
,
D3
,
D4
,
D5
,
P
,
Q
中有两个未知数的情况下,也可以联列求解两个方程得出两个未知数的值。这样在一个
RAID
组中有两块磁盘同时坏的情况下,也可以恢复数据。
上面描述的是校验数据生成的算法。其实
RAID 6
的核心就是有两份检验数据,以保证两块磁盘同时出故障的时候,也能保障数据的安全。
数据分布
通过条带化,把应用数据和校验数据打散到一个
RAID
组的
8
个磁盘中,可以充分保证读写性能和数据的安全性。
RAID 6
可以保证同一个
RAID
组中两块磁盘故障的情况下的数据安全。
RAID 6
的数据恢复
从
1
块磁盘故障中恢复数据
当有
1
块磁盘出故障的时候,利用公式
1
恢复数据,这个过程不需要
Q
这部分校验数据,这个过程是和
RAID 5
一样的。
公式:
D3 = D0 XOR D1 XOR D2 XOR P XOR D4 XOR D5
从
2
块磁盘故障中恢复数据
当同时有
2
块磁盘故障的时候,需要同时用到公式
1
和公式
2
来恢复数据。
公式
1
和公式
2
:
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q = A0*D0 XOR A0*D1 XOR A0*D2 XOR A0*D3 XOR A0*D4 XOR A0*D5
D3
和
D4
由解以上两个联立的方程得出结果
各种
RAID
类型之间的比较
空间的利用率
表
1
表明了在
RAID 1
、
RAID 5
和
RAID 6
下有多少磁盘空间是可以给用户数据使用的。
表
1
:不同
RAID
类型的磁盘利用率比较
RAID类型
|
空间利用率
|
备注
|
RAID 1 (2D + 2D)
|
50%
|
镜像
|
RAID 5 (3D + 1D)
|
75%
|
数据盘和校验盘之间的比例
|
RAID 5 (7D + 1D)
|
87.5%
|
RAID 6 (6D + 2D)
|
75%
|
RAID 6 (6D + 2D)
和
RAID 5 (3D + 1D)
的利用率是一样的
|
性能之间的比较
表
2
表明了在足够磁盘数据的情况下各种
RAID
类型的性能比较,
RAID 1 (2D + 2D)
作为基准(
100%
)。
表
2
:不同
RAID
类型的性能比较
RAID类型
|
随机读和顺序读
|
顺序写
|
随机写
|
RAID 1 (2D + 2D)
|
100%
|
100%
|
100%
|
RAID 5 (3D + 1D)
|
100%
|
150%
|
50%
|
RAID 5 (7D + 1D)
|
200%
|
350%
|
100%
|
RAID 6 (6D + 2D)
|
200%
|
300%
|
66.7%
|
备注
|
和磁盘的数量成正比
|
和数据盘的数量成正比
|
|
比较
RAID 5 (7D + 1D)
和
RAID 6 (6D + 2D)
随机写
如表
2
中所示,
RAID 6
在增加了可靠性的同时,牺牲了部分随机写性能。在随机写操作中,在同样多的磁盘的
RAID
组中,
RAID 6
所花费的时间是
RAID 5
的的
1.5
倍。每次
RAID 5 (7D + 1D)
进行一次随机写操作,实际上产生了
4
个
I/O
:读老的应用数据,读老的校验数据,写新的应用数据和写新的校验数据(
P
)。而
RAID 6
做同样一个随机写操作,实际上需要
6
个
I/O
,读老的用户数据,读老的校验数据
P
,读老的校验数据
Q
,写新的用户数据,写新的校验数据
P
,写新的校验数据
Q
。这样就造成了
RAID 5 (7D + 1D)
和
RAID 6 (6D + 2D)
随机写的
33%
性能差异。
RAID
选择中的注意事项
在选择采用何种
RAID
类型的时候,必须注意以下事项:
・
用户数据需要多少空间
- 校验带来的磁盘空间损失
- 应用的性能要求
- 在磁盘故障时,磁盘的重建时间
随着用户数据的不断增长,用户采用大容量磁盘的可能性也与日俱增,但是在使用大容量硬盘的时候,必须要考虑过长的重建时间而引起的数据丢失风险。在某些情况下,数据重建会非常困难或者对系统性能的冲击会很大,如:大交易量,大量写操作的数据库应用,建议采用
RAID 6
技术,这样可以给用户数据带来更好的保护。
总结
RAID 5
技术是很多存储系统数据保护的基础。但是采用
RAID 5
技术需要承担在第一块故障盘重建的过程中,第二块磁盘发生故障而导致数据丢失的风险。而
RAID 6
技术的推出使得数据可以在两块磁盘同时故障的情况下也不会丢失。
RAID6
、
RAID-DP
及其他
“
准
RAID6”
原理
既然是讲原理,那些“为什么需要
RAID6”
、“
RAID6
的优势”等内容就都省去了。直接进入枯燥无趣的理论。
一、
RAID5
和
XOR
运算
为了照顾初学者,还是先把相关基本概念介绍一下,老手可以跳过这部分直接看下面。(别低头!是看本帖下面,想些什么呐~)
XOR
运算是数理逻辑的基本运算之一,在课本上的符号是一个圆圈里面一个加号。实在懒得用插入符号功能,大家就凑合着看吧。
两个数字之间的
XOR
运算定义是:
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
(忽然想起试行新车牌的时候,有些深圳人用三位二进制数标记性别。
010
是男的,
101
是女的。
Sorry
,扯远了。)
多个数字
XOR
的时候,有两个特点:
A
)结果与运算顺序无关。也就是
(a XOR b) XOR c = a XOR (b XOR c)
。
B
)各个参与运算的数字与结果循环对称。如果
a XOR b XOR c = d
,那么
a = b XOR c XOR d
;
b = a XOR c XOR d
;
c = a XOR b XOR d
。
磁盘阵列中的
RAID5
之所以能够容错,就是利用了
XOR
运算的这些特点。上面例子中的
a
、
b
、
c
、
d
就可以看作是四颗磁盘上的数据,其中三个是应用数据,剩下一个是校验。碰到故障的时候,甭管哪个找不到了,都可以用剩下的三个数字
XOR
一下算出来。
在实际应用中,阵列控制器一般要先把磁盘分成很多条带(英文叫
Stripe
,注意不是
Stripper
),然后再对每组条带做
XOR
。
P1 =
数据
a XOR
数据
b XOR
数据
c
P2 =
数据
d XOR
数据
e XOR
数据
f
P3 =
数据
g XOR
数据
h XOR
数据
i
P4 =
数据
j XOR
数据
k XOR
数据
l
扫盲部分就讲这么多,再不懂就
google
吧,满山遍野都是
RAID5
算法的介绍。
二、
RAID6
和
Reed-Solomon
编码
本来想写成“李德
-
所罗门编码”,但那样就不方便大家一边看帖子一边
google
了。
Reed-Solomon
编码是通讯领域中经常碰到的一个算法,已经有
15
年以上的历史了。(靠!讲存储嘛,跟通讯有个鸟关系?)
其实很多校验算法都是通讯领域最先研究出来,然后才应用到其他领域的。前面说到的
XOR
算法对一组数据只能产生一个校验,搞通讯的工程师们觉得不够可靠,于是就研究出很多能对一组数据产生多个校验的算法。
Reed-Solomon
编码是其中应用最广泛的一个,咱们以前经常用的
ADSL
、
xDSL
、高速
Modem
都有采用。后来手机、卫星电视、数字电视、
CD
唱片、
DVD
、条码系统、还有……(有完没完!说存储呢!)连高级点儿的服务器内存也用这个算法做校验和纠错。(总算跟存储沾上点儿边~)
现在存储的工程师也觉得
RAID5
中只能容忍一颗磁盘离线不够理想,需要一种容忍多颗磁盘离线的技术,自然就会想到
Reed-Solomon
编码啦。把这种算法应用到存储中,就可以让
N
颗磁盘的空间装应用数据,
M
颗磁盘的空间装校验码(对一组
N
个数据生成
M
个校验,但实际上校验码是分散在所有磁盘上的),这样只要离线的磁盘不大于
M
颗,数据就不会丢失。
Reed-Solomon
编码理论中有一个公式:
N + M + 1 = 2
的
b
次方(在电脑里写公式真是麻烦!)
其中
b
是校验字的位数。(校验字是生成校验过程需要用的一个东东,不是最后的校验码。)举例来说,如果用
8
位的字节做校验字,那么
M + N = 255
,而
RAID6
是特指
M = 2
,这样
N = 253
。
就是说,用
8
位字节做校验字的话,理论上一个
RAID6
的磁盘组可以容下
253
颗磁盘。
当然啦,实际应用中,太多的磁盘一起做运算会严重影响性能,所以阵列控制器和芯片的设计者都会把磁盘组的容量限制在
16
颗左右。
(做了这么多无聊算术题,还是没提
RAID6
到底是啥!)
喂!喂!别走啊,很快就讲到
RAID6
的实现啦。
卖了这么多关子,实在是因为
RAID6
这个概念所指的意义太混乱。从功能上讲,能实现两颗磁盘掉线容错的,都叫
RAID6
。(至少我认识的销售们都这么认为。)但是实行这一功能的方式却有很多很多。(沉默
3
分钟)
真的很多!哎哟!别打啊~
Intel
的
P+Q RAID6
,
NetApp
的
RAID-DP
,
HP
的
RAID5-DP
,还要很多实验室中的原型机都能实行这个功能。但是由于机制不同,各种所谓的
RAID6
,其性能表现、磁盘负载分布、错误恢复方式都完全不同。
你让我从哪说起好哩?
三、基于
P+Q
的
RAID6
在
Intel
的
80333IOP
芯片中,有一个新的引擎叫
P+Q
单元,是专门用来处理
RAID6
加速的。详情请查阅
Intel
官方网站,下课……(鸡蛋、西红柿、拖鞋。咦!这是谁的臭袜子?)
对比
RAID5
的机制,
Intel
的
P+Q RAID6
是这样写磁盘的:
这里每个条带中的
P
,跟
RAID5
里面的
P
意义完全一样,就是同一条带中除
Q
以外其它数据的
XOR
运算结果。
而
Q
呢,就是理解这个技术的关键所在了。
咳~咳~听好了。
Q
是同一条带中各数据的女朋友们进行
XOR
运算的结果。
别翻白眼啊,书上就是这么写的啊!哦,还是英文的,我翻译给你听。
“把条带中每个数据分别
GF
一下,然后这些结果再
XOR
,就得到
Q
。”
(大哥,你到底懂不懂啊!
GF
是
Galois Field
的缩写,是法国著名数学家伽罗瓦发明的一种数学变换。)
哦,想起来了。伽罗瓦嘛,发明群论的那个。生于法国大革命前,二十出头就英年早逝,还是为了个姑娘跟人决斗被打死的。最著名的成果就是给
3
次以上方程判了死刑。是我人生第二偶像啊……
(唐僧!)
这个
GF
变换呢,就是这个淘气的伽同学当年为了逃避老师点名,而发明的一种教室换座位方法。按照这种方法,每个人都不会坐在自己的座位上,而且每个人都肯定会有座位。而且任意个同学的座位号进行
XOR
运算之后,仍然跑不出这个教室里的座位号。
(这个伽同学好像很无聊噢!没办法,人家聪明嘛!)
扯太远啦!回到正题。
在
Intel 80333IOP
中存着两个表格,分别对应
GF
正向变换和反向变换。任何一个
8
位二进制数,都可以直接在表格中查到对应的
GF
变换结果。(我还是想把这个结果说成是源数据的女朋友~)
这两个表格分别在
Intel 80333IOP
研发手册的第
445
页和
446
页,不过我估计大部分人会懒得去看。也是,看了又能怎么样呢?反正
Intel
已经把那玩意固化到芯片里了。
如果一颗磁盘掉线,根本不需要
Q
用
P
直接就搞定了,跟
RAID5
一样。
如果两颗磁盘掉线,又分做两种情况:
A
)坏的地方有
Q
。这种情况跟
RAID5
坏一颗磁盘一样,用
XOR
就恢复了。
B
)坏的地方没有
Q
。用
GF
变换加
XOR
一起搞定。
结合上面表格的例子,如果磁盘
5
和磁盘
6
掉线。那条带
1
和条带
2
就属于情况
A
;而条带
3
、
4
、
5
和
6
属于情况
B
。
其实
P+Q
只是一种算法,
Intel IOP
里面的硬件加速引擎并不是必须的。有一些产品就采用了
PowerPC
等不含
P+Q
引擎的
CPU
,一样不耽误
P+Q RAID6
功能。
GF
转换表在软件里完成就是了。
四、
Dual-XOR
除了
P+Q RAID6
,还要好多种办法可以实现对两颗磁盘掉线的容错。
Intel
提到一种
Dual-XOR
算法,这种方法就是取横向和斜向两个方向进行
XOR
运算,这样每个应用数据都在两个校验中留下痕迹,当两颗磁盘掉线时,就可以恢复数据。
但是
Dual-XOR
的恢复工作异常复杂艰苦,并不实用。很多技术人员研究这种算法的意义,完全是把它当作未经优化的原型思想。
如图,
Pa
是横向的校验,跟
RAID5
完全一样:
Pa1 =
数据
a XOR
数据
b
Pa2 =
数据
c XOR
数据
d
…………
Pa6 =
数据
k XOR
数据
l
Pb
是斜向校验,定义为:
Pb4 =
数据
a XOR Pa2 XOR
数据
f
Pb5 =
数据
c XOR
数据
e XOR Pa4
Pb6 = Pa3 XOR
数据
h XOR
数据
j
可以看出
Dual-XOR
的校验生成过程比
P+Q
要简单,但是根据“麻烦守恒定律”,正向工作简单的事情,一般反向工作都会复杂。
备份和恢复一般也遵循这个规律。
(别跟我提
CDP
,那东西是遵循的是广义麻烦守恒定律。每个
I/O
都打个时间标签,还都当宝贝存着不扔,这能是个不麻烦的事吗?
Sorry
,又扯远了。)
当两颗磁盘掉线的时候,
Dual-XOR
的算法只能支持逐个数据块的恢复,而且不同条带之间还要共同参与计算。
比如图中的磁盘
1
和
2
掉线,恢复数据
e
的时候,就要至少动用到数据
f
、
Pb3
、
Pa4
和
Pb5
。而数据
c
和
Pa3
的恢复还要依赖数据
e
的恢复。
总之恢复起来是件贼头痛的事情!
五、
NetApp RAID-DP
虽然
Intel
的
Dual-XOR
理论意义大于实际意义,但其改良的版本
RAID-DP
却已经被
NetApp
产品化。
NetApp
之所以喜欢这个类似
Dual-XOR
的
RAID-DP
算法,原因也很简单。
NetApp
原本用的就是
RAID4
,而不是
RAID5
,其算法的中心思想就是每次
I/O
只跟两颗磁盘打交道就
OK
,自然就不会在乎
RAID-DP
中很多动作都只跟两、三颗磁盘打交道。
(这个思想也许在很多
RAID5
的
Fans
看来有点奇怪,难道不是磁头越多性能就越好吗?但是人家
NetApp
这么多年的经验都集中在
WAFL
文件系统上,而
WAFL
文件系统又是专门针对这种思想优化的。所以
NetApp
对这个略有异类的思想不仅没有放弃,而且还越研究越起劲。)
这个递归式数据恢复机制简直像在玩
RPG
游戏,但是对
WAFL
文件系统来说,却的确是最合适的选择之一。
六、五花八门的“准
RAID6
”
除了
RAID-DP
,还有
X-Code
编码、
ZZS
编码、
Park
编码……都可以看做是“准
RAID6
”。
X-Code
编码
下面这个图是
X-Code
编码的解释。
P3x =
数据
33 XOR
数据
35 XOR
数据
32
Px4 =
数据
44 XOR
数据
24 XOR
数据
54
其他的校验是啥意思,不需要一一列出来了吧~
X-Code
从理论上看,的确是个负载均衡、计算简单(只有
XOR
,没有类似
GF
一样的变换)、磁盘对称度很高的算法。但是实际应用还是有问题。
上图的例子是
5
颗磁盘的
X-Code
编码方式,例子中的
5
个条带是一个整体,一起处理。如果写入的数据不多,没有写满前
3
个条带,就需要在写入的同时,把未更新的数据读出来,凑齐
3x5
个数据,再一起计算校验码。
如果是
6
颗磁盘,那就要
6
个条带作为一个整体。
7
颗磁盘一个
RAID
组,就需要
7
个条带一个整体。
8
颗磁盘一个
RAID
组,就需要
8
个条带一个整体。
9
颗磁盘一个
RAID
组,就需要
9
个条带一个整体。
10
颗磁盘一个
RAID
组,就需要
10
个条带一个整体……
(打住!在这发帖子又没稿费,不用拼命凑字!)
总之这个算法的“重复单元”有点大。在实际应用中,这么大的“重复单元”使
X-Code
的应用面临两个问题:计算量大和空间浪费。(可能还有其他问题,比如名字太难听,总让人联想到黄色的东东。)
ZZS
编码
ZZS
也叫俄罗斯编码,
bingo
!猜对了,真聪明。这就是三个俄罗斯人在
1983
年提出的一种编码方式,
ZZS
就是三个人名字首字母缩写,跟
S.H.E.
演唱组的命名规则一样。
与
X-Code
相比,
ZZS
的
“重复单元”就小很多――
7
颗磁盘的时候,
3
个条带是一个整体。
人家
ZZS
论文里给出的是数学公式:
n
颗磁盘的时候,
(n-1)/2
个条带是一个整体。
从这个公式你应该能发现
ZZS
编码的一个要求……(我知道,只支持单数颗磁盘。)
嘿嘿!你错了!实际上,
ZZS
算法只支持磁盘的个数为素数:……
5
、
7
、
11
、
13
、
17
……
不过人家
ZZS
组合(暂时就这么称呼吧)也指出,
ZZS
算法支持其中一颗磁盘上面全写
0
。这样就可以在应用中支持
4
、
6
、
10
、
12
、
16
……(素数
-1
)颗盘了。
什么?还没明白?在计算的时候,内存里虚拟一个全
0
的影子盘不就行啦!
Park
编码
Park
是名
IBM
的员工,在
Yorktown
上班。他的业余爱好是……(
Sorry
,又差点跑题)
相比俄国人训练有素的数学功底,美国人既没有兴趣,也没有耐心再从算法上去优化“双重校验”的技术。但是美国人讲求实际的思想还是挺值得称道。
这不,人家
Park
就说了,“研究了这么多算法,最终目的不就是坏两颗盘数据仍可恢复吗。到头来算法搞得那么复杂,还不如我的看家本领――穷举法――更实在。”
Park
同志是这样说的,也是这样做的(凝重的音乐声响起~)
他编了一个程序,让计算机帮他搜索给定磁盘数量的校验分布模式。
结果你猜怎么着,人家还真有收获。从
3
颗磁盘到
38
颗磁盘,除了
8
颗磁盘和
9
颗磁盘的情况,其他情况
Park
都找到了满足要求的校验分布模式。
什么?你问满足的是什么要求?两颗磁盘掉线数据可恢复啊。汗!
后来,一个名叫徐力浩(音)的中国人补上了
8
颗盘和
9
颗盘的校验分布表。(咱们中国人到底还是比米国人聪明那么一点点,哈~)
现在
Park
编码已经对从
3
颗到
38
磁盘的所有情况,都能给出双重校验分布方法。但是各种分布方法之间根本没有联系,所以只能在给定磁盘数量的时候,去查
Park
编码表。
Park
编码的样子都是以
3
个条带为一个“重复单元”,其中
1
个条带专门用来存校验,另外
2
个存数据。