当前位置:首页 » 操作系统 » raid算法

raid算法

发布时间: 2023-01-13 05:16:20

‘壹’ RAID介绍

RAID全称为廉价磁盘冗余阵列(Rendant Arrays of Independent Disk),其原理就是:将多个便宜的磁盘组合成一个磁盘阵列组。提升了磁盘的读写性能,通常用在服务器上。RAID分为不同的级别,不同的级别在数据可靠性以及读写性能都不一样。可以根据自己的生产环境来使用不同的级别。常用的RAID有:RAID0,RAID1,RAID5,RAID6,RAID1+0,RAID0+1等等。

RAID0又叫条带卷(strip)将数据分段存储于各个磁盘中,读写操作可以并行执行。因此其读写速率为单个磁盘的N倍(N为组成RAID0的磁盘个数),但是却没有数据冗余,单个磁盘的损坏会导致数据的不可修复。在RAID0中,数据以chunk方式存储。大多数striping的实现允许管理者通过调节两个关键的参数来定义数据分段及写入磁盘的 方式,这两个参数对RAID0的性能有很重要的影响。

stripe width是指可被并行写入的 stripe 的个数,即等于磁盘阵列中磁盘的个数。

也可称为block size(chunk size,stripe length,granularity),指写入每个磁 盘的数据块大小。以块分段的RAID通常可允许选择的块大小从 2KB 到 512KB不等,也有更 高的,但一定要是2的指数倍。以字节分段的(比如RAID3)一般的stripe size为1字节或者 512字节,并且用户不能调整。 stripe size对性能的影响是很难简单估量的,最好在实际应用中依自己需求多多调整并 观察其影响。通常来说,减少stripe size,文件会被分成更小的块,传输数据会更快,但 是却需要更多的磁盘来保存,增加positioning performance,反之则相反。应该说,没有 一个理论上的最优的值。很多时候,也要考虑磁盘控制器的策略,比如有的磁盘控制器会等 等到一定数据量才开始往磁盘写入。

镜像存储(mirroring),没有数据校验。数据被同等地写入两个或多个磁盘中,可想而知,写入速度会比较 慢,但读取速度会比较快。读取速度可以接近所有磁盘吞吐量的总和,写入速度受限于最慢 的磁盘。 RAID1也是磁盘利用率最低的一个。如果用两个不同大小的磁盘建立RAID1,可以用空间较小 的那一个,较大的磁盘多出来的部分可以作他用,不会浪费。

奇偶校验(XOR),数据以块分段条带化存储。校验信息交叉地存储在所有的数据盘上。
RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和 相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是 说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏 后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动 利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。

RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但 保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取 速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢。

类似RAID5,但是增加了第二个独立的奇偶校验信息块,两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给 奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。
由图所知,每个硬盘上除了都有同级数据XOR校验区外,还有一个针对每个数据 块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的。从数 学角度来说,RAID 5使用一个方程式解出一个未知变量,而RAID 6则能通过两个独立的线性 方程构成方程组,从而恢复两个未知数据。
伴随着硬盘容量的增长,RAID6已经变得越来越重要。TB级别的硬盘上更容易造成数据丢失, 数据重建过程(比如RAID5,只允许一块硬盘损坏)也越来越长,甚至到数周,这是完全不可接受的。而RAID6允许两 块硬盘同时发生故障,所以渐渐受到人们的青睐。
伴随CD,DVD和蓝光光盘的问世,存储介质出现了擦除码技术,即使媒介表面出现划痕,仍然可以播放,大多数常见的擦除码算法已经演变为上世纪60年代麻省理工学院林肯实验室开 发的Reed-Solomon码。实际情况中,多数RAID6实现都采用了标准的RAID5教校验比特和Reed-Solomon码 。而纯擦除码算法的使用使得RAID 6阵列可以失效两块以上的硬盘,保护力度更强,有些实现方法提供了多种级别的保护,甚至允许用户(或存储管理员)指定保护级别。

RAID1+0与RAID0+1相似,但是先做镜像(1),再做条带(0)
二者在读写性能上没有什么差别。但是在安全性上RAID10要好于 RAID01。如图中所示,假设DISK0损坏,在RAID10中,在剩下的3块盘中,只有当DISK1故障, 整个RAID才会失效。但在RAID01中,DISK0损坏后,左边的条带将无法读取,在剩下的3快盘 中,只要DISK2或DISK3两个盘中任何一个损坏,都会导致RAID失效。
RAID10和RAID5也是经常用来比较的两种方案,二者都在生产实践中得到了广泛的应用。 RAID10安全性更高,但是空间利用率低。至于读写性能,与cache有很大关联,最好根据实 际情况测试比较选择。

RAID0+1是RAID0和RAID1的结合。先做条带(0),再做镜像(1)
以四个磁盘组成的RAID 0+1为例,其数据存储方式如图所示:RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。
由于RAID 0+1也通过数据的100%备份功能提供数据安全保障,因此RAID 0+1的磁盘空间利用率与RAID 1相同,存储成本高。

参考文档:
http://blog.jobbole.com/83808/

‘贰’ RAID是什么意思

Raid定义

RAID(Rendant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

二、RAID的几种工作模式

1、RAID0

即Data Stripping数据分条技术。RAID 0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数据安全性要求不高的情况下才被使用。

(1)、RAID 0最简单方式

就是把x块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起,形成一个独立的逻辑驱动器,容量是单独硬盘的x倍,在电脑数据写时被依次写入到各磁盘中,当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中,它的好处是可以增加磁盘的容量。速度与其中任何一块磁盘的速度相同,如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,可靠性是单独使用一块硬盘的1/n。

(2)、RAID 0的另一方式

是用n块硬盘选择合理的带区大小创建带区集,最好是为每一块硬盘都配备一个专门的磁盘控制器,在电脑数据读写时同时向n块磁盘读写数据,速度提升n倍。提高系统的性能。

2、RAID 1

RAID 1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用率为50%,故成本最高,多用在保存关键性的重要数据的场合。RAID 1有以下特点:

(1)、RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组镜像盘中的任何一个磁盘读取数据。

(2)、磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。

(3)、只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。

(4)、出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。

(5)、更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。

(6)、RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。
3、RAID0+1

把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。

4、RAID2

电脑在写入数据时在一个磁盘上保存数据的各个位,同时把一个数据不同的位运算得到的海明校验码保存另一组磁盘上,由于海明码可以在数据发生错误的情况下将错误校正,以保证输出的正确。但海明码使用数据冗余技术,使得输出数据的速率取决于驱动器组中速度最慢的磁盘。RAID2控制器的设计简单。

5、RAID3:带奇偶校验码的并行传送

RAID 3使用一个专门的磁盘存放所有的校验数据,而在剩余的磁盘中创建带区集分散数据的读写操作。当一个完好的RAID 3系统中读取数据,只需要在数据存储盘中找到相应的数据块进行读取操作即可。但当向RAID 3写入数据时,必须计算与该数据块同处一个带区的所有数据块的校验值,并将新值重新写入到校验块中,这样无形虽增加系统开销。当一块磁盘失效时,该磁盘上的所有数据块必须使用校验信息重新建立,如果所要读取的数据块正好位于已经损坏的磁盘,则必须同时读取同一带区中的所有其它数据块,并根据校验值重建丢失的数据,这使系统减慢。当更换了损坏的磁盘后,系统必须一个数据块一个数据块的重建坏盘中的数据,整个系统的性能会受到严重的影响。RAID 3最大不足是校验盘很容易成为整个系统的瓶颈,对于经常大量写入操作的应用会导致整个RAID系统性能的下降。RAID 3适合用于数据库和WEB服务器等。

6、 RAID4

RAID4即带奇偶校验码的独立磁盘结构,RAID4和RAID3很象,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘,RAID4的特点和RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问数据的效率不怎么好。
7、 RAID5

RAID 5把校验块分散到所有的数据盘中。RAID 5使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,从而消除了产生瓶颈的可能。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。RAID 5提高了系统可靠性,但对数据传输的并行性解决不好,而且控制器的设计也相当困难。

8、RAID6

RAID6即带有两种分布存储的奇偶校验码的独立磁盘结构,它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合,使用了二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载,很少人用。

9、 RAID7

RAID7即优化的高速数据传送磁盘结构,它所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性和系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主机,当多用户访问系统时,访问时间几乎接近于0。但如果系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作,RAID7系统成本很高。

10、 RAID10

RAID10即高可靠性与高效磁盘结构它是一个带区结构加一个镜象结构,可以达到既高效又高速的目的。这种新结构的价格高,可扩充性不好。

11、 RAID53

RAID7即高效数据传送磁盘结构,是RAID3和带区结构的统一,因此它速度比较快,也有容错功能。但价格十分高,不易于实现。

个人使用磁盘RAID主要是用RAID0、 RAID1或RAID0+1工作模式。
参考资料:历史回答

‘叁’ 什么叫RAID写惩罚不同RAID要如何计算

RAID 0(Striped Disk Array without Fault Tolerance)
RAID 0是把所有的硬盘并联起来成为一个大的硬盘组。其容量为所有属于这个组的硬盘的总和。所有数据的存取均以并行分割方式进行。由于所有存取的数据均以平衡方式存取到整组硬盘里,存取的速度非常快。越是多硬盘数量的RAID 0阵列其存取的速度就越快。容量效率方面也是所有RAID格式中最高的,达到100%。但RAID 0有一个致命的缺点–就是它跟普通硬盘一样没有一点的冗余能力。一旦有一个硬盘失效时,所有的数据将尽失。没法重组回来!一般来讲,RAID 0只用于一些已有原数据载体的多媒体文件的高速读取环境。如视频点播系统的数据共享部分等。RAID 0只需要两个或以上的硬盘便能组成。

RAID 1(Mirroring)
RAID 1是硬盘镜像备份操作。由两个硬盘所组成。其中一个是主硬盘而另外一个是镜像硬盘。主硬盘的 数据会不停的被镜像到另外一个镜像硬盘上。由于所有主硬盘的数据会不停地镜像到另外一个硬盘上, 故RAID 1具有很高的冗余能力。达到最高的100%。可是正由于这个镜像做法不是以算法操作,故它的容量效率非常的低,只有50%。RAID 1只支持两个硬盘操作。容量非常有限,故一般只用于操作系统中。

RAID 0+1(Mirroring and Striping)
RAID 0+1即由两组RAID 0的硬盘作RAID 1的镜像容错。虽然RAID 0+1具备有RAID 1的容错能力和RAID 0的容量性能。但RAID 0+1的容量效率还是与RAID 1一样只有50%,故同样地没有被普及使用。

RAID 3(Striping with dedicated parity)
RAID 3在安全方面以奇偶校验(parity check)做错误校正及检测,只需要一个额外的校检磁盘(parity disk)。奇偶校验值的计算是以各个磁盘的相对应位作XOR的逻辑运算,然后将结果写入奇偶校验磁盘, 任何数据的修改都要做奇偶校验计算。如某一磁盘故障,换上新的磁盘后,整个磁盘阵列(包括奇偶校验 磁盘)需重新计算一次,将故障磁盘的数据恢复并写入新磁盘中,如奇偶校验磁盘故障,则重新计算奇偶 校验值,以达容错的要求。

RAID 5(Striping with distributed parity)
RAID 5也是一种具容错能力的RAID 操作方式,但与RAID 3不一样的是RAID 5的容错方式不应用专用容错硬盘,容错信息是平均的分布到所有硬盘上。当阵列中有一个硬盘失效,磁盘阵列可以从其他的几个硬盘的对应数据中算出已掉失的数据。由于我们需要保证失去的信息可以从另外的几个硬盘中算出来,我们就需要在一定容量的基础上多用一个硬盘以保证其他的成员硬盘可以无误地重组失去的数据。其总容量为(N-1)x最低容量硬盘的容量。从容量效率来讲,RAID 5同样地消耗了一个硬盘的容量,当有一个硬盘失效时,失效硬盘的数据可以从其他硬盘的容错信息中重建出来,但如果有两个硬盘同时失效的话,所有数据将尽失。

‘肆’ 简答题:RAID磁盘阵列

RAID是磁盘阵列的基本功能,一般的磁盘阵列都具备或多或少的RAID功能。
RAID的作用主要是两个:其一,通过某种算法实现多个磁盘的整合,提高系统的整体可靠性;其二,通过某种算法实现多个磁盘的整合,提高系统的整体性能。
常见的RAID基础类型有:RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7。在此基础上通过多种算法的组合生成新的RAID类型,常见的是RAID10、RAID0+1、RAID50等等。
不管是何种RAID类型,其提高可靠性基本上两种途径:1、通关过镜像方式保存多种数据,如RAID1;2、通过可逆算法生成校验码,实现数据可靠性提升,如RAID2、RAID3、RAID4、RAID5、RAID6、RAID7等。提高性能主要是通过多个硬盘的并发访问实现的。
一般来说,磁盘阵列实现RAID功能主要是两部分完成:1、RAID算法;2、IO。
两部分决定了阵列实现RAID功能的性能、可靠性和造价。
通常全部软件实现的方式,造价低、实现方便,但是性能和可靠性相对要低些;
全部通过专用芯片实现,造价高,但是性能和可靠性相对要高些。

‘伍’ 服务器怎么做RAID

制作磁盘阵列(RAID,Rendant Array of Independent Disks),可以有以下操作:

在Adaptec磁盘阵列控制器上创建Raid(容器),在这种阵列卡上创建容器的步骤如下(注意:请预先备份您服务器上的数据,配置磁盘阵列的过程将会删除服务器硬盘上的所有数据!):

第1步,首先当系统在自检的过程中出现如(图1)提示时,同时按下“Ctrl+A”组合键。进入如(图2)所示的磁盘阵列卡的配置程序界面。

图十

第9步,容不得器创建好后,使用“ESC”键退出磁盘阵列配置界面,并重新启动计算机即可。

‘陆’ RAID5的具体原理

下面给大家介绍一个专业一点的RAID方式,说它是专业的RAID模式是因为它需要单独的硬件支持才行。RAID 5模式的工作原理如下:
RAID 5使用至少三块硬盘来实现阵列,它既能实现RAID 0的加速功能也能够实现RAID 1的备份数据功能,在阵列当中有三块硬盘的时候,它将会把所需要存储的数据按照用户定义的分割大小分割成文件碎片存储到两块硬盘当中,此时,阵列当中的第三块硬盘不接收文件碎片,它接收到的是用来校验存储在另外两块硬盘当中数据的一部分数据,这部分校验数据是通过一定的算法产生的,可以通过这部分数据来恢复存储在另外两个硬盘上的数据。另外,这三块硬盘的任务并不是一成不变的,也就是说在这次存储当中可能是1号硬盘和2好硬盘用来存储分割后的文件碎片,那么在下次存储的时候可能就是2号硬盘和3号硬盘来完成这个任务了。可以说,在每次存储操作当中,每块硬盘的任务是随机分配的,不过,肯定是两块硬盘用来存储分割后的文件碎片另一块硬盘用来存储校验信息。

这个校验信息一般是通过RAID控制器运算得出的,通常这些信息是需要一个RAID控制器上有一个单独的芯片来运算并决定将此信息发送到哪块硬盘存储。

RAID 5同时会实现RAID 0的高速存储读取并且也会实现RAID 1的数据恢复功能,也就是说在上面所说的情况下,RAID 5能够利用三块硬盘同时实现RAID 0的速度加倍功能也会实现RAID 1的数据备份功能,并且当RAID 5当中的一块硬盘损坏之后,加入一块新的硬盘同样可以实现数据的还原。

下面来分析一下RAID 5如何实现对数据的还原,举个例子来说,使用3块硬盘来构成一个RAID 5阵列,用户定义的分割文件大小为64K,此时需要存储的文件大小为128K。首先,当RAID控制器接收到这部分数据之后利用一定的算法得出校验信息,然后将这128K的文件分割成两个大小为64K大小的文件碎片,然后将这两个文件碎片同时分别放往1号硬盘和2号硬盘,最后校验信息被发往3号硬盘。如果这个阵列当中某个硬盘损坏了,还是可以恢复原来的数据:如果上面用来存储校验信息的3号硬盘损坏了,可以通过1号和2号硬盘来重新生成校验信息;如果损坏的是1号或者2号硬盘,可以利用3号硬盘上存储的校验信息重新生成原来的文件碎片。

RAID 5模式并不是一些都好,如果阵列当中某块硬盘上的信息发生了改变的话,那么就需要重新计算文件分割碎片,并且,校验信息也需要重新计算,这时,三个硬盘都需要重新调用。

同样,如果要做RAID 5阵列的话,最好使用相同容量相同速度的硬盘,RAID 5模式的有效容量是阵列中容量最小的硬盘容量乘上阵列中硬盘数目减去一后的数,这里硬盘数目要减去一是因为其中有一块硬盘用来存放校验信息。

RAID 5既能够实现速度上的加倍,同时也能够保证数据的安全性,所以在很多高端系统当中都使用这种RAID模式。

从RAID 0到RAID 7都有相对应的组合方式,但是有些并不常用。还有一种方式是RAID 10,这种方式其实就是RAID 0+1,它的性能基本上和RAID 5相同,既有RAID 0在速度上的优势,同时也有RAID 1在数据安全上的优势,不过,想要组建一个RAID 10模式需要至少四块硬盘,这个成本就比较高了。

热点内容
编译不成功怎么办 发布:2025-05-16 10:35:54 浏览:610
如何修改密码找回 发布:2025-05-16 10:35:53 浏览:568
怎么才能编译本书 发布:2025-05-16 10:27:47 浏览:757
ssd服务器电脑 发布:2025-05-16 10:26:25 浏览:827
水果忍者源码 发布:2025-05-16 10:26:22 浏览:472
python中ord函数 发布:2025-05-16 10:14:25 浏览:340
电脑启动后无法连接服务器 发布:2025-05-16 10:06:39 浏览:984
jar包编译过程 发布:2025-05-16 10:03:37 浏览:679
选举源码 发布:2025-05-16 09:58:59 浏览:749
超级访问陈小春应采儿 发布:2025-05-16 09:43:29 浏览:479