RAID技术概述
RAID是廉价磁盘冗余阵列的缩写,更现代的说法是,独立磁盘的冗余阵列。RAID这个概念最早是由1987年加州伯克利大学的David Patterson,Garth Gibson, Randy Katz提出的,他们的目标是展示一个RAID的性能可以达到或超过当时的一个单一的,大容量的,昂贵的磁盘。在项目开发的过程中,随着频繁的磁盘失败,通过磁盘的冗余来避免磁盘数据的丢失已经是必须的了。这样一来,该项目的研究对于将来的RAID变得至关重要。
RAID的标准许多RAID级别在技术上是可以实现的,但是不经常使用。以下完整的列出了RAID级别:
RAID 0:条带或串联
RAID 1:镜像
RAID 0+1:条带加镜像
RAID 1+0:镜像加条带
RAID 2:加重平衡编码修正(Hamming code correction)
RAID 3:使用专用奇偶校验的条带化
RAID 4:独立的读取和写入
RAID 5:带有分布式奇偶校验的条带化
串联---RAID 0 串联可以复合多个物理磁盘成为一个单独的虚拟磁盘,并按如下方式组织:地址空间是相邻的、没有数据冗余 、块(chunks)可以认为是物理磁盘或相邻区域的磁盘空间 。 串联----RAID 0 推动这种技术发展的主要原因是创建一个大于物理磁盘容量的虚拟磁盘设备。通过在逻辑上结合两个或更多物理磁盘来获得更大存储空间。串联也能使你扩展一个虚拟磁盘通过给它串联另外的物理磁盘。这项技术不限制磁盘大小,既成员磁盘的容量可以不同,而且不会损失磁盘空间。 阵列管理软件就是负责将3个物理磁盘复合成一个虚拟磁盘设备,对于应用来说,它只是个邻近的存储空间。
通过使用RAID 0的串联结构可以获得以下优点: 当数据遍布在多个磁盘上时,串联可以提高随机的I/O性能。 写性能也是相同的;如果是随机读取的话,也可以提高读性能。 磁盘的全部容量都可以为用户存储数据。
局限性主要包括: 只使用串联将没有冗余,串联的卷可以通过镜像达到冗余。 串联的可靠性较低,一个磁盘数据的丢失将导致所有磁盘数据的丢失。当磁盘满,数据会通过所有成员磁盘扩展,但是,当磁盘未满时,最后的磁盘将不被使用,降低了磁盘的利用率。
条带----RAID 0 条带可以复合多个物理磁盘成为一个单独的虚拟磁盘,并按如下方式组织:地址空间是分段的 、I/O流在磁盘与磁盘间交换、没有数据冗余 、对性能的增加有意义。条带----RAID 0 推动这种技术发展的主要原因是为了提高每秒I/O(IOPS)的性能。通过并行访问设备来增强性能。在并行访问中,虚拟设备中的所有磁盘大部分时间都用来服务I/O请求,所以提高了I/O的吞吐量。阵列管理软件就是负责把整个阵列看做一个单独的虚拟磁盘。它使用多个物理磁盘并将它们复合为一个虚拟磁盘给应用。 I/O流被划分为称为条带(stripe)的段,从一个逻辑存储单元映射到两个或更多的物理磁盘。条带单元是隔行扫描的所以每个片上的复合空间也是交替的。 在这种结构下,没有数据保护,实际上,执行条带化后,丢失一个磁盘上的数据会导致所有条带磁盘的数据丢失。条带化增强了性能,但是降低了可靠性。
通过使用RAID 0条带化结构可以获得的优势是: 对于大量的连续的I/O请求和随机的I/O请求增强了性能。条带单元的大小可以根据顺序或随机存取而进行优化。 磁盘的全部容量都可以为用户存储数据。
局限性主要包括: 没有冗余 条带化的可靠性较低,丢失一个磁盘的数据将导致所有条带磁盘的数据丢失。
条带单元大小的策略:优化一个条带化RAID 0结构条带单元大小的策略依赖于卷访问的类型。 顺序访问环境在一个顺序的环境里,当请求涉及到条带宽度范围内的所有磁盘成员时,条带化能够提高性能。举例来说,一个条带包含4个磁盘,一个I/O请求为128Kbytes,那么,配置条带单元的大小为32Kbytes。 随机访问环境在一个随机环境里,条带化可以提高性能。随机访问受控于磁盘的搜索和寻道时间,随机的I/O要比顺序的I/O小很多,通常是从2Kbytes到8Kbytes。当条带单元的大小配置为比请求的大小大很多的时候,性能得到优化。举例来说,对于一个8Kbytes的请求,至少配置条带单元的大小为16Kbytes。
镜像----RAID 1 镜像提供了数据的最大可用性,并有以下功能:所有数据的完全冗余拷贝、提高了读性能、透明化了磁盘失败。这项技术发展的主要原因是它能够提供高级别的可用性及可靠性。镜像(RAID 1)通过数据在独立spindes上的多次记录来提供冗余。对于应用来讲,镜像磁盘显示为一个虚拟磁盘。一旦一个物理磁盘失败,失败磁盘上的镜像也就无效了,但系统继续通过未受影响的磁盘进行操作。
通过使用RAID 1的镜像结构可以获得如下的优点: 在一个或多个磁盘上可以获得一个完全冗余的数据拷贝如果一个阵列中的镜像连接到不同的接口板,就可以达到非常高的数据可靠性级别。 所有驱动器都可以用来读取,提高了性能在一个多用户或多任务环境下,当多个磁盘成员要获得满意的读效果时,镜像提高了读性能。相反,如果只有单一的卷读取进程,则将不能提高性能。 你可以设置3路镜像,但性能会受很大影响。在3路镜像中,写性能最大为44%。
局限性: 镜像需要使用两倍的磁盘,本质上占用了2倍的存储空间 镜像降低了大约15%的写性能,这实际上小于典型的RAID 5的写损失。(RAID 5的写性能最大到70%)。
镜像—条带(RAID 0+1) 镜像—条带(RAID 0+1) 复合条带化的镜像可以提供如下功能:极大的提高了性能、完全的数据冗余、透明化了磁盘失败。 使用复合条带和镜像的主要原因是获得RAID 0的性能和RAID 1的可用性。安装它需要较高的花销,但许多用户认为它是值得投资的。 两个磁盘可以先进行条带化,然后进行镜像。可以获得镜像的高可靠性。因为同时使用了条带技术,它的性能要比单独使用镜像的性能要好得多。
它的一个优点就是有利于一个磁盘上分布数据的访问(提高了I/O per second),并增强了数据冗余。
局限性:RAID 0+1是高花销的镜像系统,需要2倍的独立磁盘空间。
条带----镜像(RAID 1+0) 条带----镜像(RAID 1+0) 复合镜像化的条带可以提供以下功能:极大的提高了性能 、完全的数据冗余、透明化了磁盘失败、比RAID 0+1提供了更高的磁盘失败容许。 RAID 1+0拥有所有RAID 0+1性能及可靠性的优点,但它允许了更高级别的磁盘失败而不丢失数据。 RAID 1+0通常在磁盘失败后拥有更快的恢复时间,因为它只需要代替单独的条带来恢复而不是整个镜像。 RAID 1+0推荐在大型卷中使用,因为,失败的恢复时间是个关键。 RAID 1+0的概念根本不同于RAID 0+1,在RAID 1+0的配置中,每个条带是单独镜像的。
优点: 因为每个条带被独立镜像,可以容许大量的磁盘失败而无需禁止卷。 这个配置的性能优于RAID 0+1。
局限性: RAID 1+0是高花销的镜像系统,需要2倍的独立磁盘空间。
带有分布式奇偶校验的条带化----RAID 5 一个RAID 5的卷结构可以进行镜像因为: 条带化结构拥有较好的读性能,可靠性得到提高,而且没有镜像花费高 。附加功能包括: 对于单个的磁盘来说,单独访问是有效的。 数据和奇偶较验值都进行了条带化。 全部的随机的I/O性能依赖于写的百分率。如果写超过20%,那么就可以考虑选择RAID 0+1了。
优点:奇偶校验保护了单一磁盘的失败。RAID 5只需要一个附加的磁盘,其他的都可以用来存储数据。
局限性:在Veritas VM中,最少需要3块磁盘来完成RAID 5 RAID 5不可以被镜像,通过奇偶校验信息来提供冗余。写增强(Write-intersive)性能是很差劲的如果写超过了20%,那么就可以考虑选择RAID 0+1了 在一个写增强的环境里,如果一个磁盘失败,将可能对性能产生严重的影响性能因素 一个磁盘失败,数据仍然可以访问,但性能会受影响 从一个继续存在的磁盘读取数据 ----- 没有改变,从一个失败的磁盘读取数据 ----在条带中读取相对应的条带单元并于原始数据异或后(XOR)相连接,写一个继续存在的磁盘 ---- 如果失败的磁盘保存有奇偶校验的数据,写数据通常不计算奇偶校验。如果失败的磁盘保存有数据,那么将请求一个:读—修改—写的顺序,写入一个失败磁盘 ---- 继续存在的所有磁盘上的所有数据将与新数据使用异或(XOR)后进行连接,结果将写入到奇偶校验驱动器 从一个单一磁盘失败中恢复 ---- 在条带中余下的条带单元的数据被读取,使用异或(XOR)后进行连接,将结果写入替代的磁盘中,假定在配置中有一个有效的交换(spare)空间。
复合RAID模式
单一的RAID模式肯定不能使用当前各种应用的需要,为了得到更多的性能,人们将各种RAID模式联合起来使用。那么将其中两种模式用在会有什么好处呢?可以得到功能更多、性能更好的RAID模式。一般符合RAID模式需要硬件控制器。因为对于如此复杂的应用软件RAID控制器显然是不现实的。RAID 0在各个单一模式中是速度最快的,所以在符合RAID模式中它也是最常用的。最长常用的符合RAID模式是0+1和1+0。 0+1和1+0是有细微区别的,不过有的公司对这个名词是不加以区分的——其实它们的主要区别在于容错能力。这两种复合RAID模式都至少需要4块硬盘。
首先让我们看看RAID 0+1模式。复合使用RAID 0是为了提高磁盘性能,使用RAID 1为了提高容错性能。假设你有8块硬盘,将它们4个一组分成两个阵列——我将其称为基阵列,每个基阵列用RAID 0模式连接。然后你就有了两个延展模式的基阵列。然后你将这两个基阵列用RAID 1模式连接——也就是让其中一个基阵列作为另一个的镜像。如果一个延展模式的基阵列中的硬盘出现故障了,那么这个延展阵列也将全部瘫痪。不过另一个延展阵列仍然可以维持系统工作,并且可以利用其来恢复数据。
RAID 1+0是先组合RAID 1阵列,然后把它们组成RAID 0模式。仍然使用刚才的例子:将8块硬盘分成4组,每组2块硬盘组成一个基阵列,然后将每个基阵列用RAID 1模式连接,也就是让其中一个硬盘作为另一个的镜像。然后把这4个RAID 1模式的基阵列用RAID 0模式连接。这个模式比RAID 0+1有更好的容错能力。任意的一个硬盘驱动器出现故障,因为有镜像驱动器的存在,所以整个阵列将能继续正常工作。
从理论上讲RAID 1+0模式即使每个基阵列都坏一块硬盘,系统仍然能正常工作,只有当第五块出现故障的时候才有出现不可挽回的损失。而RAID 0+1只要两个基阵列都有一块硬盘故障,那么就无法挽回了。:~(
目前流行的RAID 0+1和1+0模式使用了相对简单的复合技术就提高了性能和增强了数据冗余性。随着硬盘驱动器价格的不断下降,4块硬盘的价格也能为个人用户接受了。不过,如果你需要镜像功能的话,你所能使用的硬盘空间将只有两块硬盘空间大小——为了数据的稳定性,你不得不以牺牲50%的空间为代价。企业级应用以及服务器一般会不惜牺牲磁盘空间换取更高的容错性。另外还有一些其它的复合RAID模式比如:RAID 0+3、3+0、0+5、5+0、1+5、5+1。这些模式的实现往往需要昂贵的硬件支持。
RAID模式的选择
现在你已经熟悉了不同的RAID组合模式及其配置,还有什么困扰你?对了,就是如果选择适合的RAID模式。一般用RAID无非就是为了这几个目的:数据冗余、容错性、提高容量、增进性能。数据冗余可以用于保护关键的数据不丢失,一般用于大型公司、企业,当然如果你有钱,也可以为了保护你的以GB为计数单位MP3使用它。容错能力可以带给存储系统更好的稳定。
没RAID通过连接多个硬盘可以提供给计算机系统更大的存储空间。当然根据选择RAID模式的不同,你得到的最大存储空间是不同的,比如如果采用镜像技术,你所需要的空间是要存储数据的两倍。
更多的,特别是个人用户使用RAID技术的目的是为了提高磁盘性能。当然你选择的RAID模式不同,性能的提高也会各不相同。 硬件RAID的实现
首先看一下硬件实现RAID模式的方式:一般使用SCSI或者IDE/ATA作为硬盘同系统的接口。SCSI一般应用于高端服务器上,虽然性能优良、功能强大可是对于普通用户来讲价格太高。IDE/ATA RAID控制器成本低廉,(不少主板已经集成)虽然不能太复杂的应用,性能也比不上SCSI设备,但是对于家用市场来说已经能够满足要求了,所以渐渐成了RAID的主流。
硬件RAID实现分为两种:一种是内置(或集成)RAID控制器,一种是外置RAID控制器。内置RAID控制器通常是常用的卡件的形式插接在计算机主板上,集成RAID控制器则是由主板厂商直接把控制芯片集成在主板上,近来高端主板集成RAID控制器几乎成了标准配置。根据RAID控制器以及连接模式不同,RAID控制器都配有不同数量的缓存,当然缓存越多,控制器的性能就越好了,价格也就越贵了。
外部RAID控制器包括从控制器到硬盘等一套设备。在高端服务器上,你常常可以看到由独立的机箱容纳RAID控制器和硬盘。控制器包括了所有的RAID功能——在系统中看到的只是所有的逻辑驱动器。外部RAID控制器相比内置RAID控制器结构更加复杂,缓存容量更大。这是因为它常常要连接并且组织大量的硬盘来组成复杂的复合RAID来工作。它一般使用SCSI接口——可以进行热插拔,来更换有故障的硬盘,避免中置计算机系统停机所带来的损失。
很明显内置控制器外置的便宜的多。不过外置控制器功能强大、可扩展性强,但是价格不是个人所能承受的。虽然IDE/ATA RAID控制器日渐增多,可是SCSI因其特殊的性能仍然是高端计算机系统的首选。当然你可以选择软件RAID——这是一个相当经济的选择,但是需要占用CPU时间,所以RAID模式越复杂,对于计算机系统影响就越大。所以如果你的预算足够还是选择硬件RAID模式吧