![7种raid模式的组成原理_第1页](http://file4.renrendoc.com/view/70efa0ced7fc5e7167bf660250039bd6/70efa0ced7fc5e7167bf660250039bd61.gif)
![7种raid模式的组成原理_第2页](http://file4.renrendoc.com/view/70efa0ced7fc5e7167bf660250039bd6/70efa0ced7fc5e7167bf660250039bd62.gif)
![7种raid模式的组成原理_第3页](http://file4.renrendoc.com/view/70efa0ced7fc5e7167bf660250039bd6/70efa0ced7fc5e7167bf660250039bd63.gif)
![7种raid模式的组成原理_第4页](http://file4.renrendoc.com/view/70efa0ced7fc5e7167bf660250039bd6/70efa0ced7fc5e7167bf660250039bd64.gif)
![7种raid模式的组成原理_第5页](http://file4.renrendoc.com/view/70efa0ced7fc5e7167bf660250039bd6/70efa0ced7fc5e7167bf660250039bd65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、以下转载于计算机世界3 月26日之网络存储赠刊。本文从低层原理上,深入透析了目前存在的7种raid模式的组成原理,结构,并深刻分析了各 Raid0RaidO是这样一种模式:我们拿5块盘的raidO为例子。上图中5个竖条,分别代表5个磁盘上的一个extent,也就是竖条的意思,每个磁盘被逻辑的 的ext ent上,横向逻辑分割,形成st rip, 个st rip横跨过的ext ent个数,称为st rip le 个 segmen t, 一 个 segment 中所包含的 data block 个数,称为 st rip dep th。Data block,可 不可调,随控制器而定。Raid0便是将
2、一系列连续编号的data block,分布到多个物理磁盘上,扩散10,提高性能。其 4,则0、1、2、3号data block,被放置到第一个条带的第一个segment中,然后4、5、6、 中,依此类推,条带 1 放满后,继续放条带 2。这种特性,称为“局部连续”,因为 block 只 需要跨物理磁盘了。对外来说,参与形成 raid0 的各个物理盘,会组成一个逻辑上连续,物理上也连续的虚拟磁盘。 控制器截获,分析,根据block映射关系公式,转换成对组成raid0的各个物理盘的真实物理 机磁盘控制器。Rai0 还有另一种非条带化模式,即写满其中一块物理磁盘之后,再接着写另一块,直到所有组 化,
3、但是对IO读,能提高一定的并发IO读几率。在进一步讲述raid0和其他raid级别之前,我们先来看一下IO的种类。IO按照可以分为:读 下面我们来分别介绍每一种 I0。读/写IO,这个就不用多说了,读IO,就是发指令,从磁盘读取某段扇区的内容。指令一般是 扇区往后读取的连续扇区个数,同时给出动作是读,还是写。磁盘收到这条指令,就会按照指 +数据,就是一次IO,读或者写。大/小块IO,指控制器的指令中给出的连续读取扇区数目的多少,如果数目很大,比如128, 648等等,就应该算是小块IO,大块和小块之间,没有明确的界限。连续/随机IO,连续和随机,是指本次IO给出的初始扇区地址,和上一次IO的结
4、束扇区地址 则本次IO应该算是一个连续IO,如果相差太大,则算一次随机IO。连续IO,因为本次初始扇 或换道时间极短;如果相差太大,则磁头需要很长的换道时间,如果随机IO很多,导致磁头不 顺序/并发IO,这个的意思是,磁盘控制器每一次对磁盘组发出的指令套(指完成一个事物所 一条,则控制器缓存中的IO队列,只能一个一个的来,此时是顺序IO;如果控制器可以同时 就可以执行多个IO,此时就是并发IO模式。并发IO模式提高了效率和速度。说完了 4 种 I0 模式,我们再来说 2 个概念:IO并发几率。单盘,IO并发几率为0,因为一块磁盘同时只可以进行一次IO。对于raid0, 2 能并发IO,下面会讲
5、到),并发2个IO的几率为1/2。其他情况请自行运算。IOPS。一个IO所用的时间=寻道时间+数据传输时间。IOPS = IO并发系数/(寻道时间+数据 数量级,所以影响IOPS的关键因素,就是降底寻道时间,而在连续10的情况下,寻道时间很 输时间越少,IOPS就越高。每秒I0吞吐量。显然,每秒I0吞吐量= IOPS乘以平均IO SIZE。Io size越大,IOPS越高, 为V, V为定值。则IOPS = IO并发系数/(寻道时间+ I0 SIZE/V)代入,得每秒I0吞吐量=I0并 我们可以看出影响每秒IO吞吐量的最大因素,就是IO SIZE和寻道时间,IO SIZE越大,寻道 因素,只有
6、一个,就是寻道时间。下面我们来具体分析一个从上到下访问raidO磁盘的过程。假如某一时刻,主机控制器发出指 长度128。Raid控制器接受到这个指令之后,立即进行计算,根据对应公式(这个公式是raid 号扇区所对应的物理磁盘的扇区号,然后依次计算出逻辑上连续的下128个扇区所在物理磁盘 次发出指令,这次是真实的读取数据了,磁盘接受到指令,各自将数据提交给raid控制器, 器。分析以上过程,我们发现,如果这128个扇区,都落在同一个segment中的话,也就是说条带 IO就只能真实的从这一块物理盘上读取,性能和单盘相比会减慢,因为没有任何优化,反而还 性能,让一个IO尽量扩散到多块物理盘上,就要
7、减小条带深度,磁盘数量不变的条件下,也就 控制器分割,同时放满第一个segment、第二块物理磁盘上的第二个segment。 里大家可能存在一个误区,就是总是以为控制器是先放满第一个segment,再放满第二个seg 写入或者读取的数据都计算好了,是同时进行的。所以,raid0要提升性能,条带做的越小越 导致并发IO几率降底,因为如果条带太小,则每次IO 一定会占用大部分物理盘,而队列中的 条带太大,又不能充分提高传输速度,这两个是一对矛盾,按照需求来采用不同的方式。我们接着分析raid0相对于单盘的性能变化。根据以上总结出来的公式,可以推得以下表格:RAID0读写并发IO顺序IO并发IO顺序
8、IOIOPS随机IO连续IO随机IO连续IO随机IO连续IO随机IO连续IOIosize/stripsize较大不支持不支持提升极小提升了 N 乘系数 倍不支持不支持提升极小提升了 N 乘系数 倍Iosize/stripsize较小提升了(1+并发系数)倍提升了(1+并发系数+系数)提升极小提升了系数倍提升了(1+并发系 数)倍提升了(1+并发系数+ 系数)提升极小提升了系数倍注:并发10和10 size/strip size是一对矛盾,两者总是对立。N =组成raidO的磁盘数目。系数=io size/strip size和初始LBA地址所处的strip偏移综合系数,大于等于1。并发系数=并
9、发I0的数量Raid1Raid1 是这样一种模式,我们拿2 块盘的例子来说明Raidl和raidO不同,raidO对数据没有任何保护措施,每个block都没有备份或者校验保 护措施。Raid对虚拟逻辑盘上的每个物理block,都在物理盘上有一份镜像备份。也就是说 数据有两份。对于raidl的写10,速度不但没有提升,而且有所下降,因为数据要同时向 多块物理盘写,时间以最慢的你个为准,因为是同步的。而对于raidl的读I0请求,不但 可以并发,而且就算顺序IO的时候,控制器也可以象raid0 一样,从两块物理盘上同时读 数据,提升速度。Raid1没有srip的概念。同样我们总结出一个表格:RAI
10、D1读写并发IO顺序IO并发IO顺序IOIOPS随机IO连续IO随机IO连续IO随机IO连续IO随机IO连续IO提升N或者并发系数倍提升N倍 或者并发系数提升极小提升了 N倍不支持事物性IO可并 发,提升并发系 数倍没有提升没有提升注:raid1没有strip的概念。N=组成raid1镜像物理盘的数目。在读、并发IO的模式下,由于可以并发N个IO,每个IO占用一个物理盘,这就相当于提 升了 N倍的IOPS。由于每个IO只独占了一个物理盘,所以速度相对于单盘并没有改变,所 以不管是随机还是顺序IO,相对单盘都不变。在读、顺序10、随机10模式下,由于10不能并发,所以此时一个10可以同时读取N个
11、盘 上的内容,但是是在随机I0模式下,那么寻道时间影响很大,纵使同时分块读取多个磁盘 的内容,也架不住寻道时间的抵消,所以性能提升极小在读、顺序10、连续I0模式下,寻道时间影响到了最低,此时传输速率为主要矛盾,同时 读取多块磁盘的数据,时间减少为1/N,所以性能提升了 N倍。写I0的时候和读I0情况相同,就不做分析了。写I0因为要同时向每块磁盘写入备份数据, 所以不能并发10,也不能分块并行。但是如果控制器把优化算法做到极至的话,还是可以 并发I0的,比如控制器从I0队列中提取连续的多个10,可以将这些I0合并,并发写入磁 盘。前提这几个I0必须是事物性的,也就是说LBA必须连续,不然不能作
12、为一个大的合并 10,而且和文件系统也有关系,文件系统碎片越少,并发几率越高。Raid2raid2是一种比较特殊的raid模式,他是一种专用raid,现在早已被淘汰。他的基本思想 是,I0到来之后,控制器将数据分割开,在每块物理磁盘读或者写1bit。这里有个疑问, 磁盘的最小I0单位是扇区,512字节,如何写入1bit呢?其实这个写入1bit,并非只写入 1bi t。我们知道上层10,可以先经过文件系统,然后才通过磁盘控制器驱动来向磁盘发出 10,最终的I0大小,都是N倍的扇区,也就是Nx512字节,N大于等于1,不可能发生N 小于 1 的情况,即使你需要的数据只有几个字节,那么也同样要读出或
13、者写入整个扇区,也 就是512字节。明白这个原则之后,我们再来看一下raid2中所谓的“每个磁盘写lbit” 是个什么概念。0最小单位为扇区,512字节,我们就拿一个4块数据盘+ 3块校验盘的raid2 系统给大家来说明一下。这个环境中,raid2的一个条带大小是4bit (1bit乘4块数据盘), 而I0最小单位是一个扇区,那么如果分别向每块盘写1bit,就需要分别向每块盘写一个扇 区,每个扇区只包含1bit有效数据,这显然是不好的,因为太浪费空间,没有意义。因为I0数据到来时,我们拿以下I0请求为例:写入 初始扇区10000长度1,这个I0目的是要向LBA10000写入一个扇区的数据,也就
14、是512字节。Raid2控制 器接受到这512字节的数据之后,先将其放入cache,然后计算需要写入的物理磁盘的信息, 比如定位到物理扇区,分割数据成bit,然后一次性写入物理磁盘扇区。也就是说第一块物 理盘,控制器会写入本次I0数据的第1、5、9、13、17、21。等等 位,第二块物理盘会写入2、 6、 10、 14、 18、 22。等等位,其他两块 物理盘同样方式写入。直到这样将数据写完。我们可以计算出来,这512字节的数据写完之 后,此时每块物理盘只包含128字节的数据,也就是一个扇区的四分之一,那么这个扇区剩 余的部分,就是空的。如果要利用起这部分空间,那么等下次I0到来之后,控制器对
15、数据 进行bit分割,将要填入这些空白区域的数据,控制器将首先读出原来的数据,然后和新数 据合并之后,一并再写回这个扇区,这样做效率和速度都大打折扣。我们可以发现,其实 raid2 就是将原本连续的一个扇区的数据,以位为单位,分割存放到不连续的多块物理盘上, 因为这样可以全组并行读写,提高性能。每个物理磁盘扇区其实是包含了N个扇区的“残 体”。那么如果出现需要更新这个10的4个扇区中某一个扇区的情况,怎么办?这种情况 下,必须先读出原来的数据,和新数据合并,然后在一并写入。其实这种情况出现的非常少。 我们知道上层I0的产生,一般是需要先经过os的文件系统,然后才到磁盘控制器这一层的。 所以磁盘
16、控制器产生的10, 一般都是事务性的,也就是这个I0中的所有扇区,很大几率上 对于上层文件系统来说,是一个完整的事务,所以很少会发生只针对这个事务中某一个原子 进行读写的情况。这样的话,每次I0很大几率都会包含入这些逻辑上连续的扇区的,所以 不必担心经常会发生那种情况,即便发生了,控制器也只能按照那种低效率的做法来做,不 过总体影响较小。但是如果随机I0比较多,那么这些I0初始LBA,很有可能就会命中在一 个两个事务交接的扇区处,这种情况,就导致速度和效率大大降低了。连续I0出现这种情 况的几率非常小了。Raid2因为每次读写都需要全组磁盘联动,所以为了最大化其性能,最好保证每块磁盘主轴 同步
17、,使得同一时刻每块磁盘磁头所处的扇区逻辑编号都一致,并存并取,达到最佳性能, 如果不能同步,则会产生等待,影响速度。基于raid2的并存并取的特点,raid2不能实现并发10,因为每次I0都占用了每块物理磁 盘。Raid2的校验盘对系统不产生瓶颈,但是产生延迟,因为多了计算校验的动作。校验位和数 据位是一同并行写入或者读取的。Raid2采用海明码来校验数据,这种码可以判断修复一位 错误的数据,并且使用校验盘的数量太多, 4块数据盘需要3块校验盘,但是随着数据盘数 量的增多,校验盘所占的比例会显著减小。Raid2和raidO有些不同,raidO不能保证每次I0都是多磁盘并行,因为raidO的分块
18、相对 raid2以位为单位来说是太大了,而raid2由于她每次I0都保证是多磁盘并行,所以其数 据传输率是单盘的N倍,为了最好的利用这个特性,就需要将这个特性的主导地位体现出来, 而根据IOPS = IO并发系数/ (寻道时间+数据传输时间),寻道时间比数据传输时间大几个 数量级,所以为了体现数据传输时间减少这个优点,就必须避免寻道时间的影响,而避免其 影响的最佳做法就是:尽量产生连续I0而不是随机10,所以,raid2最适合连续I0的情况。 另外,根据每秒I0吞吐量=10并发系数乘IO SIZE乘V/ (V乘寻道时间+ 10 SIZE),如 果将I0 size也增大,则每秒I0吞吐量也将显著
19、提咼。所以,raid2最适合的应用,就是: 产生连续I0,大块I0的情况,不言而喻,文件服务,视频流服务等等这些应用,适合raid2, 不过,raid2的缺点太多,比如校验盘数量多,算法复杂等等,它逐渐的被raid3替代了。RAID2读写顺序I0顺序I0IOPS非事务性随机I0 事务性随连续I0非事务性随机I0 事务性随连续I0机IO机IOIO满足公式条件提升极小提升极小提升N倍性能降低提升极小提升N倍注:N=数据盘数量。Raid2不能并发10Raid3由于raid2缺点比较多,比如非事务性I0对他的影响,校验盘数量太多等等。Raid2的劣 势,就在于它的将数据以bit为单位,分割,将原本物理
20、连续的扇区,转变成物理不连续, 逻辑连续的,这样就导致了它对非事务性I0的效率低下。为了从根本上解决这个问题,raid3 出现了。既然要从根本上解决这个问题,首先就是需要抛弃raid2对扇区进行分散的做法。 Raid3保留了扇区的物理连续。Raid2将数据以bit为单位分割,这样为了保证每次I0占用 全部磁盘的并行性。而raid3同样也保留了这个特点,但是没有以bit为单位来分散数据, 而就是以扇区或者几个扇区为单位来分散数据。Raid3还采用了高效的X0R校验算法,但是 这种算法只能判断数据是否有误,不能判断出哪一位有误,更不能修正。X0R校验使得raid3 不管多少块数据盘,只需要一块校验
21、盘就足够了。Raid3 的每一个条带,其长度很小,深度为 1。这样的话,每个 segment 的大小一般就是 1 个扇区或者几个扇区的容量。以上图的例子来看, 4块数据盘,一块校验盘,每个 segment, 也就是图中的一个block portion,假如为2个扇区大小,也就是lk,则整个条带大小为 4k,如果一个segment大小为8个扇区,即4k,则整个条带大小为16K。我们还是用一个例子来说明raid3的作用机制。比如,一个4数据盘,1校验盘的raid3系统,segment size为2个扇区大小即1k。raid3控制器接受到了这么一个IO:写入初始扇区 10000长度8,即总数据量为8
22、乘512字节=4k。则控制器先定位LBA10000所对应的真实物理LBA, 假如LBA10000恰好在第一个条带的第一个segment的第一个扇区上,那么控制器将这个IO 数据里的第 1、2 个 512 字节写入这个扇区,同一时刻,第3、4 个 512 字节会被同时写入这 个条带的第二个 segment 中的两个扇区,其后的数据同样被写入第3、4 个 segment 中,此 时恰好是4k的数据量。也就是说这4k的IO数据,同时被写入了 4块磁盘,每块磁盘写入 了两个扇区,也就是一个segmen t,他们是并行写入的,包括校验盘,也是并行写入的,所 以 raid3 的校验盘没有瓶颈,但是有延迟,
23、因为增加了计算校验的开销。但现代控制器一般 都使用专用的XOR硬件电路而不是cpu来计算xor,这样就使得延迟降到最低。上面那个情 况是IO size刚好等于一个条带大小的时候,如果10 size小于一个条带大小呢?我们接着 分析,还是刚才那个环境,此时控制器接收到10大小为2K的写入请求,也就是4个连续扇 区,那么控制器就只能同时写入两个磁盘了,因为每个盘上的segment是2个扇区,其他两 个磁盘此时就是空闲的,也只能得到两倍的单盘传输速率。我们再来看看IOsize大于一个 条带大小的情况,会发生什么。还是那个环境,控制器收到的IO size=16k。则控制器一 次所能并行写入的,是4k,
24、这16k就需要分4批来写入4个条带。其实这里的分4批写入, 不是先后,而还是同时,也就是这16k中的第1、5、9、13k将由控制器连续写入磁盘1, 第2、6、10、14k,连续写入磁盘2,依此类推,直到16k数据全部写完,是并行一次写完, 这样校验盘也可以一次性计算校验值并且和数据一同并行写入。而不是“分批”。通过比较,我们发现,与其使得IO size小于一个条带的大小,空闲一些磁盘,不如使得 Io size大于或者等于条带大小,使得没有磁盘空余。因为上层IO size是不受控的,控制 器说了不算,但是条带大小是控制器说了算的,所以如果将条带大小减少到很小,比如2 个扇区,一个扇区,则每次上层
25、IO, 一般情况下都会占用所有磁盘,进行并发传输。可以 提供和raid2 一样的传输速度,并避免raid2的诸多缺点。Raid3和raid2 一样,不能并发 IO,因为一个IO要占用全部盘,就算IO size小于st rip size,因为校验盘的独享,也 不能并发IO。RAID3读写并发IO顺序IO并发IO顺序IOIOPS随机IO连续IO随机IO连续IO随机IO连续IO随机IO连续IOIo size 大 于 strip size不支持不支持提升极小提升了 N倍不支持不支持提升极小提升了 N倍Io size 小 于 strip size不支持事物性IO可并 发,提升 并发系 数倍提升极小提升了
26、 N乘IOsize/stripsize 倍不支持事物性IO可并 发,提升 并发系 数倍提升极小提升了 N乘IOsize/stripsize 倍注:N=组成raid3的数据磁盘数量。和raid2相同,事物性连续IO可能并发。和raid2 样,raid3同样也是最适合连续大块IO的环境,但是它比raid2成本更低,更容易部署。具体分析:不管任何形式的raid,只要是面对随机IO,其性能比单盘没有大的优势,因为raid作所的 只是提高传输速率,并发IO,容错。随机IO只能靠降低单个物理磁盘的寻道时间来解决。而raid不能优化寻道时间。所以随机IO, raid3也同样没有优势。连续10,因为寻道时间的
27、影响因素可以忽略,raid3最拿手,因为象raid2 样,raid3可 以大大加快数据传输速率,因为他是多盘并发读写。所以理论上可以相对单盘提高N倍的速 率。Raid4不管是Raid2还是raid3,他们都是为了大大提高数据传输率而设计,而不能并发10。诸如 数据库等等应用,他们的特点就是随机I0和小块10。想提高这种环境的IOPS,根据公式: IOPS = IO并发系数/(寻道时间+数据传输时间),随机读导致寻道时间很大,靠提高传输 许率已经不是办法。所以观察这个公式,想在随机10频发的环境中提高IOPS,唯一能够做 的,只有提高I0并发系数,不能并发I0的,想办法让他并发10,并发系数小的
28、,想办法 提高系数。在raid3的基础上,raid4被发展起来。我们分析raid3的性能的时候,曾经提到过一种情 况,就是io size小于st rip size的时候,此时有磁盘处于空闲状态,而如果抓住这个现 象,同时让队列中的下一个I0来利用这些空闲的磁盘,岂不是正好达到并发I0的效果了么? 所以raid4将一个segment的大小做的比较大,以至于平均I0 size总是小于st rip size, 这样就能保证每个I0少占用磁盘,甚至一个I0只占用一个磁盘。是的,这个思想对于读I0是对路子的,但是对于写I0的话,有一个很难克服的问题,那就 是校验盘的争用。考虑这样一种情况:4块数据盘+
29、1块校验盘组成的raid4系统,某时刻 一个I0占用了前两块盘+校验盘,此时虽然后两块是空闲的,可以同时接受新的I0请求, 但是如果接受了新的I0请求,则新I0请求同样也要使用校验盘,由于一块物理磁盘不能同 时处理多个10,所以新I0虽然占有了数据盘的写权限,但是写校验盘的时候,仍然要等旧 I0写完后,才能写入校验,新I0才能完成,这样的话,就和顺序I0无异了,数据盘可并 发而校验盘不可并发,这样不能实现并发10。下面我们来说几个概念。整条写、重构写与读改写整条写(Full-Stripe Write):整条写需要修改奇偶校验群组中所有的条带单元,因此新 的奇偶校验值可以根据所有新的条带数据计算
30、得到。不需要额外的读、写操作。因此,整条 写是最有效的写类型。整条写的例子,比如raid2, raid3。他们每次I0总是几乎能保证占 用所有盘,因此每个条带上的每个segment都被写更新,所以控制器可以直接利用这些更新 的数据计算出校验数据之后,在数据被写入数据盘的同时,将计算好的校验信息写入校验盘。重构写(Reconstruct Write):如果要写入的磁盘数目超过阵列磁盘数目的一半,采取重 构写方式。在重构写中,从这个条带中不需要修改的 segment 中读取原来的数据,再和本条 带中所有需要修改的 segment 上的新数据计算奇偶校验值,并将新的 segment 数据和没有更 改
31、过的segment数据以及新的奇偶校验值一并写入。显然,重构写要牵涉更多的I/O操作, 因此效率比整条写低。重构写的例子,比如raid4中,如果数据盘为8块,某时刻一个IO 只更新了一个条带的6个segment,剩余两个没有更新,则重构写模式下,会将没有被更新 的两个 segment 的数据读出,和需要更新的前6 个 segment 的数据计算出校验数据,然后将 这8个segment连同校验数据一并写入磁盘。可以看出,这个操作只是多出了读两个segment 中数据的操作。读改写(Read-Modify Write):如果要写入的磁盘数目不足阵列磁盘数目的一半,采取读 改写方式。读改写过程如下:
32、(1)从需要修改的 segment 上读取旧的数据;(2)从条带上 读取旧的奇偶校验值;(3)根据旧数据、旧校验值和需要修改的 segment 上的新数据计算 这个条带上的新的校验值;(4)写入新的数据和新的奇偶校验值。这个过程中包含读取、 修改、写入的一个循环周期,因此称为读改写。读改写计算新校验值的公式为 新数据的校 验数据=(老数据EOR新数据)EOR老校验数据。如果待更新的segment已经超过了条带 中总segment数量的一半,则此时不适合使用读改写,因为读改写需要读出这些segment 中的数据和校验数据,而如果采用重构写,只需要读取剩余不准备更新数据的segment中的 数据即
33、可,而后者数量比前者要少,所以超过一半,用重构写,不到一半,用读改写。整条 更新,就用整条写。写效率:整条写重构写读改写。明白了这些概念之后,我们就可以继续深入理解raid4 了。如果仅仅根据争用校验盘来下结 论说raid4不支持并发IO,在经过了以上三个概念的描述之后,看来显然是片面的。我们 设想这样一种情形,某时刻一个IO只占用了全部磁盘的几块盘,另一些磁盘空闲,如果此 时让队列中下一个IO等待的话,那么当然不可实现并发IO。此时我们考虑:如果队列中有 这样一个IO,它需要更新的LBA目标和正在进行的IO恰好在同一条带上,并且处于空闲磁 盘,而又不冲突,那么此时我们恰好就可以让这个10也搭
34、一下正在进行的10的顺风车,反 正都是要更新这个条带的校验segment,与其两个I0先后更新,不如让他们同时更新各自 的数据segment,而控制器负责计算本条带的校验块。这样就完美的达到了 10并发。但是, 有个问题,这种情况遇到的几率真是小之又小。即便如此,控制器如果可以对队列中的I0 目标LBA进行扫描,将目标处于同一条带的10,让其并发写入,这就多少类似NCQ技术了, 不过这种技术需要上层软件的配合,因为乱序10,会失去事务的顺序性,所以还需要上层 软件作一些处理。除了在控制器内部实现这种算法之外,我们还可以直接在上层来实现这种模式。上层就是指 操作系统的文件系统。因为文件系管理着底
35、层磁盘。文件系统决定数据写往磁盘上的哪些扇 区。所以完全可以在文件系统这个层次上,将两个不同事物的I0写操作,尽量放到相同的 条带上,也就是说,比如一个条带大小为16k,可以前8k放一个I0的数据,后8k放也另 一个 I0 的数据,这两个 I0 在经过文件系统的计算之后,经由磁盘控制器驱动程序,向磁盘 发出同时写入整个条带的操作,这样就构成了整条写,如果实在不能占满整条,那么也应该 尽量达成重构写模式,这样不但并发了 10,还使得写效率增加。这种在文件系统专门为raid4 做出优化的方案,最点型的就是net app公司的磁盘阵列操作系统dat a on tap,这个操作系 统中文件系统模块称为
36、 WAFL。 WAFL 文件系统的设计方式确保能够最大限度地减少校验盘寻 址操作。上图右半部对比显示了 WAFL如何分配同样的数据块,从而使得RAID 4更加有效。 WAFL 总是把相关的数据块写到彼此邻近的条带中,消除校验盘上的长时间寻址操作。只要 可能,WAFL也把多重数据块写到同样的条带中,从而进一步减少校验盘上的阻塞。FFS在上 图左半部中使用六道独立的条带,因此致使六个校验盘块需要更新。 上图右半部中, WAFL 使用仅仅3道条带,即只有三个校验块需要更新。从而大大提高了 RAID 性能,消除了校验 盘瓶颈。RAID4IOPS读写特别优化的并发I0顺序I0特别优化的并发I0顺序I0随
37、机I0连续I0随机I0连续I0随机I0连续I0随机I0连续I0Iosize/stripsize较大冲突冲突提升极小提升了 N倍冲突冲突没有提升提升了 N倍Iosize/stripsize较小提升极小提升并发系数倍几乎没有提升几乎没有提升提升并发系数倍提升并发系数乘N倍性能降底性能降底注:N为raid4数据盘数量。Io size/strip size太大则并发IO几率很小。值得注意的是,如果io size/strip size的值太小,则顺序IO读,不管是连续还是随机 I0,几乎都没有提升。顺序IO写,性能下降,因为io size很小,又是顺序I0,则只能进 行读改写,性能降底不少。所以,如果要
38、使用raid4,不进行特别优化,是不行的,至少要让他可以进行并发10。我们 观察表格可知,并发I0模式下,性能都有所提升。然而如果要优化到并发几率很高,实则 不容易。目前只有netapp的WAFL文件系统还在使用raid4,其他产品均未见使用。面临淘 汰,取而代之的是拥有高并发几率的raid5系统。Raid5为了解决raid4系统不能并发I0困难的窘境,raid5相应而出。Raid4并发困难,是因为他 的校验盘争用的问题,如果能找到一种机制,能有效解决这个问题,则实现并发就会非常容 易。Raid5恰恰解决了校验盘争用这个问题。Raid5采用分布式校验盘的做法,将校验盘打 散在raid组中的每块
39、磁盘上。如图所示。每个条带都有一个校验segment,但是不同条带 中其位置不同,在相邻条带之间循环分布。为了保证并发IO, raid5同样将条带大小做的较 大,以保证每次I0数据不会占满整个条带,造成队列其他I0等待。所以,raid5如果要保 证高并发率,那么每个I0几乎都是读改写模式,尤其是在随机I0的情况下,所以raid5 拥有较高的写惩罚,但是在随机I0频发的环境下,仍然能保持较高的I0PS。们来分析一下raid5具体的作用机制。以上图为例的环境,条带大小80k,每个segment大小16k。某一时刻,上层产生一个写I0:写入初始扇区10000长度8,即写入4k的数据。控制器收到这个I
40、0之后,首先定位真实LBA地址,假设定位到 了第1个条带的第2个segment (位于图中的磁盘2)的第1个扇区(仅仅是假设),则控 制器首先对这个segment所在的磁盘发起10写请求,读出这8个扇区中原来的数据到cache, 与此同时控制器也向这个条带的校验segment所在的磁盘(即图中的磁盘1)发起I0读请 求,读出对应的校验扇区数据并保存到cache,随后利用X0R校验电路来计算新的校验数据, 利用公式:新数据的校验数据二(老数据E0R新数据)E0R老校验数据。现在cache中存 在:老数据,新数据,老校验数据,新校验数据。然后控制器立即再次向相应的磁盘同时发 起I0写请求,将新数据
41、写入数据segment,将新校验数据写入校验segment,并删除老数据 和老校验数据。在上述过程中,这个I0占用的,始终只有1、2两块盘,因为所要更新的数据segment我们 假设位于2盘的1条带的2号segment,而这个条带对应的校验segment位于1盘,自始至 终其他任何磁盘都没有用到。那么如果此时队列中有这么一个10,他的LBA初始目标假如 位于图中下方红框所示的数据segment中(4盘),I0长度也不超过segment的大小,而这 个条带对应的校验segment位于3盘上,这两块盘未被其他任何I0占用,所以,此时控制 器就可以并发的处理这个10,和上方红框所示的10,达到并发。
42、Raid5相对于经过特别优化的raid4来说,在底层就实现了并发,可以脱离文件系统的干预, 任何文件系统的10,都可以实现高并发几率,而不像基于wafl文件系统的raid4,需要在 文件系统上规划计算出并发环境。Raid5磁盘数量越多,可并发的几率就越大。RAID5I0PS读写并发IO顺序I0并发I0顺序I0随机IO连续I0随机I0连续I0随机I0连续I0随机I0连续I0Io size近似strip size不支持不支持提升极小提升了 N倍不支持不支持提升极小提升了N倍IO size大于 segment size重构写提升并发系数倍提升并发系数倍几乎没有提升提升了 I0 size/segmen
43、t size 倍提升并发系数倍提升并发系数倍性能下降提升极小Io size 小于 segment size读改写提升并发系数倍提升并发系数倍提升极小没有提升提升并发系数倍提升并发系数倍性能下降性能下降raid5最适合小块10,并发I0的情况下,性能都较单盘有所提升。Raid6 raid6 之前的任何 raid 级别,最多能保障在坏掉一块盘的时候,数据仍然可以访问,但是 如果同时坏掉两块盘,则数据将会丢失。为了增加raid5的保险系数,raid6被创立。Raid6 比raid5多增加了一块校验盘,同时也是分布打散在每块盘上,用另一个方程式来计算新的 校验数据,这样,raid6同时在一个条带上保存
44、了两份数学上不相关的校验数据,这样能够 保证同时坏两块盘的情况下,数据依然可以通过联立这两个数学关系等式来求解丢失的数 据。Raid6较raid5在写的时候,会同时读取或者写入额外的一份校验数据,不过由于是并行同时操作,所以比raid5慢不了多少。其他特性和raid5类似。RAID6IOPS读写并发IO顺序IO并发IO顺序IO随机IO连续IO随机IO连续IO随机IO连续IO随机IO连续IOIo size近似strip size不支持不支持提升极小提升了 N倍不支持不支持提升极小提升了 N倍IO size大于 segment size重构写提升并发系数倍提升并发系数倍几乎没有提升几乎没有提升提升并发系数倍提升并发系数倍性能下降提升极小Io size小于 segment size读改写提升并发系数倍提升并发系数倍提升极小没有提升提升并发系数倍提升并发系数倍性能下降性能下降2# 大 中 小 发表于 2007-7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度旅游产业发展融资借款合同示例
- 全部公司合同范例
- 劳务合同范本 合同终止
- 2019-2025年中国深圳市幼儿园行业发展前景预测及投资战略研究报告
- 2025年中国蚊帐支架行业市场全景监测及投资战略咨询报告
- 2025年度新能源发电项目投资合同范本-@-2
- 2025年高尔夫长裤行业深度研究分析报告
- 2025年地温中央空调项目可行性研究报告
- 2025年度建筑工程涂料技术培训与咨询合同
- 【可行性报告】2025年灯饰灯具相关项目可行性研究报告
- 《行政伦理学教程(第四版)》课件 第7、8章 行政人格、行政组织伦理
- 2024年江苏苏海控股集团有限公司招聘笔试冲刺题(带答案解析)
- 2023年4月自考00504艺术概论试题及答案含解析
- 美丽的大自然(教案)2023-2024学年美术一年级下册
- 2024年低压电工考试题库(试题含答案)
- 成都特色民俗课件
- 地质勘探行业分析
- 花城版音乐四下-第四课-认知音乐节奏(教案)
- 宠物医院员工手册
- 2024年高考英语读后续写高分宝典专题08读后续写肢体动作描写积累1(词-句-文)讲义
- 商业与公积金贷款政策
评论
0/150
提交评论