RAID 5 (分布式奇偶校验的独立磁盘结构)


RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。

工作原理

RAID5和 RAID4一样,数据以块为单位分布到各个硬盘上。RAID 5不对数据进行备份,而是把数据和与其相对应的 奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据损坏后,利用剩下的数据和相应的 奇偶校验信息去恢复被损坏的数据。

校验

RAID5校验位算法原理
P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn为 数据块,P为校验,xor为异或运算)
XOR(Exclusive OR)的校验原理如下表:
A值
B值
Xor结果
0
0
0
1
0
1
0
1
1
1
1
0
这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR结果为0,A与B不一样时,XOR结果就是1,而且知道XOR结果和A与B中的任何一个数值,就可以反推出另一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。

读写

用简单的语言来表示,至少使用3块硬盘(也可以更多)组建RAID5 磁盘阵列,当有数据写入硬盘的时候,按照1块硬盘的方式就是直接写入这块硬盘的 磁道,如果是RAID5的话这次数据写入会根据算法分成3部分,然后写入这3块硬盘,写入的同时还会在这3块硬盘上写入校验信息,当读取写入的数据的时候会分别从3块硬盘上读取数据内容,再通过检验信息进行校验。当其中有1块硬盘出现损坏的时候,就从另外2块硬盘上 存储的数据可以计算出第3块硬盘的数据内容。也就是说raid5这种存储方式只允许有一块硬盘出现故障,出现故障时需要尽快更换。当更换 故障硬盘后,在故障期间写入的数据会进行重新校验。 如果在未解决 故障又坏1块,那就是灾难性的了。

存储

RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了 数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下 奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。
做 raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好 硬盘转速一样,否则会影响性能,而且可用空间=磁盘数n-1,Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量。

RAID5数据恢复

RAID-5 数据恢复思路RAID-5阵列中数据的分布与RAID-0类似,数据也是分布到每块硬盘上,与RAID-0不同的是,RAID-5中每个条带组中总有一个条带是校验块。
RAID-5能够支持在一块盘离线的情况下保证数据的正常访问,如果有两块或两块以上硬盘同时离线,或者RAID信息出错等原因,阵列便会失效,这时就需要对数据进行重组。
对RAID-5的数据进行重组,也需要先把物理盘区RAID化,作为单盘进行分析,如图中的四块物理盘,把四块物理盘中的数据按照“A、B、C、D、E、F、G、H……”的顺序拼接好,就是RAID-5逻辑盘中完整的数据。
因为RAID-5的每块物理盘中都有校验信息,所以分析RAID-5就需要比RAID-0多一个因素,即校验块的位置和方向,另外,RAID-5中数据块的走向也会不一样,分为异步和同步,也就是说,RAID-5 有四个因素很重要,第一个是RAID中每个条带的大小,也就是“A”或“B”。
这些 数据块所占用的 扇区数;第二个因素是RAID中硬盘的排列顺序,也就是盘序;第三个因素是校验块的循环方向;第四个因素是数据块的走向。
根据RAID5的这些属性结构,把所有取出来的数据按照顺序衔接成一个 镜像文件或者是镜像盘,这就成为完整的原RAID-5逻辑盘的结构了,直接访问这个重组出来的镜像文件或镜像盘,就得到了原RAID-5逻辑盘中的数据

RAID 5故障分析

RAID-5故障原因分析这里说的RAID-5故障,是指RAID-5逻辑盘丢失或不可访问。导致RAID-5故障的原因主要有以下几种:
(1)RAID 控制器出现物理 故障
RAID控制器如果出现物理故障,将不能被计算机识别,也就无法完成对RAID-5中各个物理成员盘的控制,在这种情况下,通过RAID控制器虚拟出来的逻辑盘自然就不存在了。
(2)RAID信息出错
RAID 控制器将物理盘配置为RAID-5后,会生成一些参数,包括该RAID-5的盘序、条带大小、左右结构情况、同步异步情况、RAID-5在每块物理盘中的起始地址等,还会记录有关该RAID-5的相关信息,包括组成该RAID-5的物理盘数目、物理盘的容量大小等,所有这些信息和参数就被称为RAID信息,也称为RAID元数据,它们会被保存到RAID控制器中,有时候也会保存到RAID-5的成员盘中。
RAID信息出错就是指该RAID-5的配置信息和参数出现错误,导致RAID程序不能正确地组织管理RAID-5中的成员盘,从而导致RAID-5逻辑盘丢失或不能访问。
(3)RAID-5成员盘出现物理故障
RAID-5可以允许其中一块成员盘离线而不影响数据的完整性,如果RAID-5中的某一块成员盘出现物理故障,比如电路损坏、磁头损坏、 固件损坏、出现 坏扇区等,该成员盘就不能正常使用,但剩下的成员盘可以利用异或运算计算出离线成员盘中的数据,所以RAID-5还不会崩溃。
如果 系统管理员没有及时替换出现故障的成员盘,当再有一块成员盘再出现故障离线后,RAID-5将彻底崩溃。
(4)人为误操作
如果误将RAID-5中两块以上成员盘同时拔出、或者给RAID-5除尘时将成员盘拔出后忘了原来的顺序、以及不小心删除了RAID-5的配置信息等,都会造成RAID-5崩溃。
(5)RAID控制器的稳定性
RAID-5的数据分布结构中有校验块的存在,当RAID-5中有成员盘离线时,算法将变得更加复杂,RAID控制器将会工作在一个比较吃力的状态。而RAID控制器的负载太重便会极大地增加数据读写时出现I/O滞留的可能性,从而导致更多成员盘离线,或者导致RAID信息出错。



Hadoop:与RAID类似吗?

鉴于cheap and deep(廉价和深入)的倾向,随着时间的推移出现预期的一类或另一类组件失败。所以Hadoop的目的是检测并解决故障。这方面Hadoop有点类似于初期以廉价磁盘冗余阵列为代表的RAID。假设,由许多PC级磁盘构成存储阵列,驱动器将来很可能发生故障。诀窍是允许驱动器出现故障而不丢失数据。不同的RAID级别(0,1,3,5,6等等)提供多种阵列配置和驱动器故障恢复模式。

的确,Hadoop可以看作廉价服务器冗余阵列(RAIS). Hadoop也假设冗余服务器的硬件故障将是一个正常的操作事件,并因此内置恢复进程。大多数部署在Hadoop分布式文件系统(HDFS)中.例如,当提取数据时,它被分解成数据块(默认是64MB块)。块被多次拷贝然后分布――原始和副本――访问DataNodes。HDFS默认创建两份副本,并且通常写入到不同机架的服务器。这个拷贝和分布进程由NameNode管理。如果由于某种原因一个DataNode服务器出现故障,包括内部磁盘故障,这个NameNode将在集群中其它地方找到丢失的数据,当故障节点被重启或替换后进程能够继续执行。

区别于现代RAID阵列

尽管如此,还有一些明显的遗漏。从DataNode的故障中恢复比NameNode中断恢复相对容易。在当前的Apache Hadoop版本中,没有适用于无功能的NameNode的自动恢复规定。Hadoop NameNode是一个臭名昭著的单点故障点(SPOF)——和RAID阵列没有什么不同,单控制器的RAID阵列也是一个SPOF。NameNode损坏关闭集群可能导致数据丢失,如果故障发生,数据不能被恢复。此外,重启大集群(假设数据可恢复)中的NameNode可能花费数小时。

Apache Hadoop寻址问题

缺乏自动NameNode故障转移模式和其它Apache Hadoop的缺点(JobTracker是另一个SPOF)给商业供应商急于出售“企业就绪”方案提供了机会。这些供应商的普遍做法之一是从本质上支持Apache Hadoop,通过APIs访问核心Hadoop组件,像HDFS一样随同他们自身修改,一些开放的和其它的专利。供应商列表分成以下几类(但不限于此):

• EMC

• HortonWorks

• IBM

• MapR (也是由EMC Greenplum提供)

• Red Hat

这些供应商(其它供应商希望在解决问题的同时,保留Hadoop的MapReduce框架)的业务首先是为了解决NameNode和JobTracker SPOF问题。例如,MapR是Apache Hadoop工具的分布,实现集群中跨服务器分布式NameNode功能(分布式NameNode负载均衡)。Red Hat的GlusterFS使用它内置的元数据感知NameNode,完全消除了元数据服务器。

我们也提到,Hadoop创建多个跨集群分布的数据副本,适用于不同的恢复场景。然而,使用快照替代可能适用于回滚集群到一个已知的好的状态,同时降低全数据拷贝的开销。一些供应商在他们的Hadoop架构中支持快照拷贝。

回顾我们关于向外扩展的网络直连存储(NAS)作为Hadoop主存储的讨论, EMC Isilon也可以用来解决这些问题。Isilon的OneFS全局命名空间文件系统能够支持Greenplum Hadoop (HD)集群。Isilon把HDFS看作“过线”协议,因此是第一个集成到HDFS的SoNAS平台。它也解决了Hadoop NameNode 和 JobTracker功能的单点故障。

Apache Hadoop的回应

公平地说,我们不得不指出Apache社区清楚Hadoop当前NameNode和其它问题的缺陷。事实上,现在从Cloudera (CDH 4.0)可以得到一个重要的作为测试版的新版本,专门针对NameNode SPOF问题。它包括一个HDFS的高可用(HA)版本.在HA版本中是一个“热备”NameNode,在管理员控制下,当活动节点出现故障或因管理员在日常维护和升级将NameNode离线时接管——通常这种情况很有可能。总之,HDFS HA包括两个主/备配置的NameNodes。将来,支持自动NameNode故障切换。

结语

我们由关注大数据存储开始本系列,另一种说法是PB级存储,大数据分析是做商业智能(BI)的新途径。但是,我们已经看到大数据存储如何与Hadoop结合使用——集成大数据存储和分析——Hadoop可以被看作一个PB级存储设备。

然而,我们还没有真正探索一个最终的但重要的因素:成本。除了我们以前描述的给无共享集群增加网络存储的潜在问题,一个存储区域网络(SAN)和NAS也被“传统主义者”视为太昂贵的方法。记住这个准则:cheap and deep。与之相似,在集群结点级固态硬盘(SSD)作为直连存储(DAS)的替代方案。甚至能够用涡轮给集群增压的存储在规模和适用性上被视为太昂贵,只适用于那些愿意为性能付钱的用户。

真正的问题是廉价和深的思想将来是否会在企业级数据中心盛行。如果确实如此,节点级DAS作为Hadoop唯一的存储层将很可能盛行,直到有人意识到持续增加服务器到集群来适应数据增长,同时会有越来越多的增长维护问题和管理开销方面成本影响。如果不是这样,为了业务连续和数据存储目的SAN 和/或 NAS将作为一级或二级存储层,并且存储管理员的技能将被再次加分。




百度百科,http://os.51cto.com/art/201207/347460.htm


你可能感兴趣的:(RAID 5 (分布式奇偶校验的独立磁盘结构))