RAID技术,对于许多人来说,尤其是那些投身于服务器运维领域的专业人士,无疑是一个耳熟能详的词汇。然而,由于RAID概念的多样性,有时我们可能会在其中某些概念上产生混淆。
这篇文章源自网络,但其内容的深度和广度都堪称上乘。它不仅详细解析了RAID技术的核心概念、基本工作原理和关键技术点,还对RAID的各种等级和当前的发展现状进行了全面的介绍。更重要的是,文章还为用户在实际应用中如何选择RAID技术提供了基本的指导原则,这对于初学者来说无疑是一大福音。
通过这篇文章,我们可以更加清晰地理解RAID技术的各个方面,为未来的应用选择提供有力的支持。
一、RAID 简述
1988年,美国加州大学伯克利分校的D. A. Patterson教授等人首次在论文“A Case of Redundant Array of Inexpensive Disks”中引入了RAID(Redundant Array of Inexpensive Disks)的概念,即廉价冗余磁盘阵列。当时,鉴于大容量磁盘的价格昂贵,RAID的设计理念是通过组合多个较小、成本较低的磁盘,以较低的成本实现与昂贵大容量磁盘相当的容量、性能和可靠性。
然而,随着磁盘技术的发展和成本降低,原先“廉价”的称呼已不再符合实际情况。因此,RAID咨询委员会(RAID Advisory Board, RAB)决定将名称中的“Inexpensive”改为“Independent”,使得RAID变为独立磁盘冗余阵列(Redundant Array of Independent Disks)。尽管名称有所变化,但其核心设计理念和技术架构并未改变。
RAID的设计思想迅速在业界得到认可,并作为一种高性能、高可靠性的存储技术得到广泛应用。RAID通过数据条带、镜像和数据校验技术,实现了高性能、可靠性、容错能力和扩展性。根据不同的技术策略和架构,RAID被分为不同的等级,以满足不同数据应用的需求。D. A.Patterson等人的论文最初定义了RAID1到RAID5这几个等级,之后又有RAID0和RAID6的扩展。近年来,尽管存储厂商推出了诸如RAID7/RAID10/01、RAID50、RAID53、RAID100等更多RAID等级,但这些并未形成统一的标准。目前,业界公认的标准是RAID0到RAID5,其中除RAID2外的四个等级已被定为工业标准,而在实际应用中,RAID0、RAID1、RAID3、RAID5、RAID6和RAID10是最为常见的选择。
从实现角度来看,RAID主要分为软RAID、硬RAID以及软硬混合RAID三种类型。软RAID完全依赖于操作系统和CPU进行所有操作,没有独立的RAID控制/处理芯片和I/O处理芯片,因此效率相对较低。硬RAID配备了专门的RAID控制/处理芯片、I/O处理芯片以及阵列缓冲,不占用CPU资源,但成本较高。而软硬混合RAID则具备RAID控制/处理芯片,但缺乏I/O处理芯片,需要CPU和驱动程序协助完成操作,其性能和成本介于软RAID和硬RAID之间。
每个RAID等级都代表了一种特定的实现方法和技术,它们之间并无优劣之分。在实际应用中,用户应根据数据应用的特点,综合考虑可用性、性能和成本等因素,选择最适合的RAID等级及实现方式。
二、基本原理
RAID(Redundant Array of Independent Disks),又称独立磁盘冗余阵列或磁盘阵列,是一种由多个高性能磁盘驱动器组成的存储系统,旨在提供超越单个磁盘的存储性能与数据冗余保障。RAID技术通过多磁盘管理技术,为主机环境提供成本效益高、数据可靠性出色的高性能存储解决方案。根据SNIA(存储网络行业协会)的定义,RAID是一种磁盘阵列,其中部分物理存储空间用于记录用户数据的冗余信息,以确保在磁盘或访问路径发生故障时,能够利用冗余信息重建用户数据。
RAID的初衷是满足大型服务器对高端存储功能和数据冗余安全性的需求。它通过并发地在多个磁盘上读写数据,显著提升存储系统的I/O性能。同时,大多数RAID等级都具备完善的数据校验和纠正措施,甚至采用镜像方式,极大增强了系统的可靠性。
与此相对的是JBOD(Just a Bunch of Disks),它最初指的是没有控制软件协调的磁盘集合,与RAID的主要区别在于其缺乏数据冗余和性能优化机制。如今,JBOD更多指代磁盘柜,无论是否提供RAID功能。
RAID技术的两大核心目标是提升数据可靠性和I/O性能。通过将数据分散存储在多个磁盘中,RAID向计算机系统呈现为一个单独的磁盘,实现了数据的冗余保护。当某块磁盘发生故障时,RAID系统可以利用冗余信息自动重建数据,确保数据的完整性和连续性。此外,通过并发读写操作,RAID能够显著提升系统的聚合I/O带宽,从而满足高性能应用的需求。然而,这也意味着磁盘阵列的总可用存储空间会相应减少,以换取更高的可靠性和性能。
RAID技术还支持在系统运行过程中,即使部分磁盘出现故障,也能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但性能可能会有所降低。一些高级的RAID系统还支持热交换(Hot Swapping),允许在不停机的情况下替换磁盘驱动器,进一步提高了系统的可用性和可维护性。
需要注意的是,RAID并不能替代数据备份。它主要针对的是磁盘故障等物理层面的问题,而对于非磁盘故障造成的数据丢失(如MM、人为破坏、意外删除等),RAID系统本身无能为力。因此,数据备份、灾备等数据保护措施仍然至关重要,它们与RAID相辅相成,共同保障数据在不同层次上的安全性。
RAID技术主要依赖于三个关键概念和技术:镜像(Mirroring)、数据条带(Data Striping)和数据校验(Data Parity)。镜像通过将数据复制到多个磁盘来提高可靠性和读性能;数据条带则将数据分片保存在不同磁盘上,以实现并发读写操作,提升I/O性能;而数据校验则利用冗余数据进行错误检测和修复,提高系统的可靠性和容错能力。不同等级的RAID会根据实际需求和应用场景,采用一个或多个这些技术来实现不同的数据可靠性、可用性和I/O性能。因此,在选择和设计RAID系统时,需要深入理解系统需求,综合评估可靠性、性能和成本等因素,以做出合理的选择。
RAID的概念自诞生以来便迅速得到了业界的广泛认可,存储行业倾注了大量资源和精力来研究和开发基于RAID技术的产品。随着处理器、内存、计算机接口等技术的持续进步,RAID技术也不断地发展和创新,从最初的高端系统逐步占领至如今的中低端市场,成为计算机存储领域不可或缺的一部分。
RAID技术之所以如此流行,是因为它具备一系列显著的特征和优势,能够基本满足各种数据存储需求。其主要优势可以概括为以下几点:
(1) 大容量
RAID的一个显著优势在于其强大的容量扩展能力,它能够将多个磁盘组合成一个整体,从而创造出海量的存储空间。在当前技术背景下,单个磁盘的容量已经可以轻松达到1TB以上,这意味着通过RAID技术,系统的存储容量可以达到PB级别,足以满足绝大多数的存储需求。然而,值得注意的是,RAID的可用容量并非简单地等于所有成员磁盘的总容量。由于不同等级的RAID算法需要一定的冗余开销来确保数据的安全性和可靠性,因此实际可用的存储容量会小于成员磁盘的总容量。具体的容量开销取决于所采用的RAID算法。在实际应用中,如果已知RAID算法和成员磁盘的容量,我们可以根据算法的特性计算出RAID的可用容量。一般来说,RAID的容量利用率在50%到90%之间,这取决于所选的RAID级别以及冗余数据的存储方式。通过精心配置和管理,RAID系统可以在确保数据安全的同时,最大化地利用存储空间,满足各种存储需求。
(2) 高性能
RAID之所以展现出卓越的高性能,主要归功于其采用的数据条带化技术。单个磁盘的I/O性能往往受限于接口、带宽等计算机技术,导致性能瓶颈的出现。然而,通过数据条带化,RAID将数据的I/O操作分散到各个成员磁盘上,这种方式有效地提升了整体的I/O吞吐量,使得RAID系统能够展现出比单个磁盘成倍增长的聚合I/O性能,从而显著提升了系统的整体性能。
(3) 可靠性
RAID的一个显著特征是其卓越的可用性和可靠性。尽管从直观上看,由多个磁盘组成的RAID系统在理论上可能较单个磁盘在可靠性上稍显不足,因为存在多个潜在的故障点。然而,这一观点基于一个隐含的假定,即单个磁盘的故障会导致整个RAID系统不可用。幸运的是,RAID通过采用如镜像和数据校验等先进的数据冗余技术,打破了这一假定。
镜像作为最直接的冗余技术,将一组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,确保在任何时候都有数据副本可供使用。虽然这种方法会带来50%的冗余开销,但其提供了极高的数据可用性。
相比之下,数据校验技术则更为高效。它利用校验冗余信息对数据进行校验和纠错,而不需要像镜像那样完全复制数据。因此,数据校验技术的冗余开销远小于镜像,同时仍然能够提供强大的数据保护能力。
这些RAID冗余技术极大地提升了数据的可用性和可靠性。即使在某些磁盘出现故障的情况下,也能确保数据的完整性和系统的连续运行,从而有效避免数据丢失和系统中断的风险。
(4) 可管理性
RAID实际上是一种先进的虚拟化技术,它将多个物理磁盘驱动器整合成一个看似单一、容量庞大的逻辑驱动器。对于外部的主机系统而言,RAID系统就像是一个高性能、高可靠性的大型磁盘驱动器。用户能够在这个虚拟驱动器上便捷地组织和存储各类应用数据。
从用户应用的角度看,RAID的引入使得存储系统变得简单易用,极大地提升了管理效率。由于RAID内部已经完成了大量的存储管理工作,如数据条带化、镜像、数据校验等,管理员只需关注并管理这个单一的虚拟驱动器,从而显著减少了管理负担。
此外,RAID系统还具备动态扩展性,能够方便地增加或减少磁盘驱动器,而无需中断系统的正常运行。同时,RAID还能够自动进行数据校验和数据重建,进一步简化了管理工作。这些特性使得RAID成为现代存储解决方案中的关键组成部分,为用户提供了高效、可靠的存储服务。
三、关键技术
3.1 镜像
镜像技术是一种强大的数据冗余技术,旨在保护磁盘免受故障导致的数据丢失。在RAID系统中,镜像技术的典型应用是同时创建两个完全相同的数据副本,并将它们分布在两个不同的磁盘驱动器组中。这种方式确保了数据的完全冗余,一旦一个数据副本失效或不可访问,外部系统可以无缝地切换到另一个副本,确保应用系统的连续运行和性能稳定。
镜像技术的优势在于其快速且直接的故障恢复能力,无需复杂的计算和校验过程,只需简单地复制数据副本即可。此外,镜像还支持从多个副本进行并发读取数据,显著提升了读I/O性能。然而,由于写操作需要同步更新多个副本,这可能会导致写I/O性能略有降低。
尽管镜像技术提供了极高的数据安全性,但其代价也相当昂贵。至少需要双倍的存储空间来存储数据的两个副本,这使得成本大幅上升。因此,镜像技术主要被应用于对数据安全要求极高的场景,如金融交易、企业核心数据等,在这些场合下数据丢失可能会带来灾难性的后果。
值得一提的是,镜像技术还具备“拆分”功能,可以在特定时间点创建数据的快照。这种功能实现了一种近乎实时的数据备份技术,几乎消除了备份窗口,进一步增强了数据的安全性和可恢复性。
3.2 数据条带
磁盘存储的性能瓶颈通常源于磁头寻道定位,这是一种相对慢速的机械运动,难以与高速运转的CPU相匹配。此外,单个磁盘驱动器的性能有其物理极限,I/O性能往往非常有限。然而,RAID技术的出现改变了这一局面。它由多块磁盘组成,并通过数据条带技术将数据分割成块,分散存储在多个磁盘中。这一设计使得数据读写能够并发进行,多个磁盘同时参与数据的读写操作,从而实现了极高的聚合I/O性能。
数据条带技术的优势在于其强大的并发处理能力和良好的线性扩展性。对于大容量数据而言,这一优势尤为显著。如果没有采用条带技术,数据只能按顺序存储在磁盘阵列的某个磁盘上,读取时也需要按顺序进行。而采用条带技术后,数据被分散存储在多个磁盘上,可以实现并行读写,从而显著提升数据存取速度。
然而,数据条带技术的分块大小选择是一个需要权衡的问题。分块大小可以从一个字节到几KB不等。较小的分块可以带来更强的并行处理能力,但也可能增加块存取的随机性和块寻址时间。因此,在实际应用中,需要根据数据的特性和需求来选择合适的分块大小,以在数据存取随机性和并发处理能力之间找到最佳平衡点。
值得注意的是,虽然数据条带技术可以显著提高I/O性能,但它并不关注数据的可靠性和可用性。实际上,任何一个数据条带损坏都可能导致整个数据的不可用。因此,在采用数据条带技术时,需要与其他数据冗余技术(如镜像、校验等)结合使用,以确保数据的完整性和安全性。
3.3 数据校验
镜像技术因其高安全性和高读性能而备受青睐,但冗余开销较大,成本较高。相比之下,数据条带技术通过并发性显著提升了性能,然而它在数据安全性与可靠性方面缺乏考量。数据校验作为一种冗余技术,利用校验数据来确保数据的完整性和安全性,能够检测数据错误,并在可能的情况下进行数据重构。相较于镜像技术,数据校验显著降低了冗余开销,以较小的成本提供了出色的数据完整性和可靠性。RAID的不同等级常常将高性能的数据条带技术和数据安全性强的数据校验技术相结合使用。
在采用数据校验时,RAID会在写入数据的同时进行校验计算,并将校验数据存储在RAID成员磁盘中。校验数据的存储方式可以集中保存在某个磁盘上,也可以分散存储在多个不同磁盘中,甚至校验数据本身也可以分块存储。不同的RAID等级在实现上各有差异。当部分数据出错时,可以利用剩余数据和校验数据进行反校验计算,以重建丢失的数据。相较于镜像技术,校验技术的优势在于显著降低了开销,但由于每次数据读写都需要进行大量的校验运算,因此对计算机的运算速度提出了较高的要求,通常需要使用硬件RAID控制器来实现。在数据重建恢复方面,校验技术相对于镜像技术而言更为复杂且速度较慢。
在数据校验算法中,海明校验码和异或校验是两种最为常用的方法。海明校验码由理查德·海明提出,它不仅能检测错误,还能定位错误位置并自动进行纠正。海明校验的基本思想是将有效信息按照特定规律分组,并为每个组设置校验位,从而提供多位检错信息以定位并纠正错误。异或校验则是通过异或逻辑运算生成校验信息,当有效信息出现错误时,利用校验信息与初始值的异或运算可以还原出正确的信息。
四、RAID 等级
4.1 JBOD
JBOD(Just a Bunch Of Disks)并非标准的RAID等级,而是一个简单的磁盘集合概念,其中不包含任何控制软件来协调磁盘间的操作。JBOD将多个物理磁盘简单地串联在一起,形成一个逻辑上连续的单一大磁盘。数据的存放机制非常简单,从第一块磁盘开始按顺序存储,当前磁盘的存储空间耗尽后,数据会自然地继续存储在下一个磁盘上。
然而,JBOD的存储性能与单块磁盘无异,因为它并不具备RAID的并行处理和数据冗余功能。这意味着JBOD不提供任何数据安全保护机制,只是单纯地扩展了存储空间。其可用存储容量等于所有成员磁盘的存储空间之和。
在当前的存储解决方案中,JBOD常用来指代磁盘柜,无论该磁盘柜是否具备RAID功能。它通常用于需要大容量存储空间但对数据安全性要求不高的场景。
图1 JBOD
4.2 标准 RAID 等级
SNIA(存储网络行业协会)和Berkeley等权威组织机构将RAID0、RAID1、RAID2、RAID3、RAID4、RAID5和RAID6七个等级确立为标准的RAID等级,这一分类在业界和学术界均得到了广泛认可。这些标准等级构成了最基本的RAID配置集合,它们单独或综合地运用了数据条带、镜像和数据校验等关键技术。此外,标准RAID还支持组合配置,即所谓的RAID组合等级,以满足对性能、安全性和可靠性有更高要求的存储应用需求。
1.RAID0
RAID0 是一种纯粹的、无数据校验的数据条带化技术,它并不属于传统意义上的RAID,因为它不提供任何形式的冗余策略。RAID0通过将多个磁盘进行条带化处理,将它们组合成一个大容量的存储空间(如图 2 所示)。在这一配置中,数据被分散存储于所有磁盘中,并以独立访问的方式实现多磁盘的并行读写操作。由于能够并发执行I/O操作,总线带宽得以充分利用,同时避免了数据校验的开销,因此RAID0在性能上表现卓越,是所有RAID等级中性能最高的。
理论上,一个由n块磁盘组成的RAID0系统的读写性能理论上可以接近单个磁盘性能的n倍。然而,由于总线带宽、磁盘性能差异等多种实际因素的限制,实际性能提升通常会低于理论值。
RAID0具有低成本、高读写性能以及100%的存储空间利用率等显著优点。然而,它不提供任何数据冗余保护,因此一旦数据损坏或磁盘发生故障,数据将无法恢复。因此,RAID0通常适用于那些对性能要求严格,但对数据安全性和可靠性要求不高的应用场景,如视频、音频存储、临时数据缓存等。
图2 RAID0 :无冗错的数据条带
2.RAID1
RAID1,也被称作镜像,它通过将数据同时、完全一致地写入工作磁盘和镜像磁盘来确保数据的冗余备份。这种配置方式意味着RAID1的磁盘空间利用率仅为50%,因为每个数据块都在两个磁盘上进行了存储。在数据写入的过程中,由于需要同时写入两个磁盘,RAID1的响应时间可能会受到一定的影响。然而,当读取数据时,由于可以从任意一个磁盘读取数据(工作磁盘或镜像磁盘),因此读取性能并不会受到影响。RAID1提供了极佳的数据保护能力。一旦工作磁盘发生故障,系统可以立即从镜像磁盘中读取数据,确保数据的连续性和用户工作的正常进行。这种高可用性使得RAID1成为对数据安全性有严格要求的场合的理想选择。工作原理如图 3 所示。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。RAID1 拥有完全容错的能力,但实现成本高。RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
图3 RAID1 :无校验的相互镜像
3.RAID2
RAID2,也被称为纠错海明码磁盘阵列,其核心理念是通过海明码实现数据的校验冗余。海明码是一种编码技术,它在原始数据中嵌入特定的校验码以检测和纠正错误。在RAID2中,数据按位存储,每块磁盘负责存储数据编码中的一位。磁盘数量取决于所设定的数据存储宽度,这个宽度可以由用户自定义。
如图4所示,一个数据宽度为4的RAID2配置需要4块数据磁盘和3块校验磁盘。如果将数据宽度扩展到64位,那么就需要64块数据磁盘和7块校验磁盘。由此可见,随着数据宽度的增加,RAID2的存储空间利用率也会相应提高,但同时所需的磁盘数量也会显著增加。
由于海明码具备纠错能力,RAID2能够在数据发生错误时自动进行纠正,确保数据的安全性。此外,RAID2在数据传输性能上表现优异,且其设计复杂性相对RAID3、RAID4和RAID5较低。
然而,RAID2也存在一些显著的缺点。首先,海明码的数据冗余开销较大,这意味着存储效率相对较低。其次,RAID2的数据输出性能受到阵列中最慢磁盘驱动器的限制,这可能导致整体性能瓶颈。再者,由于海明码是按位运算,RAID2在数据重建过程中会消耗大量时间。最后,由于现代磁盘驱动器大多已经具备了自己的纠错功能,RAID2的这些缺点使得它在实际应用中很少被采用,目前主流的存储磁盘阵列并不支持RAID2。
图 4 RAID2 :海明码校验
4.RAID3
RAID3(如图5所示)是一种采用专用校验磁盘的并行访问阵列技术。在这种配置中,一个单独的磁盘被指定为校验盘,而其余磁盘则作为数据盘使用。数据以位或字节为单位交叉存储在多个数据盘上,以实现数据的条带化。RAID3至少需要三块磁盘来实施,其中不同磁盘上同一带区的数据会进行XOR校验,并将计算出的校验值写入校验盘中。
在RAID3正常工作状态下,读取性能与RAID0相当,因为它能并行地从多个磁盘条带中读取数据,从而提供极高的性能。此外,RAID3还具备数据容错能力,能够在部分磁盘发生故障时保护数据的完整性。
然而,当向RAID3写入数据时,性能会受到影响。这是因为写入操作不仅需要写入新的数据块,还需要读取同一条带上的其他数据块以计算新的校验值,并将这个新校验值写入校验盘中。这种写入过程包含多个步骤,如数据块写入、数据块读取、校验值计算和校验值写入,导致系统开销增加,性能降低。
如果RAID3中的某个磁盘发生故障,虽然不会直接影响数据的读取,但读取操作可能会受到影响,尤其是在需要读取的数据块位于失效磁盘上时。此时,系统需要读取所有同一条带的数据块,并根据校验值来重建丢失的数据,这会导致系统性能下降。当故障磁盘被更换后,系统可以按照相同的方式将故障盘中的数据重建至新磁盘。
RAID3的优势在于它只需要一个校验盘,因此阵列的存储空间利用率较高。同时,其并行访问的特性使得它能够为高带宽的大量读写操作提供高性能,适用于大容量数据的顺序访问应用,如影像处理和流媒体服务等。然而,随着RAID5算法的不断改进,RAID5在大数据量读取时能够模拟RAID3的性能,并且在出现坏盘时性能下降较小,因此RAID5通常被视为RAID3的替代方案,用于运行具有持续性、高带宽、大量读写特征的应用。
图5 RAID3 :专用位校验的数据条带
5.RAID4
RAID4与RAID3在基本原理上相似,但它们的条带化方式不同。RAID4(如图6所示)以数据块为单位来组织数据,使得写操作仅涉及当前数据盘和专用的校验盘,从而允许多个I/O请求同时处理,有效提升了系统性能。通过按块存储数据,RAID4能够确保单个数据块的完整性,避免受到其他磁盘上同条带数据的影响。
RAID4同样使用XOR校验来确保数据的完整性,将不同磁盘上同级数据块的校验结果存储在校验盘中。在写入数据时,RAID4会计算每个磁盘上同级数据块的校验值,并将其写入校验盘。在读取数据时,RAID4会进行即时校验以确保数据的准确性。因此,当某个磁盘上的数据块损坏时,RAID4可以利用校验值和其他磁盘上的同级数据块进行数据重建。
尽管RAID4提供了优秀的读性能,但其写性能却相对较差。这是因为RAID4在写操作时必须逐个磁盘地写入数据,并同时更新校验盘中的校验数据。这种顺序写入的方式限制了RAID4的写性能,尤其是在成员磁盘数量较多时,校验盘可能成为系统性能的瓶颈。
由于RAID4的这些限制和不足,它在实际应用中并不常见。主流存储产品更倾向于使用其他RAID级别(如RAID5)来提供数据保护和性能优化。
图6 RAID4 :专用块级校验的数据条带
6.RAID5
RAID5是目前最为常见的RAID等级之一,其原理与RAID4相似,但核心区别在于RAID5将校验数据分散存储在阵列中的所有磁盘上,而非使用专门的校验磁盘。这一设计使得数据和校验数据的写操作能够同时发生在不同的磁盘上,从而避免了RAID4中因并发写操作而引发的校验盘性能瓶颈问题。
RAID5的另一个显著优势在于其出色的扩展性。随着阵列中磁盘数量的增加,RAID5的并行处理能力也随之增强,支持更多的磁盘数量,从而提供更高的存储容量和性能。
在RAID5的配置中(如图7所示),数据和校验数据同时存储在磁盘上,数据块与对应的校验信息分别保存在不同的磁盘上。这种布局方式使得当某一数据盘损坏时,系统能够利用同一条带的其他数据块和对应的校验数据来重建损坏的数据。然而,与其他RAID等级相同,重建数据时RAID5的性能会受到一定影响。
RAID5在存储性能、数据安全和存储成本之间达到了良好的平衡,可以视为RAID0和RAID1的折中方案。它提供了较为全面的数据保护,同时保持了较高的存储效率,是目前综合性能最佳的数据保护解决方案之一。因此,RAID5广泛应用于各种存储应用需求,特别是在数据中心中,它常被用作应用数据的保护方案。
图7 RAID5 :分散校验的数据条带
7.RAID6
在应对单个磁盘失效的挑战时,前述的各种RAID等级都能有效地保护数据安全。然而,一旦遭遇两个磁盘同时故障的情况,数据恢复就变得极为困难。为了解决这一问题,RAID6技术应运而生,它通过引入双重校验的概念,为数据提供了更为强大的保护。如图8所示,RAID6能在阵列中同时出现两个磁盘失效时,依然确保数据的完整性和可恢复性。
RAID6是RAID5的升级版,它继承了RAID5的优点并进一步优化了数据保护能力。这种扩展的RAID5等级,不仅要支持数据的恢复,还需要能够恢复校验数据,这使得RAID6的实现成本较高,同时控制器的设计也更为复杂和昂贵。
RAID6最常见的实现方式是利用两个独立的校验算法(例如P和Q),将校验数据分别存储在两个不同的校验盘上,或者将其分散存储在所有成员磁盘中。当两个磁盘同时失效时,系统可以通过求解两元方程来重建这两个磁盘上的数据,从而确保数据的完整性和可用性。
RAID6具有出色的读取性能和更高的容错能力,这使得它在需要高数据安全等级的场合中尤为适用。然而,由于其成本高于RAID5,并且写性能相对较差,同时设计和实施过程也较为复杂,RAID6在实际应用中并不普遍。尽管如此,对于那些对数据安全性要求极高的场景,RAID6通常被视为一个相对经济的替代方案,尤其是在与RAID10相比时。
图8 RAID6 :双重分散校验的数据条带
4.3 RAID 组合等级
RAID 等级各自拥有独特的优势和局限性,为了克服这些限制并最大化性能与数据安全性的优势,业界和学术界提出了多种RAID组合等级的概念,如RAID00、RAID01、RAID10、RAID100、RAID30、RAID50、RAID53和RAID60等。然而,在实际应用中,由于成本和实施复杂性的考虑,只有RAID01和RAID10这两个组合等级得到了较为广泛的采纳。
RAID01,也被称为RAID 0+1或RAID 10,结合了RAID 0的高性能和RAID 1的数据冗余特性。它首先将数据条带化(RAID 0)以提高读取性能,然后再对这些条带化的数据进行镜像(RAID 1),确保数据的完整性和可恢复性。RAID01通常用于对性能和数据安全性都有高要求的应用场景。
RAID10,也被称为RAID 1+0或RAID 0+1,则是先对数据进行镜像(RAID 1),然后再将镜像后的数据条带化(RAID 0)。这种组合方式同样提供了高性能和数据冗余,但与RAID01略有不同,RAID10的写性能通常更好,因为两个镜像可以同时写入数据。RAID10也适用于需要高性能和数据安全性的场景。
尽管其他RAID组合等级在理论上也可能具有优势,但由于实现成本高昂、管理复杂度高以及应用场景相对有限,它们在实际应用中并不常见。因此,在选择RAID配置时,需要根据具体的应用需求、预算和可用资源来权衡各种因素,选择最适合的RAID等级或组合等级。
1.RAID00
简单地说, RAID00 是由多个成员 RAID0 组成的高级 RAID0 。它与 RAID0 的区别在于, RAID0 阵列替换了原先的成员磁盘。可以把 RAID00 理解为两层条带化结构的磁盘阵列,即对条带再进行条带化。这种阵列可以提供更大的存储容量、更高的 I/O 性能和更好的 I/O 负均衡。
2. RAID01 和 RAID10
一些文献把这两种 RAID 等级看作是等同的,本文认为是不同的。RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力,原理如图 9 所示。
RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。
图 9 典型的 RAID01 (上)和 RAID10 (下)模型
3.RAID100
通常看作 RAID 1 0 0 ,有时也称为 RAID 10 0 ,即条带化的 RAID10 。原理如图 10 所示。RAID100 的缺陷与 RAID10 相同,任意一个 RAID1 损坏一个磁盘不会发生数据丢失,但是剩下的磁盘存在单点故障的危险。最顶层的 RAID0 ,即条带化任务,通常由软件层来完成。
RAID100 突破了单个 RAID 控制器对物理磁盘数量的限制,可以获得更高的 I/O 负载均衡, I/O 压力分散到更多的磁盘上,进一步提高随机读性能,并有效降低热点盘故障风险。因此, RAID100 通常是大数据库的最佳选择。
图10 典型的 RAID100 模型
4.RAID30 ( RAID53 )、 RAID50 和 RAID60
这三种RAID等级与RAID00在原理上相似,其核心区别在于组成RAID00的成员“磁盘”被替换为了RAID3、RAID5和RAID6,分别如图11、12、13所示。其中,RAID30有时也被称作RAID53,这主要是为了便于标识和讨论。
实际上,我们可以将这些等级的RAID统称为RAID X0等级,其中X代表标准的RAID等级,如RAID3、RAID5、RAID6,甚至可以是组合等级,如RAID100。这种多层RAID配置方式结合了RAID X和RAID0的优势,通过嵌套RAID结构,在存储容量、数据安全性和I/O负载均衡等方面实现了显著的性能提升。
利用RAID X0等级,我们可以根据实际需求在数据冗余、性能和成本之间找到最佳平衡点。例如,对于需要高数据安全性但成本有限的场景,RAID50可能是一个理想的选择;而对于需要极高I/O性能和充足存储空间的场景,RAID100则可能更为合适。总之,RAID X0等级为存储系统的设计和优化提供了更多的选择和灵活性。
图11 典型的 RAID50 模型
图12 典型的 RAID50 模型
图13 典型的 RAID60 模型
4.4 非标准 RAID 等级
虽然标准RAID和组合RAID在技术上有所不同,但它们都遵循着一定的规范和标准,以确保兼容性和稳定性。然而,除了这些标准RAID等级外,一些存储厂商为了满足特定需求或提升产品竞争力,开发了非标准的RAID等级,这些往往都是公司私有的技术。
这些非标准RAID等级在设计和实现上可能与标准RAID有所不同,但它们都旨在提供更高的数据保护、性能或存储容量。由于这些技术属于公司私有,因此它们的具体实现和特性可能因厂商而异。
以下简单介绍几个非标准RAID等级:
1.RAID7
RAID7,全称最优化异步高I/O速率和高数据传输率存储系统,它不仅是一项技术革新,更是一个独立的存储计算机,内置了操作系统和管理工具,能够完全独立运行。
RAID7的存储计算机操作系统是一套基于实时事件驱动的先进系统,主要负责系统的初始化,安排RAID7磁盘阵列的数据传输,并精确地将数据传输到相应的物理存储驱动器上。通过其专用控制板,RAID7能够精准控制读写速度,使得主机的I/O传递性能达到最佳状态。即使在磁盘出现故障的情况下,RAID7也能自动执行恢复操作,并有效管理备份磁盘的重建过程。
RAID7突破了传统RAID标准的技术架构,采用了非同步访问方式,有效缓解了数据写入的瓶颈,显著提升了I/O速度。其内置的实时操作系统能够智能优化主机发送的读写指令,预先将可能被读取的数据读入快速缓存中,从而大幅减少了磁头的转动次数,进一步提高了存储系统的I/O速度。
RAID7为用户提供了一个高效的数据存储管理方案,能够有效应对日益增长的数据存储需求,并显著提升系统的运行效率。然而,由于RAID7的成本相对较高,并且该技术已被某公司注册为商标,目前市场上仅有一家公司提供RAID7产品,这限制了用户的选择范围。此外,技术的封闭性和缺乏主流专业存储厂商的参与和研发,也在一定程度上制约了RAID7的进一步发展和普及。
2.RAID-DP
按照 SNIA 最新的 RAID6 定义 [15] ,双重数据校验的磁盘阵列都可归为 RAID6 等级。NetApp 公司按照 RAID6 的定义实现了 RAID-DP ,使用双重的数据校验来保护数据,可以保证两块磁盘同时损坏的情况下不发生数据丢失。与该公司的 RAID4 实现对比,传统的 RAID6 实现会致使系统性能损失 30% 左右,而 RAID-DP 的性能下降低于 2% 。上层文件系统的请求首先写入后端的 NVRAM 中,确保即使在 掉电的情况下也不会有任何数据丢失。因此,数据块不会立即更新,当执行新来的写操作,会对写操作进行聚集,然后存储控制器尝试一次性写入包括校验数据在内的整个数据条带。RAID-DP 提供了比 RAID10 更好的数据保护,性能却不低于 RAID10 。对于相同大小的 RAID 组,在大多数情况下, RAID-DP 没有受到传统 RAID6 即时更新数据块的挑战,并提供更多的磁盘进行读写。它甚至允许磁盘固件实时更新而不发生任何中断。
3.RAID1.5
这是 HighPoint 公司的 RAID 产品,有时也被错误地称为 RAID15 。RAID1.5 仅使用两个磁盘驱动器同时进行数据条带化和镜像,数据可以同时从两块磁盘进行读取。这其中的大部分工作都由硬件来完成,而非驱动程序。Linux 、 Solaris 等操作系统实现的 RAID1 也可以实现同时从两块磁盘进行读取数据,因此 RAID1.5 并不优于传统的 RAID1。
4. RAID5E 、 RAID5EE 和 RAID6E
这种概念首次在 IBM ServerRAID 中被提出, E 是 Enhanced 的首字母。它们分别是对 RAID5 和 RAID6 的增强,增加了热冗余磁盘驱动器,冗余磁盘与其他磁盘一块进行数据块编排。这种设计使得 I/O 可以分散到包括热冗余在内的所在磁盘,从而减小单块磁盘的 I/O 带宽, 提供更高的性能。然而,热冗余磁盘不能够被多个阵列共享。
在实现中,实际上不存在专用的热冗余磁盘,就像 RAID5 和 RAID6 中没有专用的校验磁盘一样,所有的冗余数据块分布在所的成员磁盘中。例如,一个 10 块磁盘的 RAID5E ,包括 80% 数据块、 10% 的冗余数据块和 10% 的校验数据。对于 RAID5E 和 RAID6E ,冗余数据块位于阵列尾部,而 RAID5EE 则分布在整个 RAID 中。如果 RAID5E/5EE 中发生一块磁盘损坏,则系统会自动降级并重建至标准的 RAID5 。这一过程中, I/O 操作非常密集,并且需要花费大量时间,从几个小时至甚至几天,根据阵列的具体配置而异。当损坏磁盘被替换后,系统则又会自动升级并重建至原先的 RAID5E/5EE ,同时非常耗时。在上面的重建过程中,数据没有冗余保护。由于系统升级和降级时, I/O 活动密集且所需时间过长,因此实际应用中成员磁盘数据限制在 4~8 块。一旦超过 8 块磁盘,由于损坏磁盘的重建耗时和重建中发生第二块磁盘损坏造成的数据丢失, RAID5E/5EE 所获得的性能提升和其他获益都将严重降低。
5.RAID S (Parity RAID)
RAID S 是 EMC 公司的 Symmetrix 存储系统所使用的条带化校验 RAID 。该系统中,每个卷位于单独的物理磁盘上,多个卷组合进行数据校验。EMC 最早引入了 RAID S 概念,后来改名为 Parity RAID 并应用于 Symmetrix DMX 平台。EMC 现在也为 Symmetrix DMX 提供标准的 RAID5 , RAID S 已经不再 EMC 产品中使用。
6.Intel Matrix RAID
Matrix RAID 是 Intel ICH6R 和后继的南桥芯片的一个重要特征,可以通过 RAID BIOS 进行访问。它使用两块磁盘或者控制器能支持的最多磁盘,它的显著特征是允许 RAID0 、 1 、 5 、 10 多种数据卷混合共存,每块磁盘的指定部分分配给相应的 RAID 卷。Matrix RAID 主要用于改善性能和数据完整性,实际应用中可以将操作系统应用于小的 RAID0 ,而大的 RAID1 存储关键数据以及用户数据。海量的流媒体数据容易发生数据丢失,可以考虑使用这种 RAID 。linux 的 MD RAID 也可以实现类似的功能。
7.Linux MD RAID 10
RAID 10 是 Linux 内核所支持的软 RAID 等级之一,它还支持 RAID0、1、3、4、5、6 等级别。软 RAID 驱动程序通常通过构造典型的 RAID1 0 阵开来实现 RAID10 , 2.6.9 以后的内核也可作为单独的级别来实现。
MD RAID10 支持重复数据块的近布局和远布局两种模式。近布局与标准 RAID10 相同,镜像数据块相邻存储。对于 n 重镜像的 k 路条带,不要求 k 为 n 的 整倍数。两重镜像的2、3、4路条带的 MD RAID10 分布相当于 RAID1 、 RAID-1E 和 RAID10 。远布局模式下,所有磁盘被划分为 f ( f= 镜像数)个数据存储区,重复数据块相对于原始数据块具有一个磁盘和若干依偏移的距离,即保存在下一个磁盘对应存储区的偏移位置。这种设计能够提高镜像阵列的条带性能,有效提高顺序和随机读性能,但对写性能没有显著提升。许多应该通常具有读密集而写稀疏的特点, RAID10 适合此类数据应用。需要指出的是,近布局和远布局两种模式可以同时使用,这种情况下将有 n * f 个数据副本。
8. IBM ServerRAID 1E
IBM 公司的 ServerRAID 阵列卡系列支持任意数量驱动器上的两路镜像,多个磁盘对数据块进行轮转镜像。这种配置能够对不相邻磁盘驱动器发生的损坏进行容错,其他的存储系统也支持这种模式,比如 SUN 公司的 StorEdge T3 。
9.RAID-K
Kaleidescape 公司实现了一种称为 RAID-K[16] 的 RAID 类型。RAID-K 与 RAID4 相似,但不对文件数据进行块级的条带化处理,它企图将整个电影或音乐集合完整地存储在单个磁盘上。另外,它的冗余校验信息可存储在多个磁盘上,从而适应由多个容量不同的磁盘所组成的逻辑磁盘。而且,冗余数据包含比校验信息更多的数据,用于获取更高的容错性。这些特征可以为影像、音乐提供更好的性能,增加数据存储的安全性。RAID-K 还可以允许用户以增量方式扩充存储容量,能够增加容量更大的磁盘,甚至它还可以增加包含数据(仅限影像和音乐)的磁盘。RAID-K 会自动把这些磁盘组建成 RAID-K 阵列和 Kaleidescape 文件系统。
10. RAID-Z
RAID-Z是SUN公司ZFS文件系统中的一个特色RAID模式,它与传统的RAID5有着相似的概念,但在实现上却有所不同。RAID-Z通过采用写时复制(Copy-on-Write)策略,巧妙地避免了RAID5在写操作时面临的困境,即需要同时更新数据和校验数据的问题。在RAID-Z中,当数据需要更新时,新数据不会直接覆盖旧数据,而是被写入到新的位置,并自动更新数据指针,从而实现了数据的高效更新。
对于小规模的写操作,RAID-Z仅执行完整的写条带操作,这不仅简化了操作过程,还避免了传统“读取-更改-写回”的复杂流程,从而提高了写操作的效率。此外,由于ZFS文件系统对底层存储结构有深入的了解,它还可以直接对小写操作使用镜像替换校验的方式进行保护,当需要时,文件系统可以分配额外的存储空间来确保数据的完整性和安全性。
除了RAID-Z,ZFS还进一步扩展了RAID技术,实现了RAID-Z2。RAID-Z2提供了类似于RAID6的双重校验保护能力,即使有两块磁盘发生故障,也能确保数据的完整性和可恢复性。这种双重校验保护机制极大地增强了ZFS文件系统的容错能力和数据安全性。
随着技术的不断发展,ZFS在2009年6月的更新中加入了三重校验RAID支持,即RAID-Z3。RAID-Z3进一步提升了ZFS的容错能力,使其能够在更多磁盘发生故障时依然保持数据的完整性和可恢复性。这一技术的引入,无疑为ZFS文件系统在数据安全性方面提供了更为坚实的保障。
五、实现方式
通常计算机功能既可以由硬件来实现,也可以由软件来实现。对于 RAID 系统而言,自然也不例外,它可以采用软件方式实现,也可以采用硬件方式实现,或者采用软硬结合的方式实现。
5.1 软 RAID
软RAID是一种无需专用硬件控制芯片和I/O芯片的RAID实现方式,其全部功能完全依赖于操作系统和CPU的软件处理。现代操作系统,如Windows Server、Linux、Mac OS X Server、FreeBSD、NetBSD、OpenBSD以及Solaris等,均内置了对软RAID的支持。这些系统通过在磁盘设备驱动程序之上添加一个软件层,为用户提供了一个物理驱动器与逻辑驱动器之间的抽象界面。
这些操作系统支持的软RAID等级多种多样,常见的包括RAID0、RAID1、RAID10、RAID01和RAID5等。然而,由于软RAID完全依赖CPU来执行所有RAID任务,如计算校验值等,这导致了其执行效率相对较低,并且会消耗大量的运算资源。因此,尽管配置管理和数据恢复相对简单,但软RAID在支持RAID模式上较为有限,难以在需要高性能和高可靠性的环境中广泛应用。
值得注意的是,由于软RAID完全由操作系统实现,系统所在分区通常不能作为RAID的逻辑成员磁盘。此外,部分操作系统的RAID配置信息保存在系统信息中,而非单独以文件形式存储在磁盘上。这意味着在系统崩溃或需要重新安装时,RAID配置信息可能会丢失。
此外,尽管磁盘的容错技术可以提高系统的可靠性,但并非所有软RAID实现都支持在线更换、热插拔或热交换。这些功能的支持与否取决于操作系统的具体实现,因此在使用软RAID时,用户需要仔细了解并评估其所在操作系统的相关功能。
5.2 硬 RAID
硬 RAID 拥有自己的 RAID 控制处理与 I/O 处理芯片,甚至还有阵列缓冲,对 CPU 的占用率和整体性能是三类实现中最优的,但实现成本也最高的。硬 RAID 通常都支持热交换技术,在系统运行下更换故障磁盘。
硬 RAID 包含 RAID 卡和主板上集成的 RAID 芯片, 服务器平台多采用 RAID 卡。RAID 卡由 RAID 核心处理芯片( RAID 卡上的 CPU )、端口、缓存和电池 4 部分组成。其中,端口是指 RAID 卡支持的磁盘接口类型,如 IDE/ATA 、 SCSI 、 SATA 、 SAS 、 FC 等接口。
5.3 软硬混合 RAID
软 RAID 性能欠佳,而且不能保护系统分区,因此很难应用于桌面系统。而硬 RAID 成本非常昂贵,不同 RAID 相互独立,不具互操作性。因此,人们采取软件与硬件结合的方式来实现 RAID ,从而获得在性能和成本上的一个折中,即较高的性价比。
这种 RAID 虽然采用了处理控制芯片,但是为了节省成本,芯片往往比较廉价且处理能力较弱, RAID 的任务处理大部分还是通过固件驱动程序由 CPU 来完成。
六、RAID 等级选择
RAID 等级的选择主要有三个因素,即数据可用性、 I/O 性能和成本。 目前,在实际应用中常见的主流 RAID 等级是 RAID0 , RAID1 , RAID3 , RAID5 , RAID6 和 RAID10 ,它们之间的技术对比情况如表 1 所示。如果不要求可用性,选择 RAID0 以获得高性能。如果可用性和性能是重要的,而成本不是一个主要因素,则根据磁盘数量选择 RAID1 。如果可用性,成本和性能都同样重要,则根据一般的数据传输和磁盘数量选择 RAID3 或 RAID5 。在实际应用中,应当根据用户的数据应用特点和具体情况,综合考虑可用性、性能和成本来选择合适的 RAID 等级。
表1 主流 RAID 等级技术对比
近年来,随着企业信息化水平的持续提升,数据已经跃升为信息计算的核心,其安全性自然成为了重中之重。在这一背景下,RAID技术凭借其在成本、性能、数据安全性等多方面的优势,逐渐超越了磁带库、光盘库等传统存储技术,成为大多数企业数据中心的首选存储解决方案。当前,存储行业的知名厂商如EMC、IBM、HP、SUN、NetApp、NEC、HDS、H3C、Infortrend和华赛等,均提供了一系列全面的磁盘阵列产品,覆盖了从入门级低端RAID产品到面向大中型企业的中高端RAID产品。
这些存储厂商不仅提供硬件解决方案,还常常附带完善的软件系统,这也是用户选择产品时的重要考量因素。然而,不同厂商的产品在技术、成本、性能、管理、服务等方面各有千秋,用户在选择RAID解决方案时需要综合考量。
在选择RAID时,用户应首先明确自身的存储需求,包括容量、性能等关键指标,并据此设定合理的成本预算。随后,用户需对各厂商的解决方案进行深入分析和对比,综合考虑技术、成本、管理、服务等多方面因素,最终选择出最适合自身需求的综合最优存储方案。
特别值得注意的是,存储产品的扩展性和存储厂商的售后服务是选择过程中的重要考量点。由于存储需求可能会随着时间的推移而不断升级,产品的扩展性将直接影响未来的存储能力。同时,存储产品一旦出现故障,及时的维修和支持保障将至关重要,因此存储厂商的售后服务也是不容忽视的一环。只有做到未雨绸缪,才能确保存储系统的稳定运行和数据安全。
七、演进与未来
回顾RAID的发展历史,自其概念首次提出至今已跨越近三十年的时光。在这段期间,随着社会的信息化水平迅猛提升,数据呈现出了爆炸式的增长态势,数据已逐渐取代计算成为信息计算的核心。这种变化使得人们对数据的重视程度日益加深,不断追求着海量存储容量、高性能、高安全性、高可用性、可扩展性和可管理性等存储特性。在这样的背景下,RAID技术得到了极大的推动和发展,如今已经非常成熟,并在各种数据存储系统中发挥着至关重要的作用。
尽管RAID技术已经取得了显著的进步,但关于其未来发展的观点却不尽相同。一些人认为,随着技术的成熟,RAID技术可能会逐渐放缓其发展的步伐,甚至被冠以“僵尸技术”的称号,暗示其虽已宣布“死亡”,但在一段时间内仍将继续保持其价值。
然而,我们必须看到,当前的RAID技术仍存在着诸多不足。各种RAID模式都有其自身的局限性,特别是在读写性能、实现成本、恢复时间窗口以及多磁盘损坏等方面。这意味着RAID技术仍有巨大的提升空间和发展潜力。近年来,新出现的RAID模式以及相关的学术研究都为我们揭示了其未来的发展趋势,包括分布式校验、多重校验、混合RAID模式、水平和垂直条带、基于固态内存的RAID以及网络校验等。
特别是随着多核CPU和GPU等热点技术的崛起,主机的可用计算资源得到了极大的提升。这为解决RAID对计算资源的消耗问题提供了新的可能,使得软RAID有可能重新成为技术发展的热点。此外,存储硬件性能的提升、存储虚拟化技术、重复数据删除技术以及其他存储技术的不断进步,都将为RAID技术的进一步创新和发展提供强大的推动力。
因此,我们有理由相信,RAID技术将继续在数据存储领域发挥重要作用,并随着技术的不断进步而持续发展。