RAID技术详解
RAID,为Redundant Arrays of Independent Disks的简称,中文为廉价冗余磁盘阵列。在1987年由美国柏克莱大学提出RAID(Redundant Arrayof Inexpensive Disks)理论,作为高性能的存储系统,巳经得到了越来越广泛的应用。RAID阵列技术允许将一系列磁盘分组,以实现为数据保护而必需的数据冗余,以及为提高读写性能而形成的数据条带分布。RAID最初用于高端服务器市场,不过随着计算机技术的快速发展,RAID技术已经渗透到计算机遍布的各个领域。如今,在家用电脑主板中,RAID控制芯片也随处可见。
RAID的级别从RAID概念的提出到现在,巳经发展了多个级别,有明确标准级别分别是0、1、2、3、4、5等。但是最常用的是0、1、3、5四个级别。其他还有6、7、10、30、50等。RAID为使用者降低了成本、增加了执行效率,并提供了系统运行的稳定性。
标准的RAID写操作,包括如:RAID4或RAID5中所必需的校验计算,需包括以下几个步骤:
(1)以校验盘中读取数据
(2)以目标数据盘中读取数据
(3)以旧校验数据,新数据及已存在数据,生成新的校验数据
(4)将新校验数据写入校验盘
(5)将新数据写入目标数据盘
当主机将一个待写入阵列RAID组中的数据发送到阵列时,阵列控制器将该数据保存在缓存中并立即报告主机该数据的写入工作已完成。该数据写入到阵列硬盘的工作由阵列控制器完成,该数据可继续存放在Cache中直到Cache满,而且要为新数据腾出空间而必须刷新时或阵列需停机时,控制器会及时将该数据从Cache写入阵列硬盘中。这种缓存回写技术使得主机不必等待RAID校验计算过程的完成,即可处理下一个读写任务,这样,主机的读写效率大为增加。当主机命令将一个数据写入硬盘,则阵列控制器将该数据写入缓存最上面的位置,只有新数据才会被控制器按Write-Back Cache的方式最后写入硬盘。
RAID特点:
1. 成本低,功耗小,传输速率高。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个的磁盘驱动器几倍、几十倍甚至上百倍的速率。这也是RAID最初想要解决的问题。因为当时CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。而RAID最后成功了。
2. 可以提供容错功能,这是大多数使用RAID的第二个原因。因为,普通磁盘驱动器无法提供容错功能,如果不包括写在磁盘上的CRC(循环冗余校验)码的话。RAID和容错是建立在每个磁盘驱动器的硬件容错功能之上的,所以它可以提供更高的安全性。
3. RAID比起传统的大直径磁盘驱动器来,在同样的容量下,价格要低许多。
-----------------------------------------------------------------------------
RAID 0:
RAID 0又称数据分块,即把数据分成若干相等大小的小块,并把它们写到阵列上不同的硬盘上,这种技术又称“Stripping”(即将数据条带化)。把数据分布在多个盘上,在读写时是以并行的方式对各硬盘同时进行操作。从理论上讲,其容量和数据传输率是单个硬盘的N倍。N为构成RAID0的硬盘总数。当然,若阵列控制器有多个硬盘通道时,对多个通道上的硬盘进行RAID0操作,I/O性能会更高。
数据被分成从512字节到数兆字节的若干块后,再交替写到磁盘中。第1块被写到磁盘1中,第2块被写到磁盘2中,如此类推。当系统到达阵列中的最后一个磁盘时,就写到磁盘1的下一分段,如此下去。
分割数据可以将I/O负载平均分配到所有的驱动器中。由于驱动器可以同时写或读,使得性能显著提高。但是,它却没有数据保护能力。如果一个磁盘出现故障,那么数据就会全盘丢失。
从严格意义上说,RAID 0不是RAID,因为它没有数据冗余和校验。RAID 0技术只是实现了带区组。在实现过程中,RAID 0只是连续地分割数据并行地读/写于多个磁盘上。由于数据块被并行地保存在不同的磁盘上,因此RAID 0具有很高的数据传输率。另外,由于组成RAID 0的所有硬盘空间都可以用来保存数据,因此RAID 0的存储空间利用率也是最高的 。所以RAID 0只适用于类似Video/Audio信号存储、临时文件的转储等对速度要求极其严格的特殊应用。由于没有任何的数据冗余,所以安全性极低,只要RAID里的任何一块磁盘损坏,都会发生所有数据丢失的毁灭性的情况。换句话说,RAID 0模式中,硬盘个数越多,安全性越低。因此,RAID 0不适用于关键任务环境,但是,它却非常适合于视频、图象的制作和编辑。
如图所示:系统向三个磁盘组成的逻辑硬盘(RADI 0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。
RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。
RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择.
RAID 1:
RAID 1也被称为RAID镜象(Disk Mirroring),因为一个磁盘上的数据被完全复制到另一个磁盘上。如果一个磁盘的数据发生错误,或者硬盘出现了坏道,那么另一个硬盘可以补救回磁盘故障而造成的数据损失和系统中断。另外,RAID 1还可以实现双工——即可以复制整个控制器,这样在磁盘故障或控制器故障发生时,您的数据都可以得到保护。镜象和双工的缺点是需要多出一倍数量的驱动器来复制数据,但系统的读写性能并不会由此而提高,这可能是一笔不小的开支。RAID l可以由软件或硬件方式实现。
RAID 1主要是通过数据镜像实现数据冗余,在两对分离的磁盘上产生互为备份的数据,因此RAID 1具有很高的安全性,它甚至可以保证在一半数量的磁盘出现问题时还能不间断地工作,但是整个系统的处理能力会受到影响。不过,由于 RAID 1需要通过两次读写来实现磁盘镜像,这样虽然保证了镜像磁盘随时与原磁盘上的数据完全一致,但是磁盘控制器的负载相当大。另外,RAID 1的数据空间浪费极其严重,是RAID各种等级中成本最高的一种。它只有一半的磁盘空间利用率,只有当系统需要极高的可靠性时,人们才会选择使用RAID 1。因此RAID1常用于对容错要求极严的应用场合。
当读取数据时,系统先从RAID 0的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立Mirror,避免备份盘在发生损坏时,造成不可挽回的数据损失。
由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而,Mirror的磁盘空间利用率低,存储成本高。
Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。
RAID 2:
RAID 2是为大型机和超级计算机开发的带海明码校验磁盘阵列。磁盘驱动器组中的第1个、第2个、第4个……第2的n次幂个磁盘驱动器是专门的校验盘,用于校验和纠错。如下图:七个磁盘驱动器组建的RAID 2,第1、2、4个磁盘驱动器(红色)是纠错盘,其余的(紫色)用于存放数据。RAID 2对大数据量的读写具有极高的性能,但少量数据的读写时性能反而不好,所以RAID 2实际使用较少。
RAID 3:
RAID 3属于单盘容错并行传输。即采用Stripping技术将数据分块,对这些块进行异或校验,校验数据写到最后一个硬盘上。它的特点是有一个盘为校验盘,数据以位或字节的方式存于各盘(分散记录在组内相同扇区的各个硬盘上)。当一个硬盘发生故障,除故障盘外,写操作将继续对数据盘和校验盘进行操作。而读操作是通过对剩余数据盘和校验盘的异或计算重构故障盘上应有的数据来进行的。RAID3的优点是并行I/O传输和单盘容错,具有很高可靠性。
缺点:每次读写要牵动整个组,每次只能完成一次I/O。奇偶位是编码信息,如果某个磁盘的数据有误,或者磁盘发生故障,就可以用它来恢复数据。在数据密集型环境或单一用户环境中,组建RAID 3对访问较长的连续记录有利,不过同RAID 2一样,访问较短记录时,性能会有所下降。
RAID 4:
RAID 4是带奇偶校验码的独立磁盘结构。它和RAID 3很相似,不同的是RAID 4对数据的访问是按数据块进行的。RAID 3是一次一横条,而RAID 4一次一竖条。所以RAID 3常须访问阵列中所有的硬盘驱动器,而RAID 4只须访问有用的硬盘驱动器。这样读数据的速度大大提高了,但在写数据方面,需将从数据硬盘驱动器和校验硬盘驱动器中恢复出的旧数据与新数据校验,然后再将更新后的数据和检验位写入硬盘驱动器,所以处理时间较RAID 3长。
RAID 5:
RAID 5也被叫做带分布式奇偶位的条带。每个条带上都有相当于一个"块"那么大的地方被用来存放奇偶位。与RAID 3不同的是,RAID 5把奇偶位信息也分布在所有的磁盘上,而并非一个磁盘上,大大减轻了奇偶校验盘的负担。尽管有一些容量上的损失,RAID 5却能提供较为完美的整体性能,因而也是被广泛应用的一种磁盘阵列方案。它适合于输入/输出密集、高读/写比率的应用程序,如事务处理等。为了具有RAID 5级的冗余度,我们需要至少三个磁盘组成的磁盘阵列。RAID 5可以通过磁盘阵列控制器硬件实现,也可以通过某些网络操作系统软件实现。
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 以四个硬盘组成的RAID 5为例,其数据存储方式如图所示:
图中,P0为D0,D1和D2的奇偶校验信息,其它以此类推。
由图中可以看出,RAID 5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低。
RAID 6:
RAID 6是带有两种分布存储的奇偶校验码的独立磁盘结构。它使用了分配在不同的磁盘上的第二种奇偶校验来实现增强型的RAID 5。它能承受多个驱动器同时出现故障,但是,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了系统的负载较重,大大降低整体磁盘性能,而且,系统需要一个极为复杂的控制器。当然,由于引入了第二种奇偶校验值,我们所以需要的是N+2个磁盘。
RRAID 6是由一些大型企业提出来的私有RAID级别标准,它的全称叫“Independent Data disks with two independent distributed parity schemes(带有两个独立分布式校验方案的独立数据磁盘)”。这种RAID级别是在RAID 5的基础上发展而成,因此它的工作模式与RAID 5有异曲同工之妙,不同的是RAID 5将校验码写入到一个驱动器里面,而RAID 6将校验码写入到两个驱动器里面,这样就增强了磁盘的容错能力,同时RAID 6阵列中允许出现故障的磁盘也就达到了两个,但相应的阵列磁盘数量最少也要4个。下图是RAID 6的图解。
从图中我们可以看到每个磁盘中都具有两个校验值,而RAID 5里面只能为每一个磁盘提供一个校验值,由于校验值的使用可以达到恢复数据的目的,因此多增加一位校验位,数据恢复的能力就越强。不过在增加一位校验位后,就需要一个比较复杂的控制器来进行控制,同时也使磁盘的写能力降低,并且还需要占用一定的磁盘空间。因此,这种RAID级别应用还比较少,相信随着RAID 6技术的不断完善,RAID 6将得到广泛应用。RAID 6的磁盘数量为N+2个。
RAID 7:
RAID 7自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID 7存储计算机操作系统(Storage Computer Operating System)是一套实时事件驱动操作系统,主要用来进行系统初始化和安排RAID 7磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。通过Storage Computer Operating System来设定和控制读写速度,可使主机I/O传递性能达到最佳。如果一个磁盘出现故障,还可自动执行恢复操作,并可管理备份磁盘的重建过程。
RAID 7全称叫“Optimized Asynchrony for High I/O Rates as well as High Data Transfer Rates(最优化的异步高I/O速率和高数据传输率)”,它与以前我们见到RAID级别具有明显的区别。RAID 7完全可以理解为一个独立存储计算机,它自身带有操作系统和管理工具,完全可以独立运行。RAID 7的图解如下:
图中每个“柱体”是由多个磁盘构成,而不是我们以前看到的一个磁盘表示一个“柱体”。从上图我们可以看出,每个磁盘都有一个独立的I/O通道,它们与主通道相连,操作系统可以直接对每个磁盘的访问进行控制,可以让每个磁盘在不同的时段进行数据读写,这样就大大改善了I/O的应用,同时也提高了数据读写的能力,而这种磁盘访问方式也叫做非同步访问。在RAID 7中,提供了一个磁盘作为专门的校验盘,它适合于任何一个磁盘进行数据恢复。
RAID 7采用的是非同步访问方式,极大地减轻了数据写瓶颈,提高了I/O速度。(所谓非同步访问,即RAID 7的每个I/O接口都有一条专用的高速通道,作为数据或控制信息的流通路径,因此可独立地控制自身系统中每个磁盘的数据存取。)如果RAID 7有N个磁盘,那么除去一个校验盘(用作冗余计算)外,可同时处理N-1个主机系统随机发出的读/写指令,从而显著地改善了I/O应用。RAID 7系统内置实时操作系统还可自动对主机发送过来的读/写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高了I/O速度。RAID 7可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率提高至少一倍以上,满足了各类用户的不同需求。总的来说,RAID 7与我们传统的RAID级别有很大区别,它的优点很多,但缺点也非常明显,那就是价格非常高,对于普通企业用户并不实用。
RAID 10(RAID 0+1):
RAID 10,也被称为镜象阵列条带,现在我们一般称它为RAID 0+1。RAID 10(RAID 0+1)提供100%的数据冗余,支持更大的卷尺寸。组建RAID 10(RAID 0+1)需要4个磁盘,其中两个为条带数据分布,提供了RAID 0的读写性能,而另外两个则为前面两个硬盘的镜像,保证了数据的完整备份。RAID (0+1) 允许多个硬盘损坏,因为它完全使用硬盘来实现资料备余。如果有超过两个硬盘做RAID 1,系统会自动实现RAID(0+1)。
RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时,也提供了与RAID 0近似的存储性能。由于RAID 0+1也通过数据的100%备份提供数据安全保障,因此RAID 0+1的磁盘空间利用率与RAID 1相同,存储成本高。RAID 0+1的特点使其特别适用于既有大量数据需要存取,同时又对数据安全性要求严格的领域,如银行、金融、商业超市、仓储库房、各种档案管理等。
RAID 30:
RAID 30也被称为专用奇偶位阵列条带。它具有RAID 0和RAID 3的特性,由两组RAID 3的磁盘(每组3个磁盘)组成阵列,使用专用奇偶位,而这两种磁盘再组成一个RAID 0的阵列,实现跨磁盘抽取数据。RAID 30提供容错能力,并支持更大的卷尺寸。象RAID 10一样,RAID 30也提供高可靠性,因为即使有两个物理磁盘驱动器失效(每个阵列中一个),数据仍然可用。
RAID 30最小要求有6个驱动器,它最适合非交互的应用程序,如视频流、图形和图象处理等。这些应用程序顺序处理大型文件,而且要求高可用性和高速度。
RAID 50:
RAID 50被称为分布奇偶位阵列条带。同RAID 30相仿的,它具有RAID 5和RAID 0的共同特性。它由两组RAID 5磁盘组成(每组最少3个),每一组都使用了分布式奇偶位,而两组硬盘再组建成RAID 0,实验跨磁盘抽取数据。RAID 50提供可靠的数据存储和优秀的整体性能,并支持更大的卷尺寸。即使两个物理磁盘发生故障(每个阵列中一个),数据也可以顺利恢复过来。
RAID 50最少需要6个驱动器,它最适合需要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事务处理和有许多用户存取小文件的办公应用程序。
RAID 53:
RAID 53称为高效数据传送磁盘结构。结构的实施同Level 0数据条阵列,其中,每一段都是一个RAID 3阵列。它的冗余与容错能力同RAID 3。这对需要具有高数据传输率的RAID 3配置的系统有益,但是它价格昂贵、效率偏低。
RAID 5E:
RAID 5E是由IBM公司提出的一种私有RAID级别,没有成为国际标准。这种RAID级别也是从RAID 5的基础上发展而来的,它与RAID 5不同的地方是将数据校验信息平均分布在每一个磁盘中,并且每个磁盘都要预留一定的空间,这部分空间没有进行条带化(条带是指数据为了保存在RAID中,被划分成的最小单元。
通过对条带进行调整,可以使支持RAID的磁盘阵列性能更加优异)。当一个磁盘出现故障时,这个磁盘上的数据将被压缩到其他磁盘预留没有条带化的空间内,达到数据保护的作用,而这时候的RAID级别则从RAID 5E转换成了RAID 5,继续保护磁盘数据。RAID 5E允许两个磁盘出错,最少也需要4个磁盘才能实现RAID 5E。下图是RAID 5E的图解:
RAID 5EE:
RAID 5EE也是由IBM公司提出的一种私有RAID级别,它也没有成为国际标准。RAID 5EE的工作原理与RAID 5E基本相同,它也是在每个磁盘中预留一部分空间作为分布的热备盘,当一个硬盘出现故障时,这个磁盘上的数据将被压缩到分布的热备盘中,达到数据的保护作用。不过与RAID 5E不同的是RAID 5EE内增加了一些优化技术,使RAID 5EE的工作效率更高,压缩数据的速度也更快。RAID 5EE允许两个磁盘出错,最少需要4个磁盘实现。
RAID 1E:
RAID 1E是RAID 1的增强版本,它并不是我们通常所说的RAID 0+1的组合。RAID 1E的工作原理与RAID基本上是一样的,只是RAID 1E的数据恢复能力更强,但由于RAID 1E写一分数据至少要两次,因此,RAID处理器的负载得到加强,从而造成磁盘读写能力的下降。RAID 1E至少需要3块硬盘才能实现。RAID 1E和RAID 1的工作原理图如下:
RAID DP:
RAID DP也属于一种私有的RAID标准,它实际上也就是双RAID 3技术,所谓双RAID 3技术主要是说在同一磁盘阵列中组建两个独立的不同算法的校验磁盘,在单校验磁盘下工作原理与RAID 3一样,但增加了一个校验盘之后,则使整个磁盘阵列的安全性得到提高,并且它的性能比RAID 3和RAID 5都要好。
RAID ADG:
RAID ADG相当于双RAID 5技术,是HP提出来的一种RAID技术。这种技术部署了2个奇偶校验集,并提供了2个硬盘的容量存储这些奇偶校验信息,能同时允许2块硬盘出现故障,有效提升了磁盘内数据的可靠性。不过这种技术会严重影响系统速度,所以并没有得到推广。
JBOD
JBOD(Just Bundle Of Disks)译成中文可以是"简单磁盘捆绑",通常又称为Span。 JBOD 不是标准的RAID级别,它只是在近几年才被一些厂家提出,并被广泛采用。三个硬盘组成的Span为例,其数据存储方式如图所示:
Span是在逻辑上把几个物理磁盘一个接一个串联到一起,从而提供一个大的逻辑磁盘。Span上的数据简单的从第一个磁盘开始存储, 当第一个磁盘的存储空间用完后, 再依次从后面的磁盘开始存储数据。
Span存取性能完全等同于对单一磁盘的存取操作。Span也不提供数据安全保障。它只是简单的提供一种利用磁盘空间的方法,Span的存储容量等于组成Span的所有磁盘的容量的总和。
RAID技术的应用
DAS --direct access storage device直接访问存储设备
DAS是磁盘存储设备的术语,以前被用在大、中型机上。使用在PC机上还包括硬盘设备DAS的最新形式是RAID。“直接访问”指访问所有数据的时间是相同的。
NAS --Network Attached Storage 网络附加存储设备
一种特殊目的的服务器,它具有嵌入式的软件系统,可以通过网络对个种的系统平台提供文件共享服务
SAN --Storage Area Networks 存储区域网
一种高速的专用网络,用于建立服务器、磁盘阵列和磁带库之间的一种直接联接。它如同扩展的存储器总线,将专用的集线器、交换器以及网关或桥路互相连接在一起。 SAN 常使用光纤通道。一个 SAN 可以是本地的或者是远程的,也可以是共享的或者是专用的。SAN 打破了存储器与服务器之间的束缚,允许你独立地选择最佳的存储器或者是最佳的服务器,从而提高可扩性和灵活性。
--------------------------------------------------------------------------------------------
IDE RAID与SCSI RAID
RAID系统可以存在于各种接口界面,就我们现时来说,PATA、SATA以及SCSI均有相应的硬盘可以组成RAID。IDE和SCSI是计算机的两种不同的接口,前者普遍用于PC计算机,而后者一般用于Apple Macintosh系统和UNIX操作系统。RAID技术问世时是基于SCSI接口,因其成本高,因此主要面向服务器等高端应用。普通用户根本无缘拥有RAID。
随着计算机的大众化,由此带动PC计算机的空前繁荣。相应的,在市场的带动下,用于PC计算机的IDE接口设备价格大幅降低,同时性能大幅提高。但是,RAID技术仍只基于SCSI接口,普通的PC用户在羡慕RAID技术的好处的同时,却无法拥有RAID。可喜的是,近来一些厂商看到了 RAID 在低端用户中的巨大市场,开始把RAID技术移植到IDE 接口上,推出了基于IDE接口的RAID应用,称为IDE RAID。而基于SCSI接口的RAID应用则相应称为SCSI RAID。 与SCSI RAID相比,IDE RAID具有极低的价格,和一点也不逊色的性能表现,相应的,IDE RAID 解决方案就具有SCSIRAID无法比拟的高性价比。因此 IDE RAID自推出后,受到普通PC用户和普通商业应用的普遍欢迎。RAID对于普通的用户来说,再也不是什么奢侈的技术了。随着Intel 865/875系列芯片组的发布,家用市场的硬盘接口开始转向SATA,而RAID方式也将从PATA过渡到SATA。