冗余阵列的廉价磁盘(RAID) - 技术文件
Arvind Kumar
2008年5月
版本1.0
介绍
1.1背景:
硬盘的存储容量和数据检索速度在过去几年中增加了多倍。 然而,对于大型商业组织而言,它不仅需要存储千兆字节的无价数据,还可以频繁访问它们。 这些组织在短时间内不能让系统脱机。 此外,由于磁盘故障或者其他原因,甚至无法想到甚至会丢失少量的数据。
1.2问题:
无论存储容量有多大或磁盘性能和质量有多好,单硬盘都无法满足所有这些要求。 这里需要一种可以存储大量数据的系统,提供容错能力,在增加存储容量方面可扩展,最重要的是可靠的。
1.3解决方案:
RAID - 廉价磁盘冗余阵列,系统解决了上述大多数问题。 RAID背后的想法是使用多个独立的硬盘,使得它们似乎是系统用户的单个大型磁盘,同时提供更快的访问和数据保护。 RAID可以通过多种方式实现,具体取决于应用程序的类型和要使用的环境。 然而,减轻我们问题的每一项创新都带来了额外的成本和复杂性。 但是如上所述,与实施RAID的成本花费相比,没有人想要丢失其数据是无价的。
1.4 RAID类型:
RAID可以实现为硬件或软件。 硬件RAID系统需要专用的RAID控制器,另一方面,软件RAID不需要任何额外的硬件,并且作为操作系统中的功能捆绑在一起。 由于硬件RAID采用专用控制器来实现,因此它具有比软件RAID更好的性能优势。
由于硬件成本的降低,RAID子系统迟早会成为基本PC系统配置的一部分。
1.5 RAID - 多么有用?
我们看到RAID比单个磁盘系统的使用有很多优势。 然而,它不是一个魔杖,可以吹灭所有的问题和问题。 如果我们简单地说,一些RAID级别将始终提供具有高可用性和改进性能的容错,我们可能会出错。 这一切都取决于具体的用途,我们打算使用哪个RAID级别,以及我们如何实施和管理它。 我们将详细讨论这些问题。
2. RAID级别实现和概念
不同的RAID级别的实现方式不同,具有不同的行为。 根据实现,每个RAID级别的性能不同。 人们必须了解磁盘如何排列在阵列中的关键概念,如何提供容错 - 即使用镜像或奇偶校验。 在少数情况下,读写操作可能会受到影响。 不要忘记还有成本和复杂性问题。
以下是在使用RAID系统之前应该了解的术语:
2.1驱动阵列:
驱动器阵列是以特殊方式管理的硬盘驱动器的集合。 所有的驱动器都被格式化在相同的文件系统中,大多数实现(RAID级别)都希望将驱动器大小相同。
2.2物理驱动器:
物理驱动器实际上是作为RAID系统组件的基本硬盘。 多个物理驱动器用于形成驱动器阵列。
2.3逻辑驱动器:
逻辑驱动器是通过物理驱动器创建的,这为RAID用户提供了一个错觉,他拥有一个(或多个)可用的大尺寸硬盘驱动器。 如果驱动器阵列有10个100 GB大小的磁盘,则可以根据需要将它们代表为大小为700 GB和300 GB的两个逻辑驱动器。
2.4镜像:
镜像是用于提供数据冗余的概念,以便最终可以实现容错。 使用镜像的RAID级别会在两个不同的驱动器中复制相同的数据,以便如果一个驱动器发生故障,则其他驱动器中的数据仍然完整。 RAID级别1使用镜像(请参阅第3节的RAID级别)。 镜像还可以更快地恢复数据。 然而,实现镜像的成本相当高,因为磁盘总数的一半被浪费了。
2.5条纹:
分条是将数据分割成多个条带的过程,并且一次写入和读取它们,跨越多个磁盘。 例如,如果有大文件,则需要使用多个读取周期将整个文件读入内存。 而如果文件是条带化的,并且数据写在多个磁盘上,则可以在一个读取周期读取整个文件。 这增加了吞吐量并提高了性能。
条带可以在字节级别和块级别上实现。 可以根据应用需要选择条带大小。 RAID 3使用字节级别条带化,而RAID级别0,4,5,6(参见第3节,用于RAID级别)使用块级别条带化。
2.6平等度:
这是通过冗余提供容错的第二种技术(第一种是镜像)。 奇偶校验信息根据实际数据值计算,并与数据一起以某种特定方式存储(如RAID 5,6)或单独的磁盘驱动器(在RAID 3,4的情况下)。 使用奇偶校验的理念是,它是从数据计算出的额外的信息位,使得如果数据位或块中的一个被损坏,则可以使用该附加信息构造原始值。
奇偶校验计算使用逻辑运算 - XOR完成。 使用XOR的优点是,如果你做A XOR B,然后使用结果做XOR B,结果再次是A.
例如:
如果我们有四个数据元素A,B,C,D及其计算的奇偶校验信息是P.如果我们知道其他四个元素,我们总是可以再现一个五分之一的缺失元素。 该技术用于使用Parity的RAID实现。
奇偶校验提供比镜像更好的磁盘利用率。 当奇偶校验与条带化一起使用时,可以提高性能。 但是,必须对正在写入磁盘阵列的每个数据计算奇偶校验。 为了加快操作速度,RAID控制器通常具有计算奇偶校验位数百万次的计算能力。
虽然奇偶校验允许比镜像更多的磁盘利用率,但是使用奇偶校验恢复数据比通过镜像完成的恢复更复杂。 由用户决定如何实现RAID,并决定哪个RAID级别适合他的设计。
RAID级别
下面讨论RAID级别0,1,3,4,5,6的优点和缺点。 我已经跳过了RAID级别2,因为这些天没有实现。
3.1。 RAID LEVEL 0:
图:RAID 0 - 无容错的条形磁盘阵列
RAID 0实现条带化。 数据被分解为块,每个块写在磁盘阵列中的不同硬盘上。 RAID 0至少需要两个磁盘驱动器来实现。 与单磁盘系统相比,读取和写入操作得到改进,因为负载在多个通道之间共享,并在磁盘上并行完成。 当每个磁盘驱动器有一个控制器并且跨多个控制器完成数据剥离时,性能是最佳的。 不需要奇偶校验计算开销。 设计简单易行。 然而,由于没有冗余,它不提供容错。 如果即使一个驱动器发生故障,驱动器阵列上的数据也将丢失。
3.2。 RAID LEVEL 1:
图:镜像
RAID 1实现镜像。 它需要至少两个相同大小的磁盘来实现。 如果一个磁盘大于另一个磁盘,则创建的RAID设备将具有最小磁盘的大小。 数据在这两个磁盘中重复。 在磁盘故障时,与其他RAID级别相比,恢复更容易。 数据只需要复制到新磁盘。 写入性能要比单个磁盘上的写入要差,因为必须完成多个写入操作,一个在阵列上的每个磁盘上。 为了获得最高性能,控制器应设计成能够执行两个同时读取请求(每个(镜像))磁盘中的一个。 设计可能是最简单的。 RAID 1的主要缺点是实际的磁盘利用率仅为50%,因为一半的磁盘用于镜像。