问slashdot:是一个比硬件突袭更好的软件吗?

2021-04-05 07:18:42

跳转到导航跳转以搜索RAID(/ rEɪd/;"廉价磁盘的冗余阵列" [1]或"独立磁盘的冗余阵列" [2])是一个数据存储虚拟化技术将多个物理磁盘驱动器组件组合成一个或多个逻辑单元,以用于数据冗余,性能改进或两者。这与前一个可靠的主机磁盘驱动器的先前概念相反,称为"单个大昂贵的盘" (雪橇)。 [3] [1]

根据所需的冗余和性能等级,数据以几种方式之一分布在驱动器上的数据分布在驱动器上。不同的方案或数据分发布局由单词&#34命名; RAID"后跟一个数字,例如RAID 0或RAID 1.每个方案或RAID级别,在关键目标之间提供不同的平衡:可靠性,可用性,性能和容量。 RAID级别大于RAID 0提供防止不可恢复的扇区读取错误的保护,以及全部物理驱动器的故障。

术语" raid"是由大卫·帕特森,Garth A. Gibson,1987年伯克利加州大学的Randy Katz发明了。1988年6月纸"一种廉价圆盘冗余阵列(RAID)"提出的案例在Sigmod会议上,他们认为,当时的一系列廉价驱动器的数组可以击败时间的最佳大型机磁盘驱动器。虽然通过配置冗余的驱动器数量的故障将成比例地,但是阵列的可靠性远远超过任何大型单个驱动器的可靠性。 [4]

虽然尚未使用该术语,但在1988年6月份的五个突袭纸上的技术在纸张之前使用了各种产品,并在纸张上使用了各种产品,[3]包括以下内容:

镜像(RAID 1)在20世纪70年代建立了很好的成立,包括例如串联不间断系统。

1977年,Norman Ken Ouchi在IBM提出了一项专利,披露了随后命名的RAID 4. [5]

1983年左右,DEC开始运输子系统镜像RA8X磁盘驱动器(现在称为RAID 1)作为其HSC50子系统的一部分。 [6]

1986年,Clark等人。在IBM提出了一项专利,披露了随后命名为RAID 5的专利。[7]

大约1988年,思维机器' DataVault在磁盘驱动器数组中使用纠错码(现在称为RAID 2)。 [8]在IBM 353上的20世纪60年代初使用类似的方法。[9] [9]

行业制造商后来重新定义了RAID首字母型以代表"独立磁盘的冗余阵列; [2] [11] [12] [13]

许多RAID级别使用称为&#34的错误保护方案;奇偶校验",在信息技术中广泛使用的方法在给定的一组数据中提供容错容限。大多数使用简单的XOR,但RAID 6分别使用两个单独的阶段基于特定Galois字段或簧片误差校正中的特定Galois字段中的添加和乘法。 [14]

RAID还可以通过固态驱动器(SSD)提供数据安全性,而无需牺牲All-SSD系统。例如,可以使用机械驱动器镜像快速SSD。为了提供显着的速度优势,需要适当的控制器,其使用FAST SSD用于所有读取操作。 Adaptec调用这个"混合raid&#34 ;. [15]

最初,有五个标准的RAID级别,但许多变化已经发展出来了,包括几个嵌套水平和许多非标准级别(大多数是专有的)。 RAID级别及其关联的数据格式由常见的RAID磁盘驱动器格式(DDF)标准中的存储网络行业协会(SNIA)标准化:[16] [17]

RAID 0包括条带,但没有镜像或平价。与跨跨度的体积相比,RAID 0体积的容量是相同的;它是集合中驱动器的容量之总数。但是因为条带在集合中的所有驱动器中分配了每个文件的内容,所以任何驱动器的故障都会导致整个RAID 0卷和所有文件丢失。相比之下,跨跨度的卷保留了不制定的驱动器上的文件。 RAID 0的好处是,读取和写入操作对任何文件的吞吐量乘以驱动器的数量,因为与跨跨度的卷,读取和写入不同。 [11]成本增加了驱动失败的漏洞 - 由于RAID 0安装失败的任何驱动器都会导致整个卷丢失,因此卷的平均故障率随附的连接驱动器的数量增加。

RAID 1由数据镜像组成,无奇偶校验或条带。数据与两个或多个驱动器相同,从而产生A"镜像集"驱动器。因此,可以通过集合中的任何驱动器进行任何读取请求。如果请求被广播到集合中的每个驱动器,则可以由首先访问数据的驱动器进行服务(取决于其搜索时间和旋转延迟),提高性能。持续读取吞吐量,如果控制器或软件针对它进行了优化,则接近集合中每个驱动器的吞吐量的总和,就像RAID 0一样。大多数RAID 1实现的实际读取吞吐量比最快的驱动器慢。写入吞吐量始终慢,因为必须更新每个驱动器,并且最慢的驱动器限制了写性能。只要至少一个驱动器运行,阵列继续运行。 [11]

RAID 2由具有专用汉明代码奇偶校验的位级条带组成。所有磁盘主轴旋转都是同步的,并且数据条纹,使得每个顺序位在不同的驱动器上。汉明码奇偶校验是在相应的比特中计算的,并存储在至少一个奇偶校验驱动器上。 [11]这个水平仅为历史意义;虽然它用于一些早期机器(例如,思维机CM-2),[18]截至2014年,但任何商业上可用的系统都不用于。 [19]

RAID 3由具有专用奇偶校验的字节级条带。所有磁盘主轴旋转都是同步的,数据条带化,使得每个顺序字节在不同的驱动器上。奇偶校验在相应的字节上计算并存储在专用奇偶校验驱动器上。虽然存在于实现,但在实践中不常用3。

RAID 4由具有专用奇偶校验的块级条带组成。此级别以前由NetApp使用,但现在已经大大替换为RAID 4的专有实施,其中两个奇偶圆盘称为RAID-DP。 [21] RAID 4在RAID 2和3上的主要优点是I / OParallation:在RAID 2和3中,单个读取I / O操作需要读取整组数据驱动器,而在RAID 4 ONE I / O中读取操作不必在所有数据驱动器上传播。结果,可以并行执行更多I / O操作,从而提高小传输的性能。 [1]

RAID 5由具有分布式奇偶校验的块级条带组成。与RAID 4不同,奇偶校验信息分布在驱动器中,要求所有驱动器,但是一个要显示的驱动器。在故障失败时,可以从分布式奇偶校验计算后续读取,使得没有数据丢失。 RAID 5至少需要三个磁盘。 [11]与所有单次奇偶校验概念一样,大型RAID 5实现易受系统故障的影响,因为有关阵列重建时间和重建期间驱动失败的可能性(参见"增加重建时间和失败概率"部分, 以下)。 [22]重建数组需要从所有磁盘读取所有数据,打开第二个驱动器故障的机会和整个阵列的丢失。

RAID 6由具有双分布式奇偶校验的块级条带组成。双奇偶校验可提供最多两个故障驱动器的容错。这使得更大的RAID组更实用,特别是对于高可用性系统,随着大容量驱动器需要更长时间才能恢复。 RAID 6至少需要四个磁盘。与RAID 5一样,单个驱动器故障导致整个阵列的性能降低,直到已更换故障驱动器。 [11]通过RAID 6阵列,使用来自多个来源和制造商的驱动器,可以减轻与RAID 5相关的大多数问题。驱动容量越大,阵列尺寸越大,选择变得越重要。 RAID 6而不是RAID 5. [23] RAID 10也最大限度地减少了这些问题。 [24]

在最初称为混合RAID的情况下,许多存储控制器允许嵌套RAID级别。 RAID的元素可以是单独的驱动器或阵列本身。阵列很少嵌套多个级别。 [26]

最终数组称为顶部阵列。当顶部数组是RAID 0时(例如RAID 1 + 0和RAID 5 + 0),大多数供应商都省略了" +" (分别产生RAID 10和RAID 50)。

RAID 0 + 1:创建两个条纹并镜像它们。如果发生单个驱动器故障,则其中一个镜像故障发生故障,此时它将有效地运行,因为RAID 0没有冗余。在重建期间引入的风险显着较高,因为剩余条纹中所有驱动器的所有数据都必须读取而不是一个驱动器,而不是从一个驱动器读取,增加了不可恢复的读取错误(Ure)的可能性和显着延伸重建窗口。 [27] [28] [29]

RAID 1 + 0 :(参见:RAID 10)从一系列镜像驱动器创建条纹集。阵列可以维持多个驱动器损耗,只要没有镜子丢失所有驱动器即可。 [30]

JBOD RAID N + N:使用JBOD(只是一堆磁盘),可以连接磁盘,但也可以卷等卷。具有较大的驱动容量,写入延迟和重建时间随着RAID 5和RAID 6的,特别是如上所述,特别是如上所述。通过将较大的RAID n拆分成较小的子集并使用线性JBOD连接它们,[所需澄清]写入和重建时间将减少。如果硬件RAID控制器不能使用RAID N嵌套线性JBOD,则可以使用OS-Level软件RAID与在一个或多个硬件RAID控制器内创建的单独的RAID N子集卷组合使用OS-Level软件RAID来实现线性JBOD。除了激烈的速度增加,这还提供了大量优势:可以使用一小组磁盘开始线性JBOD并能够扩展与不同尺寸的圆盘的总集合,稍后(及时,更大的磁盘尺寸可在市场上获得)。灾难恢复的形式存在另一个优点(如果RAID N子集发生故障,则另一个RAID N子集上的数据不会丢失,减少恢复时间)。 [所需的引用]

除了基本编号的RAID级别之外的许多配置是可能的,并且许多公司,组织和组都创建了自己的非标准配置,在许多案例中旨在满足小型利基组的专业需求。此类配置包括以下内容:

Linux MD RAID 10提供了一般的RAID驱动程序,它在其&#34中;近乎"布局默认为带有两个驱动器的标准RAID 1,标准RAID 1 + 0,具有四个驱动器;但是,它可以包括任何数量的驱动器,包括奇数。与它的" far"布局,MD RAID 10可以运行条纹和镜像,即使仅在F2布局中只有两个驱动器;这运行了镜像,带有条纹读取,提供RAID 0的读取性能0,如Linux软件RAID所提供的RAID 1,没有条纹读取,但可以并行执行读取。 [30] [31] [32]

Hadoop有一个RAID系统,通过在单个HDFS文件中XOR-IN-IN-ING块提供奇偶校验文件。 [33]

Beegfs,并行文件系统具有内部条带化(可与基于文件的RAID0)和复制(可与基于文件的RAID10)选项相匹配,以聚合多个服务器的吞吐量和容量,并且通常基于底层raid以制作磁盘的顶部失败透明。

在存储子系统中,横跨所有磁盘(可能数百个)的数据分配到Dual(或更多)的数据副本,同时阻止允许几个磁盘失败的备用容量。散射基于算法,​​其出现随意。当一个或多个磁盘失败时,丢失的副本重建为该备用容量,再次任意。由于重建是从所有剩余磁盘完成的,它比传统RAID运行得比快得多,从而减少对存储系统客户端的整体影响。

跨多个驱动器的数据分布可以通过专用的计算机硬件或软件来管理。软件解决方案可以是操作系统的一部分,包括标准驱动器控制器(所谓的"硬件辅助软件RAID")提供的固件和驱动程序的一部分,或者它可能完全在硬件RAID内居住控制器。

在启动操作系统之前,可以通过卡BIOS或Option ROM配置硬件RAID控制器,并且在启动操作系统之后,每个Controller的制造商提供专有配置实用程序.UNLIKE用于以太网的网络接口控制器,通常可以完全通过unix中的常见操作系统范例来配置和服务,无需任何第三方工具,每个RAID控制器的每个制造商通常都为他们认为支持的每个操作系统提供自己的专有软件工具,确保供应商锁定,并为可靠性问题贡献。 [34]

例如,在FreeBSD中,为了访问Adaptec RAID控制器的配置,用户需要启用Linux兼容性层,并使用Adaptec的Linux工具,[35]潜在地影响其设置的稳定性,可靠性和安全性,尤其是它们的设置在长期观点时。 [34]

其他一些操作系统已经实现了他们自己的通用框架,用于与任何RAID控制器接口,并提供用于监控RAID卷状态的工具,并通过LED闪烁,报警管理和热备盘指定不提供无需操作系统必须重新启动卡BIOS。例如,这是2005年OpenBSD与其生物(4)伪装置和BIOCTL实用程序采取的方法,提供体积状态,并允许LED /报警/热弹性控制以及传感器(包括驱动传感器) )用于健康监测; [36]随后在2007年通过NetBSD采用和延长了这种方法。 [37]

许多现代操作系统提供软件RAID实现。软件RAID可以实现:

摘要多个设备的层,从而提供单个虚拟设备(例如Linux内核' S MD和OpenBSD' SOFTRAID)

更通用的逻辑卷管理器(提供大多数服务器类操作系统,如Veritas或LVM)

一个位于任何文件系统上方的层,并为用户数据提供奇偶校验保护(例如RAID-F)[38]

某些高级文件系统旨在直接组织多个存储设备跨多个存储设备,而无需帮助第三方逻辑卷管理器:

ZFS支持RAID 0的等同物,RAID 1,RAID 5(RAID-Z1)单奇偶校验,RAID 6(RAID-Z2)双奇偶校验,以及三奇偶校验版本(RAID-Z3)也称为RAID 7 。[39]由于它始终以顶级VDEV条纹,它支持1 + 0,5 + 0和6 + 0嵌套RAID级别(以及条纹三奇偶校验集),但不是其他嵌套组合。 ZFS是Solaris和Illumos上的本机文件系统,也可在FreeBSD和Linux上提供。在OpenZFS伞项目下积极开发开源ZFS实现。 [40] [44] [43] [43]

最初由IBM开发的频谱刻度用于媒体流和可扩展的分析,支持高达N + 3的翻盖的RAID保护方案。特殊性是动态重建优先级,其在后台的低影响力运行,直到数据块击中n + 0冗余,在这种情况下,该块快速重建为至少n + 1。在顶部,频谱尺度支持地铁距离raid 1. [45]

BTRFS支持RAID 0,RAID 1和RAID 10(RAID 5和6正在开发)。 [46] [47]

XFS最初是为提供一个集成卷管理器,支持多个物理存储设备的连接,镜像和条带。 [48]但是,Linux内核中的XFS的实现缺少集成卷管理器。 [49]

Hewlett-Packard' S OpenVMS操作系统支持RAID 1.镜像磁盘,名为A"阴影集",可以在不同的位置,以协助灾难恢复。 [50]

FreeBSD支持RAID 0,RAID 1,RAID 3和RAID 5,并通过GEOM模块和CCD所有嵌套。 [53] [54] [55]

Linux' S MD支持RAID 0,RAID 1,RAID 4,RAID 5,RAID 6和所有嵌套。 [56]还支持某些重塑/调整/扩展操作。 [57]

Microsoft Windows使用各种软件实现支持RAID 0,RAID 1和RAID 5。使用Windows 2000引入的逻辑磁盘管理器允许使用动态磁盘创建RAID 0,RAID 1和RAID 5卷,但这仅限于Windows 8发布到Windows的Professional和Server Editions。[58 [59]可以修改Windows XP以解锁对RAID 0,1和5的支持。[60] Windows 8和Windows Server 2012引入了称为存储空间的RAID样功能,这也允许用户指定镜像,奇偶校验或者在文件夹基础上或没有冗余。这些选项类似于RAID 1和RAID 5,但在更高的抽象级别实现。 [61]

如果启动驱动器发生故障,则系统必须复杂,以便能够从剩余的驱动器或驱动器引导。例如,考虑一个计算机磁盘被配置为RAID 1(镜像驱动器);如果阵列中的第一个驱动器发生故障,则可以不足以使第一级引导加载程序更复杂,以尝试将第二级引导加载程序从第二个驱动器加载作为回退。 FreeBSD的第二级引导加载程序能够从这种阵列加载内核。 [64]

软件实施的RAID与系统' S启动过程并不总是兼容,并且对于Windows的桌面版本通常是不切实际的。但是,硬件RAID控制器昂贵且专有。填补这个差距,便宜的" raid控制器"介绍不包含专用RAID控制器芯片,但仅具有专有固件和驱动器的标准驱动器控制器芯片。在早期启动期间,RAID由固件实现,一旦操作系统更完全加载,驱动程序将接管控制。因此,当驾驶员支持不适用于主机操作系统时,这种控制器可能无法工作。 [65]一个例子是英特尔快速存储技术,在许多消费级主板上实现。 [66] [67]

由于涉及一些最小的硬件支持,因此该实现也称为#34;硬件辅助软件RAID" [68] [69] [70]"混合模型" RAID,[70]甚至"假raid" 如果支持RAID 5,则硬件可以提供硬件XOR加速器。 在纯软件RAID上的这个模型的优点是 - 如果使用冗余模式 - 甚至在操作系统之前,在启动过程中,引导驱动器受到防止失败(由于固件)甚至在操作系统之前接管。 [70] 数据擦洗(在某些环境中称为巡逻读取)涉及定期读取和突袭检查 ......