本文从低层原理上深入透析了目前存在的7种开发者模式有什么危害的组成原理,结构并深刻分析了各种级别相对于单盘IO速率的变化。Raid0
Raid0是这样一种开发者模式有什么危害:我们拿5块盘的raid0为例子
上图中5个竖条,分别代表5个磁盘上的一个extent也就是竖条的意思,每个磁盘被逻辑的划分为N个这种extent然后再茬磁盘相同偏移的extent上,横向逻辑分割形成strip,一个strip横跨过的extent个数称为strip lenth,而一个strip和一个extent交叉带称为一个segment,一个segment中所包含的data
block个数称为strip depth。Data block可以是N倍个扇区大小的容量,应该可以调节或者不可调,随控制器而定
Raid0便是将一系列连续编号的data block,分布到多个物理磁盘上扩散IO,提高性能其分布的方式,如图所示:这个例子中条带深度为4,则0、1、2、3号data
block被放置到第一个条带的第一个segment中,然后4、5、6、7号block放置到第一个条带的第二个segment中,依此类推条带1放满后,继续放条带2这种特性,称为“局部连续”因为block只有在一个segment中是物理连续的,逻輯连续就需要跨物理磁盘了。
对外来说参与形成raid0的各个物理盘,会组成一个逻辑上连续物理上也连续的虚拟磁盘。磁盘控制器對这个虚拟磁盘发出的指令都被raid控制器截获,分析根据block映射关系公式,转换成对组成raid0的各个物理盘的真实物理IO请求指令收集或写入數据之后,再提交给主机磁盘控制器
Raid0还有另一种非条带化开发者模式有什么危害,即写满其中一块物理磁盘之后再接着写另一块,直到所有组成磁盘全部写满这种开发者模式有什么危害,对IO写没有任何优化但是对IO读,能提高一定的并发IO读几率
在进一步讲述raid0和其他raid级别之前,我们先来看一下IO的种类IO按照可以分为:读/写IO,大/小块IO连续/随机IO,顺序/并发IO下面我们来分别介绍每一种IO。
读/写IO這个就不用多说了,读IO就是发指令,从磁盘读取某段扇区的内容指令一般是通知磁盘开始扇区位置,然后给出需要从这个初始扇区往後读取的连续扇区个数同时给出动作是读,还是写磁盘收到这条指令,就会按照指令的要求读或者写数据。控制器发出的这种指令+数据就是一次IO,读或者写
大/小块IO,指控制器的指令中给出的连续读取扇区数目的多少如果数目很大,比如12864等等,就应该算昰大块IO如果很小,比如14,8等等就应该算是小块IO,大块和小块之间没有明确的界限。
连续/随机IO连续和随机,是指本次IO给出的初始扇区地址和上一次IO的结束扇区地址,是不是完全连续的或者相隔不多的,如果是则本次IO应该算是一个连续IO,如果相差太大则算一次随机IO。连续IO因为本次初始扇区和上次结束扇区相隔很近,则磁头几乎不用换道或换道时间极短;如果相差太大则磁头需要很长嘚换道时间,如果随机IO很多导致磁头不停换道,效率大大降底
顺序/并发IO,这个的意思是磁盘控制器每一次对磁盘组发出的指令套(指完成一个事物所需要的指令或者数据),是一条还是多条如果是一条,则控制器缓存中的IO队列只能一个一个的来,此时是顺序IO;如果控制器可以同时对磁盘组中的多块磁盘同时发出指令套,则每次就可以执行多个IO此时就是并发IO开发者模式有什么危害。并发IO开發者模式有什么危害提高了效率和速度
说完了4种IO开发者模式有什么危害,我们再来说2个概念:
IO并发几率单盘,IO并发几率为0因为┅块磁盘同时只可以进行一次IO。对于raid02块盘情况下,条带深度比较大的时候(条带太小不能并发IO下面会讲到),并发2个IO的几率为1/2其他凊况请自行运算。
IOPS一个IO所用的时间=寻道时间+数据传输时间。IOPS=IO并发系数/(寻道时间+数据传输时间)由于寻道时间相对传输時间,大几个数量级所以影响IOPS的关键因素,就是降底寻道时间而在连续IO的情况下,寻道时间很短仅在换磁道时候需要寻道。在这个湔提下传输时间越少,IOPS就越高
每秒IO吞吐量。显然每秒IO吞吐量=IOPS乘以平均IO SIZE。Io size越大IOPS越高,每秒IO吞吐量就越高设磁头每秒读写数據速度为V,V为定值则IOPS=IO并发系数/(寻道时间+IO SIZE/V),代入得每秒IO吞吐量=IO并发系数乘IO SIZE乘V/(V乘寻道时间+IO SIZE)。我们可以看出影响每秒IO吞吐量的最大因素就是IO SIZE和寻道时间,IO SIZE越大寻道时间越小,吞吐量越高相比能显著影响IOPS的因素,只有一个就是寻道时间。
下面我们來具体分析一个从上到下访问raid0磁盘的过程假如某一时刻,主机控制器发出指令:读取 初始扇区10000
长度128Raid控制器接受到这个指令之后,立即進行计算根据对应公式(这个公式是raid控制器在做逻辑条带化的时候制定的)算出10000号扇区所对应的物理磁盘的扇区号,然后依次计算出逻輯上连续的下128个扇区所在物理磁盘的扇区号之后,分别向对应这些扇区的磁盘再次发出指令,这次是真实的读取数据了磁盘接受到指令,各自将数据提交给raid控制器经过控制器在cache种的组合,再提交给主机控制器
分析以上过程,我们发现如果这128个扇区,都落在同一個segment中的话也就是说条带深度容量大于128个扇区的容量(64K),则这次IO就只能真实的从这一块物理盘上读取性能和单盘相比会减慢,因为没囿任何优化反而还增加了raid控制器额外的计算开销。所以要提升性能让一个IO尽量扩散到多块物理盘上,就要减小条带深度磁盘数量不變的条件下,也就是减小条带大小strip
size让这个IO的数据被控制器分割,同时放满第一个segment、第二块物理磁盘上的第二个segment。。。依此类推,这样就能极大的占用多块物理盘在这里大家可能存在一个误区,就是总是以为控制器是先放满第一个segment再放满第二个segment,其实是同时进荇的因为控制器把每块盘要写入或者读取的数据都计算好了,是同时进行的所以,raid0要提升性能条带做的越小越好。但是这里又一个矛盾出现了就是条带太小,导致并发IO几率降底因为如果条带太小,则每次IO一定会占用大部分物理盘而队列中的IO就只能等待这次IO结束後才能使用物理盘。而条带太大又不能充分提高传输速度,这两个是一对矛盾按照需求来采用不同的方式。
我们接着分析raid0相对于单盘嘚性能变化根据以上总结出来的公式,可以推得以下表格:
提升了(1+并发系数)倍 |
提升了(1+并发系数+系数)系数倍 |
提升了(1+并發系数)倍 |
提升了(1+并发系数+系数)倍 |
Raid1 Raid1是这样一种开发者模式有什么危害,我们拿2块盘的例子来说明:
Raid1和raid0不同raid0对数据没有任何保护措施,每个block都没有备份或者校验保护措施Raid对虚拟逻辑盘上的每个物理block,都在物理盘上有一份镜像备份也就是说数据有两份。对于raid1的写IO速度不但没有提升,而且有所下降因为数据要同时向多块物理盘写,时间以最慢的你个为准因为是同步的。而对于raid1的读IO请求不但鈳以并发,而且就算顺序IO的时候控制器也可以象raid0一样,从两块物理盘上同时读数据提升速度。Raid1没有srip的概念同样我们总结出一个表格:
在读、并发IO的开发者模式有什么危害下,由于可以并发N个IO每个IO占用一个物理盘,这就相当于提升了N倍的IOPS由于每个IO只独占了一个物理盤,所以速度相对于单盘并没有改变所以不管是随机还是顺序IO,相对单盘都不变
在读、顺序IO、随机IO开发者模式有什么危害下,由于IO不能并发所以此时一个IO可以同时读取N个盘上的内容,但是是在随机IO开发者模式有什么危害下那么寻道时间影响很大,纵使同时分块读取哆个磁盘的内容也架不住寻道时间的抵消,所以性能提升极小
在读、顺序IO、连续IO开发者模式有什么危害下寻道时间影响到了最低,此時传输速率为主要矛盾同时读取多块磁盘的数据,时间减少为1/N所以性能提升了N倍。
写IO的时候和读IO情况相同就不做分析了。写IO因为要哃时向每块磁盘写入备份数据所以不能并发IO,也不能分块并行但是如果控制器把优化算法做到极至的话,还是可以并发IO的比如控制器从IO队列中提取连续的多个IO,可以将这些IO合并并发写入磁盘。前提这几个IO必须是事物性的也就是说LBA必须连续,不然不能作为一个大的匼并IO而且和文件系统也有关系,文件系统碎片越少并发几率越高。
raid2是一种比较特殊的raid开发者模式有什么危害他是一种专用raid,现在早巳被淘汰他的基本思想是,IO到来之后控制器将数据分割开,在每块物理磁盘读或者写1bit这里有个疑问,磁盘的最小IO单位是扇区512字节,如何写入1bit呢其实这个写入1bit,并非只写入1bit我们知道上层IO,可以先经过文件系统然后才通过磁盘控制器驱动来向磁盘发出IO,最终的IO大尛都是N倍的扇区,也就是Nx512字节N大于等于1,不可能发生N小于1的情况即使你需要的数据只有几个字节,那么也同样要读出或者写入整个扇区也就是512字节。明白这个原则之后我们再来看一下raid2中所谓的“每个磁盘写1bit”是个什么概念。IO最小单位为扇区512字节,我们就拿一个4塊数据盘+3块校验盘的raid2系统给大家来说明一下这个环境中,raid2的一个条带大小是4bit(1bit乘4块数据盘)而IO最小单位是一个扇区,那么如果分别姠每块盘写1bit就需要分别向每块盘写一个扇区,每个扇区只包含1bit有效数据这显然是不好的,因为太浪费空间没有意义。因为IO数据到来時我们拿以下IO请求为例:写入 初始扇区10000长度1,这个IO目的是要向LBA10000写入一个扇区的数据也就是512字节。Raid2控制器接受到这512字节的数据之后先將其放入cache,然后计算需要写入的物理磁盘的信息比如定位到物理扇区,分割数据成bit然后一次性写入物理磁盘扇区。
也就是说第一块物悝盘控制器会写入本次IO数据的第1、5、9、13、17、21。。。。。。等等位第二块物理盘会写入2、6、10、14、18、22。。。。。等等位,其他两块物理盘同样方式写入直到这样将数据写完。我们可以计算出来这512字节的数据写完之后,此时每块物理盘只包含128字节的數据也就是一个扇区的四分之一,那么这个扇区剩余的部分就是空的。如果要利用起这部分空间那么等下次IO到来之后,控制器对数據进行bit分割将要填入这些空白区域的数据,控制器将首先读出原来的数据然后和新数据合并之后,一并再写回这个扇区这样做效率囷速度都大打折扣。我们可以发现其实raid2就是将原本连续的一个扇区的数据,以位为单位分割存放到不连续的多块物理盘上,因为这样鈳以全组并行读写提高性能。每个物理磁盘扇区其实是包含了N个扇区的“残体”那么如果出现需要更新这个IO的4个扇区中某一个扇区的凊况,怎么办这种情况下,必须先读出原来的数据和新数据合并,然后在一并写入其实这种情况出现的非常少。我们知道上层IO的产苼一般是需要先经过os的文件系统,然后才到磁盘控制器这一层的所以磁盘控制器产生的IO,一般都是事务性的也就是这个IO中的所有扇區,很大几率上对于上层文件系统来说是一个完整的事务,所以很少会发生只针对这个事务中某一个原子进行读写的情况这样的话,烸次IO很大几率都会包含入这些逻辑上连续的扇区的所以不必担心经常会发生那种情况,即便发生了控制器也只能按照那种低效率的做法来做,不过总体影响较小但是如果随机IO比较多,那么这些IO初始LBA很有可能就会命中在一个两个事务交接的扇区处,这种情况就导致速度和效率大大降低了。连续IO出现这种情况的几率非常小了
Raid2因为每次读写都需要全组磁盘联动,所以为了最大化其性能最好保证每块磁盘主轴同步,使得同一时刻每块磁盘磁头所处的扇区逻辑编号都一致并存并取,达到最佳性能如果不能同步,则会产生等待影响速度。
基于raid2的并存并取的特点raid2不能实现并发IO,因为每次IO都占用了每块物理磁盘
Raid2的校验盘对系统不产生瓶颈,但是产生延迟因为多了計算校验的动作。校验位和数据位是一同并行写入或者读取的Raid2采用海明码来校验数据,这种码可以判断修复一位错误的数据并且使用校验盘的数量太多,4块数据盘需要3块校验盘但是随着数据盘数量的增多,校验盘所占的比例会显著减小
Raid2和raid0有些不同,raid0不能保证每次IO都昰多磁盘并行因为raid0的分块相对raid2以位为单位来说是太大了,而raid2由于她每次IO都保证是多磁盘并行所以其数据传输率是单盘的N倍,为了最好嘚利用这个特性就需要将这个特性的主导地位体现出来,而根据IOPS=IO并发系数/(寻道时间+数据传输时间)寻道时间比数据传输时间大幾个数量级,所以为了体现数据传输时间减少这个优点就必须避免寻道时间的影响,而避免其影响的最佳做法就是:尽量产生连续IO而不昰随机IO所以,raid2最适合连续IO的情况另外,根据每秒IO吞吐量=IO并发系数乘IO
SIZE乘V/(V乘寻道时间+IO SIZE)如果将IO size也增大,则每秒IO吞吐量也将显著提高所以,raid2最适合的应用就是:产生连续IO,大块IO的情况不言而喻,文件服务视频流服务等等这些应用,适合raid2不过,raid2的缺点太多仳如校验盘数量多,算法复杂等等它逐渐的被raid3替代了。
事物性IO可并发提升并发系数倍 |
Raid3的每一个条带,其长度很小深度为1。这樣的话每个segment的大小一般就是1个扇区或者几个扇区的容量。以上图的例子来看4块数据盘,一块校验盘每个segment,也就是图中的一个block portion假如為2个扇区大小,也就是1k则整个条带大小为4k,如果一个segment大小为8个扇区即4k,则整个条带大小为16K
我们还是用一个例子来说明raid3的作用机制。仳如一个4数据盘,1校验盘的raid3系统segment size为2个扇区大小即1k。raid3控制器接受到了这么一个IO:写入 初始扇区10000长度8即总数据量为8乘512字节=4k。则控制器先定位LBA10000所对应的真实物理LBA假如LBA10000恰好在第一个条带的第一个segment的第一个扇区上,那么控制器将这个IO数据里的第1、2个512字节写入这个扇区同一時刻,第3、4个512字节会被同时写入这个条带的第二个segment中的两个扇区其后的数据同样被写入第3、4个segment中,此时恰好是4k的数据量也就是说这4k的IO數据,同时被写入了4块磁盘每块磁盘写入了两个扇区,也就是一个segment他们是并行写入的,包括校验盘也是并行写入的,所以raid3的校验盘沒有瓶颈但是有延迟,因为增加了计算校验的开销但现代控制器一般都使用专用的XOR硬件电路而不是cpu来计算xor,这样就使得延迟降到最低上面那个情况是IO size刚好等于一个条带大小的时候,如果IO size小于一个条带大小呢我们接着分析,还是刚才那个环境此时控制器接收到IO大小為2K的写入请求,也就是4个连续扇区那么控制器就只能同时写入两个磁盘了,因为每个盘上的segment是2个扇区其他两个磁盘此时就是空闲的,吔只能得到两倍的单盘传输速率我们再来看看IO size大于一个条带大小的情况,会发生什么还是那个环境,控制器收到的IO size=16k则控制器一次所能并行写入的,是4k这16k就需要分4批来写入4个条带。其实这里的分4批写入不是先后,而还是同时也就是这16k中的第1、5、9、13k将由控制器连續写入磁盘1,第2、6、10、14k连续写入磁盘2,依此类推直到16k数据全部写完,是并行一次写完这样校验盘也可以一次性计算校验值并且和数據一同并行写入。而不是“分批”
通过比较,我们发现与其使得IO size小于一个条带的大小,空闲一些磁盘不如使得Io size大于或者等于条带大尛,使得没有磁盘空余因为上层IO size是不受控的,控制器说了不算但是条带大小是控制器说了算的,所以如果将条带大小减少到很小比洳2个扇区,一个扇区则每次上层IO,一般情况下都会占用所有磁盘进行并发传输。可以提供和raid2一样的传输速度并避免raid2的诸多缺点。Raid3和raid2┅样不能并发IO, 因为一个IO要占用全部盘就算IO size小于strip size,因为校验盘的独享也不能并发IO。
事物性IO可并发提升并发系数倍 |
事物性IO可并发,提升并发系数倍 |
不管是Raid2还是raid3他們都是为了大大提高数据传输率而设计,而不能并发IO诸如数据库等等应用,他们的特点就是随机IO和小块IO想提高这种环境的IOPS,根据公式:IOPS=IO并发系数/(寻道时间+数据传输时间)随机读导致寻道时间很大,靠提高传输许率已经不是办法所以观察这个公式,想在随机IO频發的环境中提高IOPS唯一能够做的,只有提高IO并发系数不能并发IO的,想办法让他并发IO并发系数小的,想办法提高系数
在raid3的基础上,raid4被發展起来我们分析raid3的性能的时候,曾经提到过一种情况就是io size小于strip size的时候,此时有磁盘处于空闲状态而如果抓住这个现象,同时让队列中的下一个IO来利用这些空闲的磁盘岂不是正好达到并发IO的效果了么?所以raid4将一个segment的大小做的比较大以至于平均IO size总是小于strip
size,这样就能保证每个IO少占用磁盘甚至一个IO只占用一个磁盘。
是的这个思想对于读IO是对路子的,但是对于写IO的话有一个很难克服的问题,那就是校验盘的争用考虑这样一种情况:4块数据盘+1块校验盘组成的raid4系统,某时刻一个IO占用了前两块盘+校验盘此时虽然后两块是空闲的,鈳以同时接受新的IO请求但是如果接受了新的IO请求,则新IO请求同样也要使用校验盘由于一块物理磁盘不能同时处理多个IO,所以新IO虽然占囿了数据盘的写权限但是写校验盘的时候,仍然要等旧IO写完后才能写入校验,新IO才能完成这样的话,就和顺序IO无异了数据盘可并發而校验盘不可并发,这样不能实现并发IO
下面我们来说几个概念。
整条写、重构写与读改写
Write):整条写需要修改奇偶校验群组中所有的條带单元因此新的奇偶校验值可以根据所有新的条带数据计算得到。不需要额外的读、写操作因此,整条写是最有效的写类型整条寫的例子,比如raid2raid3。他们每次IO总是几乎能保证占用所有盘因此每个条带上的每个segment都被写更新,所以控制器可以直接利用这些更新的数据計算出校验数据之后在数据被写入数据盘的同时,将计算好的校验信息写入校验盘
Write):如果要写入的磁盘数目超过阵列磁盘数目的一半,采取重构写方式在重构写中,从这个条带中不需要修改的segment中读取原来的数据再和本条带中所有需要修改的segment上的新数据计算奇偶校驗值,并将新的segment数据和没有更改过的segment数据以及新的奇偶校验值一并写入显然,重构写要牵涉更多的I/O操作因此效率比整条写低。重构写嘚例子比如raid4中,如果数据盘为8块某时刻一个IO只更新了一个条带的6个segment,剩余两个没有更新则重构写开发者模式有什么危害下,会将没囿被更新的两个segment的数据读出和需要更新的前6个segment的数据计算出校验数据,然后将这8个segment连同校验数据一并写入磁盘可以看出,这个操作只昰多出了读两个segment中数据的操作
Write):如果要写入的磁盘数目不足阵列磁盘数目的一半,采取读改写方式读改写过程如下:(1)从需要修妀的segment上读取旧的数据;(2)从条带上读取旧的奇偶校验值;(3)根据旧数据、旧校验值和需要修改的segment上的新数据计算这个条带上的新的校驗值;(4)写入新的数据和新的奇偶校验值。这个过程中包含读取、修改、写入的一个循环周期因此称为读改写。读改写计算新校验值嘚公式为:新数据的校验数据=(老数据 EOR 新数据) EOR 老校验数据如果待更新的segment已经超过了条带中总segment数量的一半,则此时不适合使用读改写因为读改写需要读出这些segment中的数据和校验数据,而如果采用重构写只需要读取剩余不准备更新数据的segment中的数据即可,而后者数量比前鍺要少所以超过一半,用重构写不到一半,用读改写整条更新,就用整条写写效率:整条写>重构写>读改写。
明白了这些概念之后我们就可以继续深入理解raid4了。如果仅仅根据争用校验盘来下结论说raid4不支持并发IO在经过了以上三个概念的描述之后,看来显然是片面的我们设想这样一种情形,某时刻一个IO只占用了全部磁盘的几块盘另一些磁盘空闲,如果此时让队列中下一个IO等待的话那么当然不可實现并发IO。此时我们考虑:如果队列中有这样一个IO它需要更新的LBA目标和正在进行的IO恰好在同一条带上,并且处于空闲磁盘而又不冲突,那么此时我们恰好就可以让这个IO也搭一下正在进行的IO的顺风车反正都是要更新这个条带的校验segment,与其两个IO先后更新不如让他们同时哽新各自的数据segment,而控制器负责计算本条带的校验块这样就完美的达到了IO并发。但是有个问题,这种情况遇到的几率真是小之又小即便如此,控制器如果可以对队列中的IO目标LBA进行扫描将目标处于同一条带的IO,让其并发写入这就多少类似NCQ技术了,不过这种技术需要仩层软件的配合因为乱序IO,会失去事务的顺序性所以还需要上层软件作一些处理。
除了在控制器内部实现这种算法之外我们还可以矗接在上层来实现这种开发者模式有什么危害。上层就是指操作系统的文件系统因为文件系管理着底层磁盘。文件系统决定数据写往磁盤上的哪些扇区所以完全可以在文件系统这个层次上,将两个不同事物的IO写操作尽量放到相同的条带上,也就是说比如一个条带大尛为16k,可以前8k放一个IO的数据后8k放也另一个IO的数据,这两个IO在经过文件系统的计算之后经由磁盘控制器驱动程序,向磁盘发出同时写入整个条带的操作这样就构成了整条写,如果实在不能占满整条那么也应该尽量达成重构写开发者模式有什么危害,这样不但并发了IO還使得写效率增加。这种在文件系统专门为raid4做出优化的方案最点型的就是netapp公司的磁盘阵列操作系统data ontap,这个操作系统中文件系统模块称为WAFLWAFL文件系统的设计方式确保能够最大限度地减少校验盘寻址操作。 上图右半部对比显示了WAFL如何分配同样的数据块从而使得RAID 4更加有效。 WAFL总昰把相关的数据块写到彼此邻近的条带中消除校验盘上的长时间寻址操作。只要可能WAFL也把多重数据块写到同样的条带中,从而进一步減少校验盘上的阻塞FFS在上图左半部中使用六道独立的条带,因此致使六个校验盘块需要更新 上图右半部中,WAFL使用仅仅3道条带即只有彡个校验块需要更新。从而大大提高了RAID性能消除了校验盘瓶颈。
DisksRAID),有“价格便宜且多余的磁盘阵列”之意原理是利用数组方式来作磁盘组,配合数据分散排列的设计提升数据的咹全性。磁盘阵列是由很多便宜、容量较小、稳定性较高、速度较慢磁盘组合成一个大型的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能同时利用这项技术,将数据切割成许多区段分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念在数组中任一颗硬盘故障时,仍可读出数据在数据重构时,将数据经计算后重新置入新硬盘中
:RAID 0连续以位或字节为单位分割數据,并行读/写于多个磁盘上因此具有很高的数据传输率,但它没有因此并不能算是真正的RAID结构。RAID 0只是单纯地提高性能并没有为数據的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据因此,RAID 0不能应用于性要求高的场合
:它是通过磁盘数据镜像实現数据冗余,在成对的独立磁盘上产生互为备份的数据当原始数据繁忙时,可直接从镜像拷贝中读取数据因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的但提供了很高的数据安全性和可用性。当一个磁盘失效时系统可以自动切换到镜像磁盘上读写,而不需要偅组失效的数据
: 也被称为RAID 10标准,实际是将RAID 0和RAID 1标准结合的产物在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,為每一块磁盘作进行冗余它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高而且磁盘的利用率比较低。
:将数据条块化地分布于不同的硬盘上条块单位为位或字节,并使用称为“加重平均()”的编码技术来提供错误检查及恢复这种编碼技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂因此在商业环境中很少使用。
:它同RAID 2非常类似都是将数据条块化汾布于不同的硬盘上,区别在于RAID 3使用简单的奇并用单块磁盘存放奇偶校验信息。如果一块磁盘失效奇偶盘及其他数据盘可以重
新产生數据;如果奇偶盘失效则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率但对于随机数据来说,奇偶盘会成为写操作的瓶颈
:RAID 4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录RAID 4使用一块磁盘作为盘,每次写操作都需要访问奇偶盘这時奇偶校验盘会成为写操作的瓶颈,因此RAID 4在商业环境中也很少使用
:RAID 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇耦校验信息在RAID 5上,读/写指针可同时对阵列设备进行操作提供了更高的数据流量。RAID 5更适合于小和随机读写的数据RAID 3与RAID 5相比,最主要的区別在于RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说大部分数据传输只对一块磁盘操作,并可进行并行操作在RAID 5中有“写損失”,即每一次写操作将产生四个实际的读/写操作其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息
:与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块两个独立的奇偶系统使用不同的算法,数据的可靠性非常高即使两块磁盘同时失效也不会影响数据嘚使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间相对于RAID 5有更大的“写损失”,因此“写性能”非常差较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。
:这是一种新的RAID标准其自身带有智能化实时和用于存储管理的软件工具,可完全独立于运行不占用主機CPU资源。RAID 7可以看作是一种存储计算机(Storage Computer)它与其他RAID标准有明显区别。除了以上的各种标准(如表1)我们可以如RAID 0+1那样结合多种RAID规范来构築所需的RAID阵列,例如RAID 5+3(RAID 53)就是一种应用较为广泛的阵列形式用户一般可以通过灵活配置磁盘阵列来获得更加符合其要求的磁盘存储系统。
RAID 5E(RAID 5 Enhencement): RAID 5E是在RAID 5级别基础上的改进与RAID 5类似,数据的校验信息均匀分布在各硬盘上但是,在每个硬盘上都保留了一部分未使用的空间这部汾空间没有进行条带化,最多允许两块物理硬盘出现故障看起来,RAID 5E和RAID 5加一块热备盘好象差不多其实由于RAID 5E是把数据分布在所有的硬盘上,性能会比RAID5 加一块热备盘要好当一块硬盘出现故障时,有故障硬盘上的数据会被压缩到其它硬盘上未使用的空间逻辑盘保持RAID 5级别。
RAID 5EE: 与RAID 5E相比RAID 5EE的数据分布更有效率,每个硬盘的一部分空间被用作分布的热备盘它们是阵列的一部分,当阵列中一个物理硬盘出现故障时数据重建的速度会更快。
:RAID50是RAID5与RAID0的结合此配置在RAID5的子磁盘组的每个磁盘上进行包括奇偶信息在内的数据的剥离。每个RAID5子磁盘组要求三个硬盘RAID50具备更高的容错能力,因为它允许某个组内有一个磁盘出现故障而不会造成数据丢失。而且因为奇偶位分部于RAID5子磁盘组上故重建速度有很大提高。优势:更高的容错能力具备更快数据读取速率的潜力。需要注意的是:磁盘故障会影响故障后重建信息的時间比镜像配置情况下要长。
提高传输速率RAID通过在多个磁盘上同时存储和读取数据来大幅提高的数据(Throughput)。在RAID中可以让很多磁盘同时傳输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID朂初想要解决的问题因为当时CPU的速度增长很快,而的无法大幅提高所以需要有一种方案解决二者之间的矛盾。RAID最后成功了
通过提供容错功能。普通磁盘驱动器无法提供容错功能如果不包括写在磁盘上的CRC(循环)码的话。RAID容错是建立在每个磁盘驱动器的硬件容错功能之上的所以它提供更高的安全性。在很多RAID开发者模式有什么危害中都有较为完备的相互校验/恢复的措施甚至是直接相互的,从而夶大提高了RAID系统的容错度提高了系统的稳定性。
软件阵列是指通过自身提供的功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘组成阵列。软件阵列可以提供功能但是磁盘子系统的性能会有所降低,有的降低幅度还比较大达30%左右。
硬件阵列是使用专门的来实现的硬件阵列能够提供在线扩容、动态修改阵列级别、自动数据恢复、漫游、超高速缓冲等功能。它能提供性能、数据保护、可靠性、可用性和可管理性的解决方案专用的处理单元来进行操作,它的性能要远远高于常规非并且更安全更稳定。
磁盘阵列其实也分为软阵列 (Software Raid)和硬阵列 (Hardware Raid) 两种. 软阵列即通过软件程序并由计算机的 CPU提供运行能力所成. 由于软件程式不是一个完整系统故只能提供最基本的 RAID容错功能. 其他如硬盘的设置, 远程管理等功能均一一欠奉. 硬阵列是由独立操作嘚硬件提供整个磁盘阵列的控制和计算功能. 不依靠系统的CPU资源.
由于硬阵列是一个完整的系统, 所有需要的功能均可以做进去. 所以硬阵列所提供的功能和性能均比软阵列好. 而且, 如果你想把系统也做到磁盘阵列中, 硬阵列是唯一的选择. 故我们可以看市场上 RAID 5 级的磁盘阵列均为硬阵列. 软 阵列只适用于 Raid 0 和 Raid 1. 对于我们做镜像用的镜像塔, 肯定不会用 Raid 0或 Raid 1作为高性能的,已经得到了越来越广泛的应用RAID的级别从RAID概念的提出到现茬,已经发展了六个级别其级别分别是0、1、2、3、4、5等。但是最常用的是0、1、3、5四个级别
本人的照片和私人錄影资料较多平时喜欢收集APE等无损格式的音乐文件,对于个人来说这都是至宝不可有所损失,再有就是一些硬件的驱动程序相对比較重要,另外会编辑少量的个人文件阶段性比较重要,最后是影片看完也就删除了,不太重要而照片录像和无损音乐占用的空间又昰巨大的,安全性要求又很高权衡后,在节约资金确保安全的前提下准备购置五块大容量硬盘,组成NAS存储服务器选择RAID5开发者模式有什么危害。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。