磁盘raid技术

什么事raid

RAID(Redundant Array of Inexpensive Disk)成为廉价磁盘冗余阵列。RAID的基本原理是把多个便宜的小磁盘组合到一起,成为一个磁盘组,使性能达到或超过一个容量巨大、价格昂贵的磁盘。

目前RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。

raid 比较

RAID级别 相对有点 相对缺点 —— —— ——- RAID 0 存取速度最快 没有容错 RAID 1 完全容错 成本高 RAID 2 带海明码校验 数据荣誉多,速度慢 RAID 3 写入性能最好 没有多余任务 RAID 4 具备多任务及容错功能 Parity磁盘驱动器造成性能瓶颈 RAID 5 具备多任务及容错功能 写入时有overhead RAID 0+1/10 速度快、完全容错 成本高

RAID 0

也称条带模式(striped),即把连续的数据分赛道多个磁盘上存取。当系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的宽带,显著提高磁盘整体存取性能。因为读取和写入是在设备上并行完成的,读取和写入性能将会增加,这通常是运行RAID 0的主要原因。但是RAID 0没有数据冗余,如果驱动器出现故障,那么将无法恢复任何数据。

实现RAID 0必须要有两个及两个以上的硬盘驱动器,RAID 0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同的驱动上。因为将数据分布在不同的驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好。它不需要计算校验码,实现容易。它的缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其他盘上的数据正确也无济于事。不应该将它用于对数据稳定性要求的场合。如果用户进行图像、动画的编译或是其他要求传输比较大的场合,使用RAID 0比较合适。同事,RAID 可以提高数据传输速率,比如所需要读取的文件分布在两个硬盘上,这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有荣誉功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。

RAID 1

RAID 1 又称为镜像(Mirroring),一个具有全冗余的模式。RAID 1可以用于两个或2*N 个磁盘,并使用0块或更多的备用磁盘,每次写数据时会同事写入镜像盘。这种阵列可靠性很高,但其有效容量减少到总入量的一半,同时这些磁盘的大小应该相等,否则总容量只具有最小磁盘的大小。

对于RAID 1结构的设备来说,RAID控制器必须能够同事对两个盘进行读操作和对两个镜像盘进行写操作。因为是镜像结构,在一组盘出现问题时,可以使用镜像,提高系统的容错能力。它比较容易涉及和实现。每读一次盘只能读出一块数据,也就是说数据块传送速率与单独的盘的读取速率相同。因为RAID 1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当系统需要极高的可靠性时,如进行数据统计,那么使用RAID 1比较合适。而且RAID 1技术支持“热替换”,即在不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性非常高,RAID 1的数据安全性在所有RAID级别来说是最好的,但是其磁盘利用率只有50%。

RAID 2

带海明码校验,当数据发生错误的情况下,可以进行错误纠正。RAID 2技术实施很负载,在商业环境中使用很少。各个磁盘上市数据的各个位,由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上。由于海明码的特点,它可以在数据发生错误的情况下将错误纠正,以保证输出的正确。它的数据传输速率相当高,如果希望达到比较理想的速度,那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID 3/4/5要简单。要利用海明码,必须要付出数据冗余的代价,输出数据的速率与驱动器组中速度最慢的相等。

RAID 3

RAID 3是将数据先做XOR运算,产生Parity Data后,在将数据和Parity Data以并行存取模式写入成员磁盘驱动器中,因此具备并行存取模式的优点和缺点。进一步来说,RAID 3每一笔数据传输,都更新整个Stripe(每一个成员磁盘驱动器相对位置的数据都一起更新),因此不会发生需要把部分磁盘驱动器现有的数据都读出来,与新数据做XOR运算,再写入的情况发生(这个情况在RAID 4/5会发生,一般称之为Read/Modify/Write Process)。因此,在所有的RAID级别中,RAID 3的写入性能最好。

RAID 3的Parity Data一般都是存放在一个专属的Parity Disk,但是由于每笔数据都更新整个Stripe,因此,RAID 3的Parity Disk并不会如RAID 4的Parity Disk,会造成性能瓶颈。

RAID 3的并行存取模式,需要RAID控制器特别功能的支持,才能达到磁盘驱动器同步控制,而且上述写入性能的有点,以目前的Caching技术,都可以将之取代,因此一般认为RAID 3的应用,将逐渐淡出市场。

RAID 3以其优越的写入性能,特别适合用在大型、连续性档案吸入为主的应用,如绘图、影响、视讯编辑、多媒体、数据仓储、告诉数据获取等等。

RAID 4

创建RAID 4需要三快或更多的磁盘,它在一个驱动器上保存校验信息,并以RAID 0方式将数据写入其他磁盘。因为一块磁盘是为校验信息保留的,所以阵列的大小是(N-1)*S,其中S是阵列中最小驱动器的大小。就像是RAID 1中那样,磁盘的大小应该相等。

如果一个驱动器出现故障,那么可以使用校验信息来重建所有数据。如果两个驱动器出现故障,那么所有数据都将丢失。不经常使用这个级别的远近是校验信息存储在一个驱动器上。每次写入其他磁盘,都要更新这些信息。因此在大量写入数据时很容易造成校验磁盘的瓶颈,所以目前这个级别的RAID很少使用。

RAID 4是采取独立存储模式,同时以单一专属的Parity Disk来存放Parity Data。RAID 4的每一笔传输(Strip)资料较长,而且可以执行Overlapped I/O,因此其读取的性能很好。但是由于使用单一专属的Parity Disk来存放Parity Data,因此在写入时,就会造成很大的瓶颈,仅此RAID 4并没有被广泛的应用。

RAID 5

在希望结合大量物理磁盘并且仍然保留一些冗余时,RAID 5可能是最有用的RAID模式。RAID 5可以用三块或更多的磁盘上,并使用0块或更多的备用磁盘。就像RAID 4一样,得到的RAID 5设备的大小是(N-1)*S。

RAID 4与RAID 5之间最大的区别就是校验信息均匀分布在各个驱动器上,这样就避免了RAID 4中出现的瓶颈问题。如果其中一块盘出现故障,那么忧郁校验信息,所以所有数据仍可以保持不变。如果可以使用备用磁盘,那么在设备出现故障后,将立即开始同步数据。如果两块磁盘同时出现故障,那么所有数据都会丢失。RAID 5可以经受一块磁盘故障,但不能经受两块或多块磁盘故障。

基本上来说,多人多任务的环境,存取频繁,数据量不是很大的应用,都适合选用RAID 5架构。

RAID 0+1 / RAID 10

该模式综合了RAID 0和RAID 1的优点,适合在速度需求高,又要完全容错,当然经费也很多的应用。RAID 0和RAID 1的原理很简单,合起来也很简单。

首先做RAID 1,然后再把数个RAID 1做成RAID 0,这样可以降低故障率。

参考