一、概述
RAID(Redundant Array of Independent Disk),从字面意思讲的是基于独立磁盘的具有冗余的磁盘阵列,其核心思想是将多块独立磁盘按不同方式组成一个逻辑磁盘,以此来提高其存储容量、提高性能或者提供数据备份的功能。按其组合的方式不同而分成不同级别的RAID。
RAID分为软件RAID和硬件RAID两类,在比较流行的操作系统中已经集成了软RAID功能,如常用的Windows、Linux系统都有软件RAID功能,在功能上,软件RAID与硬件RAID一样,但是由于软件RAID没有独立的硬件控制设备,所以其性能不如硬件RAID,但是其实现比硬件RAID简单,不需要额外的硬件支持。硬件RAID通常需要有RAID卡,而RAID卡自带有独立的控制部件和内存,所以不会占用系统资源。目前大部分主板都已经集成了RAID卡。
二、RAID级别
-
RAID0(不含校验与冗余的条带存储)
将多块磁盘组合为RAID0后,数据在存储的时候被分割后分散在各个磁盘中,所以能最大地提升存储性能与存储空间,但是缺点是无法做到数据冗余,无法容错,此外,RAID0至少需要两块磁盘。
如下图所示,当写文件到RAID0时,文件会被分割成多个部分,熟悉oracle数据库的应该知道这个类似于重做日志组写日志,重做日志的编号分布和数据块存储在RAID0上的编号一样,当用两块磁盘组成RAID0时,数据被分割成多块,每块都有个编号,分布如下图所示:
优点:RAID0的结构可以加速磁盘IO,而且磁盘利用率达到100%
缺点:因为没有检验与备份,如果磁盘中某一块坏掉了,都将导致整个文件无法读取。
-
RAID1(不含检验的镜像存储)
多块磁盘组合为RAID1后,数据将被同时复制到每一个磁盘中,制作RAID1阵列至少需要两块磁盘,此种阵列只要有其中一块磁盘可用,就可以正常工作,RAID1的安全性最好,但是其利用率最低,两块磁盘组成的RAID1只有50%的利用率。
如下图所示,当有一个文件写入RAID1时,该文件会写入磁盘1,与此同时也会被复制到磁盘2,磁盘1与磁盘2的数据互为备份,很明显,这样会降低写入数据的效率,因为一个数据会被重复写两次,当然读取数据的时候会很快,因为可以同时从两块磁盘读数据。 -
RAID2(位级别的检验式条带存储)
多块磁盘组合为RAID2后,数据将以bit位为单位同步式分别存储在不同的磁盘上,并采用汉明码对数据进行校验与恢复。
假设有一个文件写入RAID2,则该文件会被分成数据为分别同步写入不同的磁盘中每个磁盘上分布的数据在与汉明码运算后再被写入磁盘中,拥有检验位的RAID2允许磁盘中的任何一块损坏,并且能通过其余未损坏的磁盘进行运算后还原已损坏的磁盘上的数据,以此实现数据恢复功能,RAID2对大量数据的读写具有很高的性能,但对少量的数据读写性能反而不好,RAID2至少需要三块磁盘。
-
RAID3(字节级别的检验式条带存储)
该级别的磁盘阵列与RAID2类似,只不过是以字节为单位分割数据。 -
RAID4(数据块级别的检验式条带存储)
该级别的磁盘阵列与RAID2类似,仅仅是数据分割单位不一样,以下是其原理图
-
RAID5(数据块级别的分布式检验条带存储)
多块磁盘组合成RAID5,数据将以block块为单位分别存储在不同的磁盘上,并对数据进行汉明码运算,为了节省磁盘,该类型磁盘阵列的汉明码会被写道不同的磁盘,下图是其原理图