找回密码
 注册
快捷导航
查看: 2529|回复: 1

【转帖】RAID技术详解(5)

[复制链接] |自动提醒
阅读字号:

54

回帖

0

积分

239

资产值

入门会员 Rank: 1

注册时间
2012-9-6
发表于 2012-9-27 16:54:15| 字数 6,666| - 上海市 电信 | 显示全部楼层 |阅读模式
1.10
RAID-6技术详解

RAID-6的全称为“IndependentData disks with two independent distributed parity schemes(带有两个独立分布式校验方案的独立数据磁盘)”。
RAID-6是在RAID-5 基础上,为了进一步加强数据保护而设计的一种RAID级别,与RAID-5 的不同之处于在于,RAID-6采用双重校验方式,能够防止两块成员盘故障而引起的数据丢失,因此RAID-6的数据冗余性能相当好。
但是,由于RAID-6增加了一个校验,所以数据写入的效率比RAID-5还要低很多,而且RAID控制器的设计也更为复杂。另外,RAID-6的磁盘空间利用率也比RAID-5低。
前文介绍过,RAID-6有很多的标准,包括Intel公司的PQ双校验RAID-6NetApp公司的双异或RAID-6(也称为RAID-DP)、X-Code编码RAID-6ZZS编码RAID-6Park编码RAID-6EVENODD编码RAID-6等,本节将介绍这些RAID-6的结构。
1.10.1
PQ双校验RAID-6数据组织原理PQ双校验RAID-6是指在RAID-6除了采用RAID-5的异或校验以外,还增加了一个“Q”校验位,其数据组织结构如图1-41所示。





图1-41
PQ双校验RAID-6数据分布图

1-41中,“D0D1D2
”是数据块,“P0P1P2
”是P校验块,“Q0Q1Q2
”是Q校验块。

P校验依然使用异或算法得出,即P0=D0D1P1=D2D3

Q校验使用基于伽罗华域(Galois Field,简写为GF)的里德-所罗门(Reed-Solomon)编码计算得出,即Q0=GF(D0)GF(D1)Q1=GF(D2)GF(D3),其中GF(D0)的含义是对D0进行伽罗华域的里德-所罗门编码变换。

里德-所罗门编码是欧文·里德(Irving Reed)和格斯·所罗门(Gus Solomon)1960年发布的一种纠错编码,它使用伽罗华域运算法则,对于伽罗华域和里德-所罗门编码感兴趣的读者可以查看专业数学书籍。

PQ双校验RAID-6在两块成员盘离线的情况下依然能够得到完整数据,具体算法分析如下:
情况一,一块成员盘离线
以图1-41为例,假设“物理盘3”离线,我们对每个条带组的数据分别进行分析:

10号条带组

“物理盘3”离线后,0号条带组中缺失“Q0”校验块,不影响数据块“D0”和“D1”。

21号条带组

“物理盘3”离线后,1号条带组中缺失“D3”数据块,RAID控制器可以通过计算式D2P1的出D3

32号条带组

“物理盘3”离线后,2号条带组中缺失“D5”数据块,RAID控制器可以通过计算式D4P2的出D5




43号条带组

“物理盘3”离线后,3号条带组中缺失“P3”校验块,不影响数据块“D6”和“D7”。

情况二,两块成员盘离线
以图1-41为例,假设“物理盘2”和“物理盘3”离线,RAID-6中只剩下“物理盘0”和“物理盘1”,我们对每个条带组的数据分别进行分析:

10号条带组

“物理盘2”和“物理盘3”离线后,0号条带组中缺失“P0”和“Q0”校验块,不影响数据块“D0”和“D1”。

21号条带组

“物理盘2”和“物理盘3”离线后,1号条带组中缺失“Q1”校验块和“D3”数据块,“Q1”校验块不用理会,RAID控制器可以通过计算式D2P1得出D3

32号条带组

“物理盘2”和“物理盘3”离线后,2号条带组中缺失“D4”和“D5”数据块,只剩下“P2”和“Q2”两个校验块,RAID控制器可以通过以下方程式计算出D4D5



43号条带组

“物理盘2”和“物理盘3”离线后,3号条带组中缺失“D7”数据块和“P3”校验块,只剩下“Q3”校验块和“D6”数据块。对于“P3”校验块不用理会,而对于“D7”数据块,RAID控制器先计算出Q3D6的结果,再通过GF(file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtmlclip1/01/clip_image005.gif)编码就可以得到D7的值。

1.10.2
NetApp双异或RAID-6数据组织原理NetApp公司推出的双异或RAID-6也称为RAID-DP,它实际上也就是双RAID-4技术,所谓双RAID-4技术主要是说在同一磁盘阵列中组建两个独立的不同算法的校验磁盘,在单校验磁盘下工作原理与RAID-4一样,但增加了一个校验盘之后,则使整个磁盘阵列的安全性得到提高,能够允许两块盘同时离线。

构建RAID-DP最少需要4块物理盘才能实现,下面以6块物理盘为了进行说明,其数据分布情况如图1-42所示:






图1-42
RAID-DP数据分布图

1-42中“P0P1P2P3是第一个独立的校验信息,属于横向校验,其中:
P0=D0D1D2D3

P1=D4D5D6D7

P2=D8D9D10D11

P3=D12D13D14D15

1-42中“DP0DP1DP2DP3是第二个独立的校验信息,属于斜向校验,其中:
DP0=D0D5D10D15

DP1=D1D6D11P3

DP2=D2D7P2D12

DP3=D3P1D8D13

因为有第二个独立的校验信息存在,所以理论上RAID-DP即使两块成员盘同时离线也不会出现故障。

下面我们来分析在两块成员盘同时离线的情况下,RAID-DP如何保持数据的完整性。

假设成员盘中的硬盘0和硬盘1同时离线,如图1-43所示。




图1-43
硬盘0和硬盘1同时离线的RAID-DP
1-43可以看出,硬盘0和硬盘1同时离线后,数据块D0D1D4D5D8D9D12D13丢失,在RAID-DP运行过程中,RAID控制器将用剩下的数据块和校验块计算出丢失的数据块,计算过程如下:

第一步,计算数据块D1
因为DP1=D1D6D11P3

所以D1= DP1D6D11P3

通过这个计算式将得到丢失的数据块D1,如图1-44所示。





图1-44
计算出丢失的数据块D1
第二步,计算数据块D0
因为P0=D0D1D2D3

所以D0= P0D1D2D3

通过这个计算式将得到丢失的数据块D0,如图1-45所示。





图1-45
计算出丢失的数据块D0
第三步,计算数据块D5
因为DP0=D0D5D10D15

所以D5=D0DP0D10D15

通过这个计算式将得到丢失的数据块D5,如图1-46所示。




图1-46
计算出丢失的数据块D5


第四步,计算数据块D4
因为P1=D4D5D6D7

所以D4= P1D5D6D7

通过这个计算式将得到丢失的数据块D4,如图1-47所示。




图1-47
计算出丢失的数据块D4
第五步,计算数据块D12
因为DP2=D2D7P2D12

所以D12=D2D7P2DP2

通过这个计算式将得到丢失的数据块D12,如图1-48所示。




图1-48
计算出丢失的数据块D12
第六步,计算数据块D13
因为P3=D12D13D14D15

所以D13=D12P3D14D15

通过这个计算式将得到丢失的数据块D13,如图1-49所示。




图1-49
计算出丢失的数据块D13
第七步,计算数据块D8
因为DP3=D3P1D8D13

所以D8=D3P1DP3D13

通过这个计算式将得到丢失的数据块D8,如图1-50所示。




图1-50
计算出丢失的数据块D8
第八步,计算数据块D9
现在还剩下最后一个数据块D9需要计算。

因为P2=D8D9D10D11

所以D9=D8P2D10D11

通过这个计算式将得到丢失的数据块D9,如图1-51所示。






图1-51
计算出丢失的数据块D9
到此为止,丢失的数据块D0D1D4D5D8D9D12D13已经全部计算出来,硬盘0和硬盘1中的其他数据块也可以用同样方法算出。

1.10.3
X-Code编码RAID-6数据组织原理X-Code编码RAID-6也是一种双异或RAID-6,不过它的异或值是竖向放置,所以也称为垂直异或。

构建X-Code编码RAID-6最少需要4块物理盘才能实现,下面以5块物理盘为了进行说明,其数据分布情况如图1-52所示:




图1-52
X-Code编码RAID-6据分布图

1-52中“P0P1P2P3是第一个独立的校验信息,属于斜向校验,其中:
P3=D0D6D12

P4=D1D7D13

P0=D2D8D14

P1=D3D9D10

P2=D4D5D11

1-52中“DP0DP1DP2DP3是第二个独立的校验信息,属于另一个方向的斜向校验,其中:
DP0=D3D7D11

DP1=D4D8D12

DP2=D0D9P13

DP3=D1P5D14

DP4=D2P6D10

从以上的分析可以看出,X-Code编码RAID-6的异或算法对称度很高,各成员盘负载比较均衡。1-52是以5块成员盘为例的X-Code编码RAID-6结构,阵列在运行时,以5个条带组为一个单元进行数据处理,如果是6块成员盘为例的X-Code编码RAID-6结构,则以6个条带组为一个单元进行数据处理,以此类推。

因为有二个独立的校验信息存在,所以理论上X-Code编码RAID-6即使两块成员盘同时离线也不会出现故障。

不过X-Code编码RAID-6也存在很多问题,比如数据的重复异或运算较多,这就导致RAID控制器的计算量大以及磁盘空间浪费比较多。

1.10.4
ZZS编码RAID-6数据组织原理ZZS是三个俄罗斯人名的首字母,这三个俄罗斯人在1983年共同提出了一种编码形式,被命名为ZZS编码,也称为俄罗斯编码。
ZZS编码用于RAID-6中,要求成员盘的数目至少为4块,并且盘数必须为素数,所以ZZS编码RAID-6的成员盘数只能是5711131719等数值。
不过,ZZS编码的算法中允许其中一块成员盘中数据全部为0,这样就可以在RAID控制器中虚拟一块全空的成员盘,从而使ZZS编码RAID-6的成员盘数目也可以是4610121618等数值,即素数减去1
ZZS编码的RAID-6规定:在成员盘数为n时,(n-1)/2个条带组作为一个运算单元。所以由7块成员盘组成的ZZS编码RAID-6,运算单元为3个条带组,其结构如图1-53所示。




图1-53
ZZS编码RAID-6据分布图

ZZS编码RAID-6属于垂直校验形式,1-533个条带组为一个运算单元,其中“Z0Z1Z2Z3Z4Z5Z6分别是同一块成员盘中下面两个数据块经过ZZS算法计算出的校验值。

ZZS编码RAID-6两块成员盘同时离线也不会影响数据的完整性,并且其数据重复计算量比X-Code编码RAID-6少一些。
1.10.5
Park编码RAID-6数据组织原理ParkIBM公司的工程师,他通过计算机程序找到了一种应用于RAID-6的编码方式,能够支持的成员盘数是338,这种编码被命名为Park编码。
Park编码RAID-6都是以3个条带组为一个运算单元,下面以4块成员盘为例,其结构如图1-54所示。





图1-54
Park编码RAID-6据分布图

Park编码RAID-6也属于垂直校验形式,1-543个条带组为一个运算单元,其中“P0P1P2P3分别是同一块成员盘中下面两个数据块经过Park编码算法计算出的校验值,不过Park编码的各种分布方法之间没有任何联系,其具体数值只能在给定磁盘数量的情况下去查看Park编码表。

1.10.6
RAID-6故障原因分析这里说的RAID-6故障,是指RAID-6逻辑盘丢失或不可访问。导致RAID-6故障的原因主要有以下几种:
1RAID控制器出现物理故障

RAID控制器如果出现物理故障,将不能被计算机识别,也就无法完成对RAID-6中各个物理成员盘的控制,在这种情况下,通过RAID控制器虚拟出来的逻辑盘自然就不存在了。

2RAID信息出错

RAID控制器将物理盘配置为RAID-6后,会生成一些参数,包括该RAID-6的盘序、条带大小、RAID在每块物理盘中的起始地址、校验的排列方式等,还会记录该RAID-6的相关信息,包括组成该RAID-6的物理盘数目、物理盘的容量大小等,所有这些信息和参数就被称为RAID信息,也称为RAID元数据,它们会被保存到RAID控制器中,有时候也会保存到RAID-6的成员盘中。

RAID信息出错就是指该RAID-6的配置信息和参数出现错误,导致RAID程序不能正确地组织管理RAID-6中的成员盘,从而导致RAID-6逻辑盘丢失或不能访问。

3RAID-6成员盘出现物理故障

RAID-6可以允许其中两块成员盘离线而不影响数据的完整性,如果RAID-6中的某两块成员盘相继出现物理故障,剩下的成员盘可以利用校验值运算计算出离线成员盘中的数据,所以RAID-6还不会崩溃。

如果系统管理员没有及时替换出现故障的成员盘,当第三块成员盘再出现故障离线后,RAID-6将彻底崩溃。

4人为误操作

如果误将RAID-6中三块以上成员盘同时拔出、或者给RAID-6除尘时将成员盘拔出后忘了原来的顺序、以及不小心删除RAID-6的配置信息等,都会造成RAID-6崩溃。

5RAID控制器的稳定性
RAID-6的数据分布结构中有两个校验值存在,当RAID-6中有成员盘离线时,尤其是当两块成员盘离线后,算法将变得非常复杂,RAID控制器将会工作在很吃力的状态。而RAID控制器的负载太重便会极大地增加数据读写时出现I/O滞留的可能性,从而导致更多成员盘离线,或者导致RAID信息出错
1.10.7
RAID-6数据恢复思路这里以商业应用比较多的PQ双校验RAID-6为例分析其数据恢复的思路。
RAID-6中数据的分布与RAID-5相比,每个条带组中多出一个Q校验,如图1-55中的“Q0Q1Q2Q3就是Q校验。





图1-55
RAID-6的结构图

RAID-6的数据进行重组,需要先把物理盘去RAID化,作为单盘进行分析,如图1-55中的四块物理盘,把四块物理盘中的数据按照“D0D1D2D3……”的顺序拼接好,就是RAID-5逻辑盘中完整的数据。

因为RAID-5的每块物理盘中都有P校验块和Q校验块,所以分析RAID-6就需要比RAID-5多一个因素,即Q校验块的位置。另外,RAID-6RAID-5一样,也有左异步、左同步、右异步、右同步之分,也就是说,RAID-6有五个因素需要分析,第一个是RAID中每个条带的大小,也就是
D0”或“D1
这些数据块所占用的扇区数;第二个因素是RAID中硬盘的排列顺序,也就是盘序;第三个因素是P校验块的循环方向;第四个因素是数据块的走向;第五个因素是Q校验块的位置。

以图1-55中四块物理盘组成的RAID-6为例,假设条带的大小为32个扇区,物理盘的顺序就按照图中的排列顺序,那么只要到硬盘0中取0-31扇区的信息,再到硬盘1中取0-31扇区的信息,硬盘20-31扇区是P校验块,跳过不取,硬盘30-31扇区的信息是Q校验块,也跳过不取。接下来再回到硬盘0中取32-63扇区的信息,就这样依次按顺序取下去,把所有取出来的数据按照顺序衔接成一个镜像文件或者是镜像盘,这就成为完整的原RAID-6逻辑盘的结构了,直接访问这个重组出来的镜像文件或镜像盘,就得到了原RAID-6逻辑盘中的数据。

1.11
JBOD
技术详解

JBOD即“Just BundleOf Disks”,中文含义为“简单磁盘捆绑”,有时候也被称为“磁盘簇”,它还有一个英文名称叫做“Span”。
JBOD不是标准的RAID级别,仅仅在近几年才被一些服务器厂家提出,并被广泛采用。
1.11.1
JBOD数据组织原理构建JBOD至少需要两块物理盘,它的做法是将多个物理磁盘一个接一个串联到一起,从而组建为一个大的逻辑盘。
JBOD上的数据组织也很简单,它从第一个成员盘开始存储,当第一个成员盘的存储空间用完后,再依次从后面的成员盘开始存储数据。
以三块成员盘为例,其结构如图1-56所示。




图1-56
JBOD数据分布图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

54

回帖

0

积分

239

资产值

入门会员 Rank: 1

注册时间
2012-9-6
 楼主| 发表于 2012-9-27 16:56:38| 字数 1,526| - 上海市 电信 | 显示全部楼层
JBOD的读写性能完全等同于对单一物理盘的存取操作,同时JBOD也不提供数据安全保障,因为它没有任何冗余,它只是提供一种简单的利用磁盘空间的方法。JBOD的逻辑盘容量等于组成JBOD的所有物理盘的容量总和。
1.11.2
JBOD故障原因分析这里说的JBOD故障,是指JBOD逻辑盘丢失或不可访问。导致JBOD故障的原因主要有以下几种:
1RAID控制器出现物理故障

RAID控制器如果出现物理故障,将不能被计算机识别,也就无法完成对JBOD中各个物理成员盘的控制,在这种情况下,通过RAID控制器虚拟出来的逻辑盘自然就不存在了。

2RAID信息出错

虽然JBOD不是真正意义上的RAID,但RAID控制器将物理盘配置为JBOD,也会生成一些参数,包括该JBOD的盘序、JBOD在每块物理盘中的起始地址、该JBOD的物理盘数目、物理盘的容量大小等,所有这些信息和参数会被保存到RAID控制器中,有时候也会保存到JBOD的成员盘中。

RAID信息出错就是指该JBOD的配置参数或者相关信息出现错误,导致RAID程序不能正确地组织JBOD中的成员盘,从而导致JBOD逻辑盘丢失或不能访问。

3JBOD成员盘出现物理故障

JBOD不允许任何一块成员盘离线,如果JBOD中的某一块成员盘出现物理故障,比如电路损坏、磁头损坏、固件损坏、出现坏扇区等,该成员盘就不能正常使用,从而导致JBOD崩溃。

4人为误操作

如果误将JBOD中的成员盘拔出、或者给JBOD除尘时将成员盘拔出后忘了原来的顺序、以及不小心删除了JBOD的配置信息等,都会造成JBOD崩溃。
1.11.3
JBOD数据恢复思路JBOD没有任何冗余性,其中任意一块成员盘出现故障,都会导致所有数据丢失,所以使用JBOD的风险很大。

JBOD出现故障后,要恢复其中的数据,必须先修复有故障的成员盘,或者将其做出完整的磁盘镜像,也就是说在恢复JBOD的数据时,全部成员盘不能有任何缺失。

这里以一个三块物理盘组成的JBOD为例,讲解JBOD出现故障后数据恢复的思路,该JBOD的结构如图1-57所示。





图1-57
JBOD结构图

JBOD原逻辑盘中的数据进行恢复,必须要把所有物理盘重组,因为JBOD已经不可用,所以先把物理盘从RAID控制器中取出来,即“去RAID化”,作为单盘进行分析。

JBOD结构并没有对数据进行条带化,所以不必分析条带大小,只需要分析成员盘的盘序即可,分析出成员盘的盘序后用程序将各成员盘按顺序首尾相接,就可以衔接成原有JBOD逻辑盘了。
不过在很多JBOD中,数据在每块物理盘的起始位置并不是硬盘的第一个扇区,数据在每块物理盘的结束位置也不是硬盘的最后一个扇区,往往在物理盘的前部会留有一些扇区,如图1-57中的“F0F1F2部分;在物理盘的尾部也会留有一些扇区,如图1-57中的“B0B1B2部分,中间的“D0D1D2才是真正的数据。

对于这种情况,必须分析出F0F1F2和“B0B1B2部分的扇区数,把物理盘掐头去尾,只把中间的“D0D1D2按照盘序衔接起来,做成一个镜像文件,或者是镜像盘,这就成为完整的原JBOD逻辑盘的结构了,直接访问这个重组出来的镜像文件或镜像盘,就得到了原JBOD逻辑盘中的数据。

本章介绍了各种级别RAID的数据结构、RAID故障的原因及RAID数据恢复的基本思路,RAID数据恢复的主要方法是将物理盘去RAID化后的虚拟重组,在重组之前最重要的工作是RAID结构分析,这也是RAID数据恢复中难道最大的工作,如果能够正确分析出RAID结构,虚拟重组这一步就可以交给工具软件去完成了,本书第二章将介绍RAID数据恢复的各种实用工具。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2024-6-2 01:50 , Processed in 0.080064 second(s), 26 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|联系我们|专门网

返回顶部