RAID技术原理【浅析】

目录

WHAT

WHY

HOW

关键技术

RAID等级

MERIT & DEMERIT

SCENARIO

REMARK

REFERENCE


 

WHAT

RAID( Redundant Array of Inexpensive Disks ,廉价磁盘冗余阵列)。后改称独立磁盘冗余阵列( Redundant Array of Independent Disks )。

是一种高性能、高可用的多磁盘存储技术。

其初衷是为大型服务器提供高性能的存储功能和冗余的数据安全。

 

WHY

上个世纪90年代,受限于存储技术发展,磁盘的成本、性能、可用性都不尽人意。

一方面,大容量磁盘的成本居高不下;

另一方面,大规模集成电路的飞速发展使得CPU处理效率逐步提升,但磁盘的数据传输速率却难以大幅提高;

除此之外,普通磁盘驱动器并不提供硬件级别的容错能力,从而使得磁盘的可用性受到限制。

而RAID技术的出现,较好的解决了以上问题:

1.RAID技术降低了存储成本

RAID技术通过多个容量较小、较为廉价的磁盘进行组合,从而获得与昂贵的大容量磁盘相当的容量、性能和可靠性。从而降低了存储成本。

2.RAID技术提高了存取性能

RAID技术中,由于多个磁盘驱动器可以并行传输数据,而这若干个磁盘对外又表现为一个逻辑上的独立的磁盘驱动器。从而可以使得数据传输速率得到数倍乃是数十倍的提升。

3.RAID技术提供了容错机制

RAID 采用镜像和数据校验等数据冗余技术,保证了阵列中即使有磁盘出现损坏,仍能利用校验冗余信息对数据进行校验和纠错。从而大幅的提升了数据可用性和可靠性。

上述特点,也正是RAID技术取得成功的原因。

 

HOW

RAID技术的基本思想是将多个容量较小、相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵的大容量磁盘相当的容量、性能、可靠性。

 

关键技术

1.磁盘镜像(Disk Mirroring)

磁盘镜像是指将一个磁盘驱动器中的数据复制到相同功能的存储装置中,以起到增强数据完整性。

优点:实现了容错功能。当主磁盘驱动器发生故障时,由于有备份磁盘的存在,在进行切换后主机仍能正常工作。

缺点:磁盘镜像虽然实现了容错功能,却使磁盘的利用率降至50%,也未能使服务器的磁盘I/O速度得到提高。

 

2.数据条带化(Data Striping)

数据条带化是指利用条带化技术,把一段连续的数据分割成相同大小的数据块,并将其分别写入到阵列中的不同磁盘上。

优点:数据条带化技术将数据以块的方式分布存储在多个磁盘中,使得多个进程可以并发的访问磁盘。从而获得了数倍乃至数十倍的性能提升。

缺点:由于数据条带化技术并不原生具有容错机制,任何一个数据条带损坏都会导致整个数据不可用,采用数据条带化技术反而增加了数据丢失的概率。

 

3.数据校验(Data validation)

数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。

优点:数据校验提供了较高的可用性和容错性。当磁盘中部分数据出错时,可以通过对剩余数据和校验数据进行反校验计算重建丢失的数据。而且数据校验相比磁盘镜像,大幅的缩减了冗余开销。

缺点:引入数据校验机制后,由于每次数据读写都要进行大量的校验运算,所以会在一定程度上影响性能。

海明校验码(Hamming Code Check)和异或校验(XOR Check)是两种最为常用的数据校验算法。

 

RAID等级

RAID分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。

SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级。

本文中只叙述RAID0、RAID1、RAID2、RAID3、RAID5、RAID6、RAID10这几种较常用的RAID形式。

RAID0

RAID0即无数据冗余的数据条带化技术。

数据从内存缓冲区写入磁盘时,根据磁盘数量将数据分成N份,这些数据同时并发写入阵列中的N块磁盘中,使得整体写入速度是单一磁盘的N倍。读取时也一样,因此RAID0具有极高的数据读写速度。但RAID不做数据备份,N块磁盘中只要有一块损坏,数据完整性就会受到破坏,导致所有磁盘的数据都会损坏。

RAID技术原理【浅析】

RAID1

RAID1又称为磁盘镜像。

数据在写入磁盘时,会在另一块闲置的磁盘上生成镜像文件。这样任何一块磁盘损坏都不会导致数据丢失,再插入一块新的磁盘就可以通过复制数据的方式自动修复,具有较高的可靠性。虽然这样对数据来讲较为安全,但是成本也会明显增加,磁盘利用率仅为50%。

RAID技术原理【浅析】

RAID2

RAID2 称为带海明码校验的磁盘阵列。

其设计思想是利用海明码实现数据校验冗余,并利用数据条带化技术将数据分布于不同磁盘上。

海明码是一种在原始数据中加入若干校验码来进行错误检测和纠正的编码技术。海明码位数与数据的位数遵循一个不等式关系:2^P ≥ P + D +1(P:海明码位数;D:数据位数)。即4位数据需要3位海明码,7位数据需要4位海明码,64位数据时就需要7位海明码。

由于采用了数据条带化技术,RAID2每次读写都需要全组磁盘联动。为了最大化其性能,最好保证每块磁盘主轴同步。故RAID2整体的存取速度受限于阵列中最慢的磁盘驱动器。

RAID技术原理【浅析】

RAID3

RAID3被称为带奇偶校验码的并行访问磁盘阵列。

RAID3类似于RAID2,采用数据条带化技术将数据存储于不同磁盘之上。并采用一个专门的磁盘作为校验盘,存储XOR校验所产生的奇偶校验信息。

在一个规模为N(N>=3)的磁盘阵列中,写入数据时,将数据分为N-1份,并发写入N-1块磁盘(数据盘)中,并在第N块磁盘(校验盘)记录校验数据。当一个磁盘损坏时,如果剩余数据盘上该位的奇偶校验等于校验盘上存储的奇偶值,则丢失位为 0;否则,为 1。若校验盘损坏,则利用其余数据盘进行恢复。

因为一般情况下,一台服务器上不会出现同时损坏两块磁盘的情况。所以使用RAID3能保证阵列中任何一块磁盘损坏(包括校验数据磁盘),都可以利用其它N-1块磁盘进行数据恢复。

RAID技术原理【浅析】

RAID5

RAID5称为块交错分布奇偶校验磁盘阵列,是目前最广泛应用的RAID技术。

RAID5与RAID3很相似,但校验数据不是写入第N块磁盘,而是螺旋式的写入到所有磁盘中。这样使得校验数据的修改也被平均到所有磁盘上,避免RAID3频繁读写校验盘导致校验盘易受损坏的情况。

RAID5将数据块和对应的校验信息存保存在不同的磁盘上。当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。

RAID技术原理【浅析】

RAID6

RAID6称为带两种分布存储的奇偶校验码独立磁盘阵列,它是对于RAID5的扩展。

上述的几种RAID方案,都只能保证因为单个磁盘故障所引起数据丢失。若两个磁盘同时发生故障,则数据无法恢复。若要解决这种情况,则可以使用RAID6。

RAID6与RAID5类似,但数据只写入N-2块磁盘,并利用两个独立的校验算法在两个磁盘上螺旋式的写入校验信息。

当阵列中有两个磁盘同时失效时(相当于存在两个未知量),则可以通过求解二元方程式的方式,恢复两个未知数据。

RAID技术原理【浅析】

RAID10

顾名思义,RAID10是RAID0和RAID1的结合,也即磁盘镜像和条带化技术的结合。又称为高可靠性与高效磁盘结构。

但对于镜像和条带化的顺序,网上有的文章中进行了详细区分,并划分为RAID01和RAID10两种方案。此处受限于篇幅,且由于RAID10在安全性上有略优于RAID01。所以此处主要介绍RAID10。

RAID10兼备了RAID0和RAID1的优点。RAID10先在两块磁盘中建立镜像,然后再在磁盘内部进行数据条带化。在保证较高的可用性的情况下,也大幅的提升了性能。

RAID技术原理【浅析】

 

MERIT & DEMERIT

正因为不同RAID方案采用了不同的实现原理,从而使各种RAID方案存在各自的优点和缺点。正确的认识其优点和缺点,能够进一步帮助我们加深对RAID技术的理解。

RAID0

优点:RAID0采用无数据冗余的数据条带化技术。实现简单、成本低、具有极高的读写性能(理论上是所有RAID方案中最高的),并能100%的利用存储空间。

缺点:由于RAID0所构建的磁盘阵列中,所有磁盘都是数据盘,不提供数据冗余保护。使得其安全性和容错性十分低下,数据一旦损坏就无法恢复。

 

RAID1

优点:RAID1 技术简单、管理方便。并提供了所有RAID方案中最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。

缺点:RAID1将所有数据完全一致性的写入到工作磁盘和镜像磁盘中,导致其存储空间利用率仅有50%,变相的提升了存储成本。

 

RAID2

优点:RAID2利用海明码校验能够检测最多两个同时发生的比特错误,并且能够更正单一比特的错误。保证了数据安全性和可用性。

缺点:海明码的数据冗余开销较大(但开销低于RAID1),且 RAID2 的数据输出性能受阵列中最慢磁盘驱动器的限制。

 

RAID3

优点:RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能提供高性能(相对单磁盘)、较高可用的数据存储服务。

缺点:向 RAID3 写入数据时,必须计算所有同条带的校验值,并将新校验值写入校验盘中。既影响了效率,又造成了校验盘频繁的读写操作,使得校验盘更容易损坏,需要频繁更换。

 

RAID5

优点:RAID5具有数据安全、读写速度快(采用数据条带化技术)、空间利用率高(相对RAID1)、扩展性好等优点。同时RAID5对RAID3磁盘访问负载不均和RAID4存在写操作性能瓶颈等问题,也进行了很好的优化。

缺点:与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。

 

RAID6

优点:RAID6具有快速的读取性能以及更高的可用性,能够容忍两个硬盘同时损坏的情况。

缺点:RAID6相比RAID5磁盘利用率有所降低,故成本要高于 RAID5 许多。同时由于引入两种校验算法,导致写性能较差,也使得其设计和实施非常复杂。

 

RAID10

优点:RAID10在保持RAID0高容错性的特点之上,采用了数据条带化技术,在一定程度上提升了磁盘读写性能。

缺点:由于采用了磁盘镜像技术,因此RAID10的存储空间整体利用率仅有50%,且采用RAID10构建磁盘阵列时,至少需要保证磁盘数量大于4,成本开销较高。

 

SCENARIO

基于不同的RAID方案所具有的优缺点,在实际应用中,可以依据自己的实际需求选择不同的RAID方案。

RAID0

应用场景:RAID0 具有低成本、高读写性能、100% 的高存储空间利用率等优点,但是它不提供数据冗余保护,一旦数据损坏,将无法恢复。因此,RAID0 一般适用于对性能要求严格但对数据安全性和可靠性不高的应用,如视频、音频存储、临时数据缓存空间等。

 

RAID1

应用场景:RAID1安全性好、技术简单、管理方便。 且拥有完全容错的能力,但实现成本高。RAID1适合应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。

 

RAID2

应用场景:为了发挥RAID多磁盘并行的优势,必须尽量减少磁盘寻道时间(磁盘寻道时间往往比数据传输时间要大几个数量级)。所以RAID2更适合于连续IO,大块IO(比如视频流服务)的情况。

 

RAID3

应用场景:RAID3适合应用于那些写入操作较少,读取操作较多的应用环境,例如数据库和WEB服务器等。

 

RAID5

应用场景:RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,是目前综合性能最佳的数据保护解决方案。基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。

 

RAID6

应用场景:RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10方案的经济性选择。

 

RAID10

应用场景:RAID10适用于对于性能和安全都要求的情况。例如高并发或高访问量数据库主库,存储主库等。

RAID10常常与RAID5放在一起进行比较。RAID10在性能上有一定优势(不需要校验盘),但对于存储空间的利用率上低于RAID5。

 

REMARK

本文是笔者学习网站基础架构有关存储器性能优化相关内容的学习记录,主要描述RAID这一存储优化技术。

本文从WHAT(是什么),WHY(为什么),HOW(如何实现),M&D(优缺点),SCENARIO(应用场景)这五个方面出发,简单的描述了RAID技术的相关内容。

由于只是技术浅析,所以并未全面的描述整个技术体系。初次学习,匆匆写就。如有任何遗漏或错误,欢迎在评论区指正。

感谢。

 

REFERENCE

《大型网站技术架构——核心原理与案例分析》李智慧 著

《RAID技术超详细讲解》 博客园 时光平移

《磁盘阵列》 百度词条