RAID(独立硬盘冗余阵列)
RAID是什么?
RAID (redundant array of independent disks, redundant array of independent disks)是将相同的数据存储在多个硬盘或ssd (solid-state drives, ssd)上的不同位置,在硬盘故障时保护数据的一种方式。但是,存在不同的RAID级别,并不是所有级别都有提供冗余的目标。
RAID是如何工作的
RAID的工作原理是将数据放置在多个磁盘上,并允许输入/输出(I/O)操作以均衡的方式重叠,从而提高性能。因为使用多个磁盘会增加平均故障间隔时间,冗余存储数据也增加了容错能力。
RAID对操作系统来说就像一个逻辑驱动器。
RAID采用硬盘镜像或硬盘条带化技术。镜像将相同的数据复制到多个驱动器上。分段分区帮助在多个磁盘驱动器上传播数据。每个驱动器的存储空间被划分为多个单元,从部门从512字节到几兆字节。所有磁盘的条纹是交错的,并按顺序编址。硬盘镜像和硬盘条带化也可以在RAID中组合使用。
在存储大记录的单用户系统中,条带通常设置为较小的(例如512字节),以便单个记录跨越所有磁盘,并且可以通过同时读取所有磁盘来快速访问。
在多用户系统中,更好的性能需要足够宽的条带来容纳典型或最大大小的记录,从而支持跨驱动器的重叠磁盘I/O。
RAID控制器
一个RAID控制器用于管理存储阵列中的硬盘驱动器的设备。它可以用作操作系统和物理磁盘之间的抽象级别,将磁盘组表示为逻辑单元。使用RAID控制器可以提高性能,并有助于在崩溃时保护数据。
RAID控制器分为硬件和软件两种。在一个基于硬件的突袭产品,一个物理控制器管理整个阵列。该控制器还可以设计为支持串行高级技术附件和小型计算机系统接口等驱动器格式。物理RAID控制器也可以内置在服务器的主板上。
与软件RAID时,控制器使用硬件系统的资源,如中央处理器和内存。虽然它的功能与基于硬件的RAID控制器相同,但基于软件的RAID控制器可能无法实现那么多的性能提升,并可能影响服务器上其他应用程序的性能。
如果基于软件的RAID实现与系统的启动过程不兼容,并且基于硬件的RAID控制器成本太高,固件,或基于驱动程序的RAID,是一种可能的选择。
基于固件的RAID控制器芯片位于主板上,所有操作都由CPU (central processing unit)完成,类似于基于软件的RAID。然而,使用固件,RAID系统只在启动过程的开始阶段实现。一旦操作系统加载,控制器驱动接管RAID功能。固件RAID控制器不像硬件那样昂贵,但它对计算机的CPU造成了更大的压力。基于固件的RAID又称为硬件辅助软件RAID、混合模型RAID和假RAID。
RAID级别
RAID设备使用不同的版本,称为级别。创造了这个术语并开发了RAID设置概念的原始论文定义了6个级别的RAID——0到5。这种编号系统使IT部门能够区分RAID版本。级别的数量已经扩展,并分为三类:标准、嵌套和非标准RAID级别。
标准RAID级别
RAID 0.这个配置有条带但没有数据冗余。它提供了最佳性能,但不提供容错性。
RAID 1.也被称为磁盘镜像,该配置包含至少两个驱动器,复制数据存储。没有条纹。读取性能得到了提高,因为可以同时读取任何一个磁盘。写性能与单磁盘存储相同。
突袭2.该配置使用跨磁盘的条带,其中一些磁盘存储错误检查和纠正(ECC)信息。RAID 2也使用专用的汉明码奇偶校验,ECC的一种线性形式。RAID 2没有RAID 3的优势,已经不再使用。
RAID 3.这种技术使用条带,并专门使用一个驱动器进行存储奇偶校验信息。利用嵌入的ECC信息进行错误检测。数据恢复是通过计算记录在其他驱动器上的独占信息来完成的。因为一个I/O操作同时处理所有的驱动器,RAID 3不能重叠I/O。由于这个原因,RAID 3最适合具有长记录应用程序的单用户系统。
RAID 4.这个级别使用大条带,这意味着用户可以从任何单个驱动器读取记录。重叠I/O可以用于读操作。因为所有写操作都需要更新奇偶驱动器,所以不可能有I/O重叠。
RAID 5.这个级别基于校验块级别的条带。奇偶校验信息在每个驱动器上条带化,使阵列能够工作,即使一个驱动器出现故障。阵列的架构使读写操作能够跨越多个驱动器。这使得性能优于单个驱动器,但不如RAID 0阵列。RAID 5至少需要3块硬盘,但出于性能考虑,通常建议至少配置5块硬盘。
RAID 5阵列通常被认为是用于写密集型系统的糟糕选择,因为写奇偶校验数据会影响性能。当硬盘故障时,重建RAID 5需要较长时间。
RAID 6.这种技术类似于RAID 5,但它包括分布在阵列中各个驱动器上的第二个奇偶校验方案。使用额外的奇偶校验使阵列能够继续工作,即使两个磁盘同时故障。然而,这种额外的保护是有代价的。RAID 6的写性能通常比RAID 5慢。
嵌套的RAID级别
一些基于RAID级别组合的RAID级别被称为嵌套的突袭。下面是一些嵌套RAID级别的示例。
RAID 10(RAID 1 + 0)。RAID 10是RAID 1和RAID 0的组合,通常称为RAID 10。RAID 10比RAID 1性能更好,但成本更高。在RAID 1+0中,数据是镜像的,镜像是分条的。
RAID 01(RAID 0 + 1)。RAID 0+1与RAID 1+0类似,只是数据组织方式略有不同。RAID 0+1不是先创建镜像再分条,而是先创建分条集,再对分条集进行镜像。
RAID 03 (RAID 0+3,也称为RAID 53或RAID 5+3)。这个级别在RAID 0风格中使用条带化用于RAID 3的虚拟磁盘块。这提供了比RAID 3更高的性能,但成本更高。
RAID 50(RAID 5 + 0)。该配置将RAID 5的分布式奇偶校验和RAID 0的条带化结合起来,在不降低数据保护的情况下提高RAID 5的性能。
非标准RAID级别
非标准RAID级别与标准RAID级别不同,通常由公司或组织开发,主要用于私有用途。这里有一些例子。
RAID 7.基于RAID 3和RAID 4的非标准RAID级别,增加了缓存功能。它包括一个实时嵌入式操作系统作为控制器,通过高速缓存公共汽车以及独立电脑的其他特性。
自适应的袭击。该级别可使RAID控制器决定如何在磁盘上存储奇偶校验。它将在RAID 3和RAID 5之间进行选择。选择取决于哪种RAID集类型在写入到磁盘的数据类型下性能更好。
Linux MD RAID 10。此层次,由Linux内核,支持创建嵌套和非标准RAID阵列。Linux软件RAID还可以支持创建标准的RAID 0、RAID 1、RAID 4、RAID 5和RAID 6配置。
硬件RAID和软件RAID
与RAID控制器一样,RAID通过硬件或软件实现。基于硬件的RAID支持不同的RAID配置,特别适合RAID 5和RAID 6。硬件RAID 1的配置有利于支持引导和应用程序驱动进程,而硬件RAID 5适合于大型存储阵列。硬件RAID 5和6都非常适合性能。
硬件RAID需要在服务器上安装专用控制器。硬件中的RAID控制器是在操作系统启动前后通过卡基本I/O系统或Option ROM(只读存储器)配置的。RAID控制器制造商通常也为其支持的操作系统提供专有的软件工具。
许多现代操作系统都提供了基于软件的RAID。它可以通过多种方式实现,包括:
- 作为文件系统的一个组件;
- 作为将设备抽象为单个虚拟设备的一层;和
- 作为位于任何文件系统之上的一层。
这种RAID方法使用系统的一些计算能力来管理基于软件的RAID配置。例如Windows支持软件RAID 0、1、5,苹果macOS支持软件RAID 0、1、1+0。
RAID的好处
RAID的优点包括:
- 由于大量使用低价磁盘,提高了成本效益。
- 使用多块硬盘时,RAID可以提高单块硬盘的性能。
- 在崩溃后提高计算机速度和可靠性,这取决于配置。
- 读取和写入的速度比使用RAID 0的单个驱动器更快。这是因为文件系统被分割并分布在一起工作在同一个文件上的驱动器上。
- RAID 5提高了可用性和弹性。使用镜像,两个驱动器可以包含相同的数据,确保在另一个驱动器出现故障时,其中一个驱动器可以继续工作。
使用RAID的缺点
然而,RAID确实有其局限性。其中包括:
- 嵌套RAID级别的实现成本比传统RAID级别更高,因为它们需要更多的磁盘。
- 对于嵌套RAID,存储设备每千兆字节的成本更高,因为许多驱动器用于冗余。
- 当一个驱动器出现故障时,阵列中另一个驱动器很快也会出现故障,这可能会导致数据丢失。这是因为RAID中的所有硬盘都是同时安装的,所以所有硬盘的磨损程度是相同的。
- 一些RAID级别——如RAID 1和RAID 5——只能维持单个驱动器故障。
- 在更换故障硬盘并在新硬盘上填充数据之前,RAID及其中的数据是脆弱的。
- 因为现在硬盘的容量比第一次实现RAID时大得多,所以重建失败的硬盘需要更长的时间。
- 如果发生磁盘故障,则剩余的磁盘可能包含坏扇区或不可读的数据,这可能导致不可能完全重建阵列。
但是,嵌套RAID级别通过提供更大程度的冗余来解决这些问题,显著降低了由于同时磁盘故障而导致阵列级故障的机会。
什么时候应该使用RAID?
有一个RAID设置是有用的实例包括:
- 当需要恢复的数据量较大时。如果一个驱动器发生故障,数据丢失,这些数据可以快速恢复,因为这些数据也存储在其他驱动器中。
- 当运行时间和可用性是重要的业务因素时。如果需要恢复数据,可以快速完成,无需停机。
- 当处理大文件时。在处理大文件时,RAID提供了速度和可靠性。
- 当组织需要减少物理硬件的压力并提高整体性能时。例如,硬件RAID卡可以包含额外的内存用作缓存。
- 当有I/O磁盘问题时。RAID将通过从多个驱动器读取和写入数据提供额外的吞吐量,而不需要等待一个驱动器执行任务。
- 当成本是一个因素时。RAID阵列的成本比过去低,而且价格较低的磁盘被大量使用,因此成本更低。
RAID的历史
这个词突袭这个词是由大卫·帕特森、兰迪·卡茨和加斯·a·吉布森在1987年创造的。在他们1988年的技术报告《廉价磁盘冗余阵列(RAID)的案例》中,三人认为廉价磁盘阵列的性能可能超过当时最昂贵的磁盘驱动器。通过使用冗余,RAID阵列可以比任何一个磁盘驱动器更可靠。
虽然这份报告是第一个为这个概念命名的报告,但其他报告已经讨论了使用冗余磁盘的问题。Geac计算机公司的格斯·德曼和特德·格鲁诺首先将这种想法称为MF-100。IBM的Norman Ken Ouchi在1977年为这项技术申请了专利,该技术后来被命名为RAID 4。1983年,数字设备公司(Digital Equipment Corp.)推出了raid1, 1986年,IBM为raid1申请了另一项专利。帕特森、卡茨和吉布森还研究了天腾计算机(Tandem Computers)、思维机器(Thinking Machines)和Maxstor等公司在定义RAID时所做的工作分类法.
虽然在1988年的报告中列出的RAID级别基本上是对已经在使用的技术进行命名,但为这个概念创建通用术语有助于刺激数据存储市场开发更多的RAID阵列产品。
根据Katz的说法便宜的在首字母缩写中很快就被独立的由于低成本的影响,由行业供应商。
RAID的未来
RAID还没有完全消亡,但许多分析人士说,近年来该技术已经过时。选择等擦除编码提供更好的数据保护(尽管价格更高),并且是为了解决RAID的弱点而开发的。随着驱动器容量的增加,RAID阵列发生错误的机会也在增加,容量也在不断增加。
ssd的兴起也被视为缓解了对RAID的需求。ssd没有移动部件,不像硬盘驱动器那样经常发生故障。SSD阵列经常使用诸如穿平而不是依赖RAID进行数据保护。现代ssd足够快,现代服务器可能不需要RAID提供的性能提升。然而,它们目前仍可用于防止数据丢失。
通过使用冗余服务器而不是冗余驱动器,超大规模计算还消除了对RAID的需要。
尽管如此,RAID仍然是数据存储的一个根深蒂固的组成部分,主要技术供应商继续发布RAID产品。例如:
- IBM通过其Spectrum Virtualize V8.3提供了IBM分布式RAID,或称DRAID,它承诺提高RAID性能。
- 最新版本的Intel Rapid Storage Technology支持RAID 0、RAID 1、RAID 5和RAID 10。
- NetApp OnTap管理软件使用RAID- dp,或双奇偶校验,或RAID 4来保护最多三个驱动器同时故障。
- Dell EMC Unity平台支持RAID 5、RAID 6和RAID 10。