RAID技术详解
Posted jiweilearn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RAID技术详解相关的知识,希望对你有一定的参考价值。
1、RAID 0
RAID 0是把n个物理磁盘虚拟成一个逻辑磁盘,即形成RAID 0的各个物理磁盘会组成一个逻辑上连续,物理上也连续的虚拟磁盘。一级磁盘控制器(指使用这个虚拟磁盘的控制器,如果某台主机使用配适卡链接外部盘阵,则指的就是主机上的磁盘控制器)对这个虚拟磁盘发出的指令,都被RAID控制器收到并分析处理,根据Block映射关系算法公式转换成对组成RAID0的各个物理盘的真是物理磁盘IO请求指令,收集或写入数据之后,再提交给主机磁盘控制器。
RAID 0也称为条带化存储,它代表了所有RAID级别中最高的存储性能。无数据校验,下面分析从上到下访问RAID 0磁盘的过程。
假如某一时刻,主机控制器发出指令:读取初始扇区10000长度128
RAID控制器接收到这个指令之后,立即进行计算,根据对应公式算出10000号逻辑扇区所对应的物理磁盘的扇区号,然后依次算出逻辑上连续的下128个扇区所在物理磁盘的扇区号。分别向对应这些扇区的磁盘再次发出指令。这次是真是的读取数据了,磁盘接受到指令,各自将数据提交给RAID控制器,经过控制器在Cache中的组合,再提交给主机控制器。
经过以上过程,发现如果这128个扇区都落在同一个Segment中的话,也就是说条带深度容量大于128个扇区的容量(64KB),则这次IO就只能真实地从这一块物理盘上读取,性能和单盘相比会减慢,因为没有任何优化,反而还增加了RAID控制器额外的计算开销。所以,在某种特定条件下要提升性能,让一个IO尽量扩散到多块物理盘上,就要减小条带深度。在磁盘数量不变的条件下,也就是减小条带大小(Stripe SIZE,也就是条带长度),让这个IO的数据被控制器分割,同时放满一个条带的第一个Segment、第二个Segment等,以此类推,这样就能极大地占用多块物理盘。
所以RAID 0要提升性能,条带做的越小越好。但是有一个矛盾出现了,就是条带太小,导致并发IO几率降低,因为如果条带太小,则每次IO一定会占用大部分物理盘,队列中的IO就只能等待这次IO结束后才能使用物理盘,而条带太大,又不能充分提高传输速度。这两个是一对矛盾,要根据需求采用不同的方式。
2、RAID 1
RAID 1称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。
对于RAID 1的写IO,速度不但没有提升,而且有所下降,应为数据要同时向多块物理盘写,时间以最慢的那个为准,因为是同步的。而对于RAID 1的读IO请求,不但可以并发,而且就算顺序IO的时候,控制器也可以像RAID 0一样,从两块物理盘上同时读数据,提升速度。
在读、并发IO模式下,由于可以并发N个IO,每个IO占用一个物理盘,这就相当于提升了N倍的IOPS。由于每个IO只独占了一个物理盘,所以数据传输速度相对于单盘并没有改变,所以不管是随机还是顺序IO,相对单盘都不变
3、RAID 2
RAID2 称为纠错海明码磁盘阵列,其设计思想是利用海明码实现数据校验冗余。海明码是一种在原始数据中加入若干校验码来进行错误检测和纠正的编码技术,其中第 2n 位( 1, 2, 4, 8, … )是校验码,其他位置是数据码。因此在 RAID2 中,数据按位存储,每块磁盘存储一位数据编码,磁盘数量取决于所设定的数据存储宽度,可由用户设定。图 4 所示的为数据宽度为 4 的 RAID2 ,它需要 4 块数据磁盘和 3 块校验磁盘。如果是 64 位数据宽度,则需要 64 块 数据磁盘和 7 块校验磁盘。可见, RAID2 的数据宽度越大,存储空间利用率越高,但同时需要的磁盘数量也越多。
海明码自身具备纠错能力,因此 RAID2 可以在数据发生错误的情况下对纠正错误,保证数据的安全性。它的数据传输性能相当高,设计复杂性要低于后面介绍的 RAID3 、 RAID4 和 RAID5 。
4、RAID 3
RAID 3是使用专用校验盘的并行访问阵列,它采用一个专用的磁盘作为校验盘,其余磁盘作为数据盘,数据按位可字节的方式交叉存储到各个数据盘中。RAID3 至少需要三块磁盘,不同磁盘上同一带区的数据作 XOR 校验,校验值写入校验盘中。 RAID3 完好时读性能与 RAID0 完全一致,并行从多个磁盘条带读取数据,性能非常高,同时还提供了数据容错能力。向 RAID3 写入数据时,必须计算与所有同条带的校验值,并将新校验值写入校验盘中。一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,系统开销非常大,性能较低。
如果 RAID3 中某一磁盘出现故障,不会影响数据读取,可以借助校验数据和其他完好数据来重建数据。假如所要读取的数据块正好位于失效磁盘,则系统需要读取所有同一条带的数据块,并根据校验值重建丢失的数据,系统性能将受到影响。当故障磁盘被更换后,系统按相同的方式重建故障盘中的数据至新磁盘。
RAID3 只需要一个校验盘,阵列的存储空间利用率高,再加上并行访问的特征,能够为高带宽的大量读写提供高性能,适用大容量数据的顺序访问应用,如影像处理、流媒体服务等。目前, RAID5 算法不断改进,在大数据量读取时能够模拟 RAID3 ,而且 RAID3 在出现坏盘时性能会大幅下降,因此常使用 RAID5 替代 RAID3 来运行具有持续性、高带宽、大量读写特征的应用。
RAID 3的每一个条带,其长度被设计为一个文件系统快的大小,深度随磁盘数量而定,但是最小深度为1个扇区,这样的话,每个Segment的大小一般就是1个扇区或者几个扇区的容量
例解:RAID 3的作用机制
用一个4块数据盘和1块校验盘的RAID 3系统,Segment SIZE为两个扇区大小(1KB),条带长度为4KB
RAID 3控制器接收到了这样一个IO:写入初始扇区10000 长度8,即总数量为8*512B=4KB
控制器先定位LBA10000所对应的真是物理LBA,假如LBA10000恰好在第一个条带的第一个Segment的第一个扇区上,那么控制器将这个IO数据里的第1、2个512B写入这个扇区。同一时刻,第3、4个Segment中,此时恰好是4KB的数据量。也就是说这4KB的IO数据同时被分别写入了4块磁盘,没块磁盘写入了两个扇区,也就是一个Segment。它们是并行写入的,包括校验盘也是并行写入的,所以RAID 3的校验盘没有瓶颈,但是有延迟,因为增加了计算校验的开销。
如果IO SIZE大于条带长度,如控制器收到的IO SIZE为16KB,则控制器一次所能并行写入的是4KB,这16KB就需要分4批来写入4个条带,其实这里的分4批写入不是先后写入,而是同时写入,也就是这16KB中的第1、5、9、13KB将由控制器连续写入磁盘1,第2、6、10、14连续写入磁盘2,以此类推。直到16KB数据全部写完,是并行一次写完。这样校验盘也可以一次性计算校验值并且和数据一同并行写入,而不是分批。
以上是关于RAID技术详解的主要内容,如果未能解决你的问题,请参考以下文章