【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50

2023-05-16

存储

  • RAID基本概念
  • RAID数据组织形式
  • RAID数据保护方式
  • 常用RAID级别与分类标准
    • 创建RAID组成员盘要求
  • 热备盘(Hot Spare)
  • RAID 0的工作原理
    • RAID 0的数据写入
    • RAID 0的数据读取
  • RAID 1的工作原理
    • RAID 1的数据写入
    • RAID 1的数据读取
  • RAID 3的工作原理
    • RAID 3的数据写入
    • RAID 3的数据读取
  • RAID 5的工作原理
    • RAID 5的数据写入
    • RAID 5的数据读取
  • RAID 6
    • RAID 6 P+Q的工作原理
    • RAID 6 DP的工作原理
  • 混合RAID - RAID 10
  • 混合RAID - RAID 50
  • 常用RAID级别的比较

RAID基本概念

  • RAID:Redundant Array of Independent Disks

    • 独立硬盘冗余阵列,也可称为RAID
  • 高效的数据组织:条带化和并行访问

  • 数据保护:奇偶校验和热备用

  • 实现方法:硬件RAID、软件RAID

  • RAID技术出现的初衷是把多个小容量的硬盘组合起来,以获得更大的存储容量。当前我们所说的RAID技术更多则是与数据保护相关,换言之,当物理设备失效时,RAID能够用来防止数据的丢失。

  • RAID技术的主要功能:

    • 通过对硬盘上的数据进行条带化,实现对数据成块存取,减少硬盘的机械寻道时间,提高了数据存取速度。
    • 通过对一阵列中的几块硬盘同时读取(并行访问),减少了硬盘的机械寻道时间,提高了数据存取速度。
    • 通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
  • 随着阵列技术的发展,已经产生了很多不同类型的RAID,但现在只有少数几种RAID仍在使用。在这个章节中,我们将讨论最常用的RAID类型,也会学习RAID的其它相关功能,比数据保护等,同时,选择不同的RAID类型意味着不同的性能/成本。

  • 在存储设备中,可以通过2种方式实现RAID功能:硬件RAID和软件RAID。

    • 硬件RAID使用专用的RAID适配器、硬盘控制器或存储处理器。RAID控制器有自己的处理器,I/O处理芯片,和内存,用来提高资源利用率和数据传输速度。RAID控制器管理路由、缓冲区,控制主机与RAID间数据流。硬件RAID通常在服务器中使用。
    • 软件实现的RAID没有它自己的处理器或I/O处理芯片,而是完全依赖于主机处理器。因此,低速CPU不能满足RAID实施的要求。软件RAID通常在企业级存储设备上使用。

RAID数据组织形式

  • 条带(strip):硬盘中单个或者多个连续的扇区构成一个条带,它是一块硬盘上进一次数据读写的最小单元。条带是组成分条的元素。
  • 分条(stipe):同一硬盘阵列中的多个硬盘驱动器上的相同“位置”(或者说相同编号)的条带。
    在这里插入图片描述
  • 分条宽度:指在一个分条中数据成员盘的个数。
  • 分条深度:指一个条带的容量大小。
  • 扇区构成条带,条带组成分条

RAID数据保护方式

在这里插入图片描述

  • RAID技术通常有2种不同的方式进行数据保护。一种方法是在另一块冗余的硬盘上保存数据的副本。二是使用奇偶校验算法。奇偶校验码是使用用户数据计算出的额外信息。对于使用奇偶校验的RAID类型,它意味着需要额外的校验硬盘。奇偶校验采用的是异或(XOR的计算符号⊕)算法。
  • 异或输出表
输入A输入BA⊕B
000
101
011
110

常用RAID级别与分类标准

  • RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑盘,提高了硬盘的读写性能和数据安全性,根据不同的组合方式可以分为不同的RAID级别。
    在这里插入图片描述
  • RAID技术的优势体现在如下的几个方面:
    • 把多个硬盘组合成一个逻辑盘组,以提供更大容量的存储。
    • 将数据分割成数据块,对多个硬盘并行进行写入/读出,提高硬盘访问速度。
    • 通过提供镜像或奇偶校验来提供容错。

创建RAID组成员盘要求

  • 硬盘容量大小 相同
  • 硬盘接口类型 相同
  • 硬盘速率要求 相同

热备盘(Hot Spare)

  • 热备(Hot Spare):当冗余的RAID阵列中某个磁盘失效时,在不干扰当前RAID系统正常使用的情况下,用RAID系统中另外一个正常的备用磁盘顶替失效磁盘。

  • 热备通过配置热备盘实现,热备盘分为全局热备盘和局部热备盘。

  • 热备盘要求和RAID组成员盘的容量,接口类型,速率一致,最好是采用同一厂家的同型号硬盘。

  • 当坏盘出现后,服务器会报警,人工可以手动将坏盘替换出来,当插入好盘的时候,RAID控制器会根据XOR,将的三块盘的信息在后台算出来,然后写入新的硬盘。有些RAID控制系统会用NVRAM来存放阵列信息,因此和整列相关的条带化数据也会重新分配到新盘上,这些工作都对用户和应用程序来说都是透明的,用户可能会感受到的就是系统会因为在后台底层进行条带数据的重新分配而带来的服务器响应延迟。

  • 当然,如果条件允许,用户也可以强制作重新分配,当然是在维护停机时间内操作。

  • 但是由于XOR的限制和RAID 5这个级别的限制,如果连续两个盘出现了问题,呢么整个盘阵中的数据就完蛋了,系统也会不可用。

  • 特别是那些无人值守的机房,RAID 5中死掉一个盘,没有关系,如果他们比较倒霉,在管理人员没有更换坏盘的时候,第二个硬盘也死掉了,那么就都完蛋了。
    Hot-Spare盘就是一个不参与盘阵的,但是加电上线的盘,一点RAID 中的盘出现问题,它都可以自动的替换进入盘阵,你可以把它想象成一个"自动换盘"的概念。

  • 硬盘数量的话,就需要多一块,比如raid1需要两块盘,做热备的话就需要3块盘了,但使用的依然是2快,剩下一块随时准备替换使用中的2快中坏了的盘。

RAID 0的工作原理

在这里插入图片描述

  • 在所有RAID级别中,RAID 0(也被称为条带化RAID)具有最高的存储性能。RAID 0使用条带化技术将数据分布存储在RAID组的所有硬盘中。
  • 一个RAID 0包含至少2个成员盘。RAID 0组将数据分为大小不等的从512个字节至兆字节的数据块(通常是512字节的倍数),并行将其写入到不同的硬盘中。如图所示的两个硬盘(驱动器)构成的RAID中:前两块数据被写入到分条0上,其中,第一个数据块被写在硬盘1的条带0上,第二个数据块并行存放在硬盘2的条带0上;这时,再下一个数据块被写到硬盘1上的下一个条带(条带1)上,以此类推。以这种方式,I/O的负载平衡分布在RAID中的所有硬盘上,由于数据传输总线上的速度远大于硬盘读写速度,因此,RAID组上的硬盘可以认为在同时进行读写。
  • 一个RAID 0的硬盘组中的硬盘必须具有相同的大小,转速。如果一个RAID 0的由4个硬盘组成,则读写速率理论上可达单个硬盘的4倍(实际上可能有系统损耗),容量为单个硬盘的4倍。RAID 0中硬盘的容量大小不同,可用容量是最小的硬盘的容量的4倍,速度也是最小硬盘速度的4倍。
  • RAID 0像是提供了一个单一的大容量的硬盘,还同时具有非常快速I/O的特点。在RAID 0技术使用之前,类似RAID 0的一种技术被称为JBOD。一个JBOD(Just a Bundle Of Disks,简称一堆硬盘)是一组硬盘组合成一个虚拟的大硬盘。与RAID 0最大的区别是,一个JBOD的数据块不是同时并行写入不同硬盘的。在JBOD中,只有将第一块硬盘的存储空间使用完,才会使用第二块硬盘。所以JBOD总的可用容量是所有个硬盘容量的总和,但性能是单个硬盘的性能!
  • RAID 0 安全相关说明:
    • RAID 0是最不安全的,包括跟普通磁盘比较,也不如的。现在大部分硬盘坏的,都是硬故障。也就是磁盘本身问题,根文件没关系。某个文件坏了,不管在RAID几下面,他都是坏的。RAID是提高物理设备,也就是磁盘,的性能或者安全性,与软件,比如文件,没有关系的。一个文件坏了,不影响别的文件,不管是单磁盘还是RAID任何级别的情况下。说RAID几 安全不,都是说硬件,比如有磁盘坏了,数据会不会丢,会不会导致服务器不能工作,等等。这一讨论都是在硬件层上的,硬件坏了,数据文件依然可以完好,只是机器不能工作,就不能读取这些文件了。
    • 组建RAID0,所有的文件基本上(注意是基本上,除了很小的文件,具体多小不深入讨论了,越说越多),都是跨磁盘存储的,比如两个磁盘组RAID0,那一个文件就被分称多份,存在不同磁盘上,只有所有磁盘都可读,才能把分开的多份,合并成一个完整文件,操作系统才能识别,这个文件。而普通模式【未做raid】的两个磁盘A和B,每个文件还是单独在要么磁盘A,或者B 上面存的。A盘坏了,B盘文件还是可以读的,不像RAID0文件被分割后分别存储在A和B上,基本上,每次访问文件都得要求读取两块。这样任何一个磁盘坏,两个磁盘上的所有数据都无法访问了,因为即使另一个磁盘好的,但是它上面的数据都是分开的,不是完整的,依赖于另一块磁盘。三块,四块磁盘的RAID0风险就更高了。
    • 既然你能创建RAID0,那不想要了,就不创建,删了他,以普通模式工作,很简单,在哪里创建,就在那里删除(一般机器有专门的RAID管理界面,类似BIOS,启动时候按规定的快捷键进入。)没有什么特殊的,备份数据了,就跟对一台新设备操作一样,想怎么设置随便你。

RAID 0的数据写入

在这里插入图片描述

  • RAID 0采用条带化技术将数据写入硬盘组中,它将数据分为数据块,并均匀地分布存储在RAID组中的所有硬盘上。只有当RAID组的前一个分条被数据块写满后,数据才会写入到下一个分条。在图中,数据块D0,D1,D2,D3,D4,D5正在等待写入到RAID 0级别的硬盘组。D0将被写入到第一个分条(分条0)的第一块盘(硬盘1)上、D1写到的第一个分条的硬盘2上。以此类推。正是通过条带化并行的方式,将所有数据块写入到RAID 0组。
  • RAID 0组的写入性能与硬盘的数量成正比。

RAID 0的数据读取

在这里插入图片描述

  • 当RAID 0接收数据读取请求时,它会在所有硬盘上搜索目标数据块并读取数据。在图中,我们可以看到整个读取过程。
  • 首先,阵列收到读取数据块D0,D1,D2,D3,D4,D5的请求。接下来,阵列并行从硬盘1读取D0,从硬盘2读取D1,其他数据块也按类似的方式读取。所有的数据块从RAID读取后,他们被集成到RAID控制器,然后发送到主机。
  • 同写入数据一样,RAID 0的读取性能与硬盘的数量成正比。

RAID 1的工作原理

在这里插入图片描述

  • RAID 1(也被称为镜像结构的硬盘阵列)旨在建立一个高安全性的RAID级别。RAID1使用2个相同的硬盘系统【raid1只能为2块硬盘】,并设置了镜像。当数据写入到一个硬盘上时,数据的副本会同时存储在镜像硬盘上。当源硬盘(物理)失败时,镜像硬盘从源硬盘接管服务,保证服务的连续性。镜像盘作为备份,提供高数据可靠性。
  • 一个RAID 1组存储的数据量只是单个硬盘的容量,另一硬盘保存的是数据的副本,相当于每一G字节的数据存储占用了2G字节的硬盘空间,所以说两个硬盘组成的RAID 1的空间利用率是50%。
  • RAID 1的两个硬盘必须具有相同的大小。如果两个硬盘的容量大小不同,可用容量是最小的硬盘的容量。 坏一块盘数据不会丢失,2块同时坏,数据将丢失。

RAID 1的数据写入

在这里插入图片描述

  • RAID 0采用条带化技术将不同数据并行写入到硬盘中,而RAID 1则是同时写入相同的数据到每个硬盘,数据在所有成员硬盘中都是相同的。在上图所示,数据块D0,D1和D2,等待写入到硬盘。D0和D0的副本同时写入到两个硬盘中(硬盘1和硬盘2),其他数据块也以相同的方式(镜像)写入到RAID 1硬盘组中。
  • 通常来说,一个RAID 1的写性能是单个硬盘的写性能。

RAID 1的数据读取

在这里插入图片描述

  • RAID 1读取数据时,会同时读取数据盘和镜像盘,以提高读取性能。如果其中一个硬盘失败,可以从另一个硬盘读取数据。
  • RAID 1系统的读取性能等于两个硬盘的性能之和。在RAID组降级的情况下,性能下降一半。

RAID 3的工作原理

在这里插入图片描述

  • RAID 3与RAID 0类似,不同之处在于RAID 3带有专用的奇偶校验的分条。在RAID 3中,一块专用硬盘(校验盘)用来保存同一分条上其他硬盘上的相应的条带中的数据的奇偶校验值。如果检测到不正确的数据或硬盘出现故障,我们可以利用奇偶校验信息来恢复故障硬盘上的数据。RAID 3适用于数据密集型或单用户环境,需要长期、连续访问的数据块。RAID 3将数据写入操作分配给RAID组内的数据成员盘。但是,当有新数据需要写入时,无论写入哪个硬盘,RAID 3都需要重新计算并重写校验信息。因此,当某个应用程序需要大量写入时,RAID 3的奇偶校验盘将有很大的工作量。因为需要等待奇偶校验,所以会对RAID 3组的读写性能有一定影响。此外,因为校验盘有较高的工作负载,它往往是RAID 3里最容易失效的硬盘。这就是为什么校验盘被称为RAID 3的瓶颈的原因。
  • **RAID3 最少硬盘数为3块,假定一个RAID 3的硬盘数为N,其中有效用户数据存储容量为N-1个硬盘的容量。**与其他RAID一样,RAID 3中的成员盘的容量和转速应该是相同的。
  • 在RAID 3级别和RAID 5级别的硬盘阵列中,如果一个硬盘失效,该硬盘组将从在线(正常)状态转变为降级状态,直到完成重构失效硬盘。如果RAID中的另一个硬盘也出现故障,则硬盘组的数据将丢失。
  • 校验盘更新压力大,容易坏

RAID 3的数据写入

在这里插入图片描述

  • RAID 3采用单硬盘容错和并行数据传输。换句话说,RAID 3采用分条技术将数据分块,这些块进行异或算法,并将奇偶校验数据写到最后一个盘——RAID 3组的奇偶校验硬盘。当硬盘出现故障时,数据被写入到那些没有故障的硬盘上,奇偶校验继续。
  • RAID 3的性能不是固定的。原则上,RAID 3采用的是N+1的数据保护方法。这意味着当有N个硬盘的用户数据需要保护时,需要一个额外的硬盘来存储校验信息。在这种情况下,新的数据块被写入硬盘同时,奇偶校验信息被计算生成后,写入校验硬盘。
  • 通常情况下,RAID 3组的所有的硬盘会在分条过程中合作,N个硬盘会并行写入。但当新写入的数据较少,只需写入一个或两个硬盘时,按照RAID 3的工作原理,仍需要读所有的硬盘以便重新计算新的奇偶校验值。这种少量写入数据的场景,因为需要额外的读和写操作,相对于对单个硬盘进行数据写入,并没有提升硬盘的性能,这种情况被称为RAID 3的“写惩罚”。
  • RAID 3的写入性能取决于更改数据的数量、硬盘的数目、以及计算和存储奇偶校验信息所需的时间。假定一个RAID 3的硬盘数为N,当所有成员盘的转速相同时,在不考虑写惩罚,满分条写的情况下,RAID 3的顺序IO写性能理论上略小于 N-1倍单个硬盘的性能(计算冗余校验需要额外的计算时间)。

RAID 3的数据读取

在这里插入图片描述

  • 在RAID 3中,数据以分条的方式进行读取。RAID中的每个硬盘的硬盘驱动器被控制,所以RAID 3里同一条带上的数据块可以并行读取。所以,RAID 3的每一个硬盘被充分利用,提升了读取性能。
  • RAID 3使用并行数据读(写)模式。
  • RAID 3的读取性能取决于读取的数据量和RAID 3阵列的硬盘数量。

RAID 5的工作原理

在这里插入图片描述

  • RAID 5是改进版的RAID 3,使用条带化并计算奇偶校验信息。在RAID 3中有一块专用硬盘负责奇偶校验数据的写入和读取,这导致了我们前面提到的性能瓶颈问题。RAID 5使用的是分布式奇偶校验,每个成员硬盘将用于存储用户数据和奇偶校验数据。所以RAID 5没有瓶颈或热点。
  • RAID5 最少硬盘数为3块,假定一个RAID 5的硬盘数为N,其中有效用户数据存储容量为N-1个硬盘的容量。与其他RAID一样,RAID 5阵列中的成员盘的容量和转速应该是相同的。
  • 在RAID 3级别和RAID 5级别的硬盘阵列中,如果一个硬盘失效,该硬盘组将从在线(正常)状态转变为降级状态,直到完成重构失效硬盘。如果RAID中的另一个硬盘也出现故障,则硬盘组的数据将丢失。

RAID 5的数据写入

在这里插入图片描述

  • 在RAID 5中,数据以分条的形式写入硬盘组中。硬盘组中的每个硬盘都存储数据块和校验信息,数据块写一个分条时,奇偶信息被写入相应的校验硬盘。在RAID 5进行连续写入的时候,不同分条用来存储奇偶校验的硬盘是不同的。因此RAID 5的不同分条的奇偶校验数据不是单独存在一个固定的校验盘里的,而是按一定规律分散存放的。
  • RAID 3在少量的数据被写入时有写惩罚,RAID 5类似。
  • RAID 5的写入性能取决于所写的数据量和RAID 5组中硬盘的数量。假定一个RAID 5的硬盘数为N,当所有成员盘的转速相同时,在不考虑写惩罚,满分条写的情况下,RAID 5的顺序IO写性能理论上略小于 N-1倍单个硬盘的性能(计算冗余校验需要额外的计算时间)。

RAID 5的数据读取

在这里插入图片描述

  • RAID 5组的数据以分条的形式存储在硬盘上。只需N-1个硬盘的数据就可以恢复全部数据。
  • RAID 5组的读取性能取决于所写的数据量和RAID组中的硬盘数量。

RAID 6

  • RAID 6

    • 具有两种校验算法的RAID类型
    • 需要至少N+2(N>2)个硬盘来构成阵列,一般用在数据可靠性、可用性要求极高的应用场合。
  • 常用的RAID 6技术有:

    • RAID 6 P+Q
    • RAID 6 DP
  • RAID 6 最少需要5个硬盘,公式为:N+2(N>2)个硬盘;

  • 前面讨论到的RAID组数据保护都是考虑单一硬盘失效的场景(RAID 0排除在外)。现在,硬盘的容量已经增加了很多,同时重构时间也增加了。很多大容量的硬盘组合起来形成的一个RAID 5组重建失效硬盘可能需要几天,而不是几个小时。在重建过程中,系统处于降级状态,这种情况下,任何额外的硬盘故障都会导致硬盘组失效和数据丢失。这就是为什么一些组织或单位需要一个双冗余系统。换句话说:一个RAID组应该允许2个硬盘故障时,同时所有的数据应该是可访问的。这种双重冗余数据保护类型的实现有一些不同的方式:

    • 第一种是多重镜像。多重镜像是指数据块存储在主盘时同步存储多个多个副本到多余硬盘的方法。这种方式意味着大量的开销。
    • 第二种方式是RAID 6级别硬盘阵列。RAID 6组对2个硬盘失效提供保护。这些硬盘甚至可以在同一时间失效。
    • RAID 6的正式名称是分布式双校验RAID。本质上它是一种改进的RAID 5,也具有条带化和分布式奇偶校验。现在在RAID 6有双校验,这意味着两点:
    • 写入用户数据时,附加的双校验计算需要进行。所以,在所有RAID 类型中,RAID 6是 “最慢”的。
    • 额外的校验信息需要占用两个盘的存储空间。这就是为什么我们把RAID 6看作是一个N+2类型的RAID。
    • 目前,RAID 6没有一个统一的标准。不同公司以不同的方式实施RAID 6。以下2个是主要的实现方式:
    • RAID P + Q:华为,HDS
    • RAID DP:NetApp
  • 这2种模式获得校验数据的方法不同。然而,在RAID组有2块硬盘故障的情况下,他们可以确保数据的完整性,并支持数据访问。

RAID 6 P+Q的工作原理

在这里插入图片描述

  • RAID 6采用P+Q校验时,P和Q是2个彼此独立的校验值。它们使用不同的算法,用户数据和校验数据分布在同一分条的所有硬盘上。
  • P是用户数据块的简单的异或运算得到的。Q是对用户数据进行GF(GF =伽罗瓦域)变换再异或运算得到,α,β和γ为常量系统,由此产生的值是一个所谓的“芦苇码”。该算法将数据硬盘相同分条的所有数据进行转换和异或运算。
  • 如图所示,P1是通过对D0,D1,D2所在的分条0进行异或操作获得的,P2是对D3,D4,D5所在的分条1异或操作实现的,P3则是对D6,D7,D8 所在的分条2条进行异或操作。
  • Q1是对D0,D1,D2 所在的分条0条进行GF变换再异或操作实现的,Q2是对D3,D4,D5 所在的分条1进行GF变换再异或运算, Q3实现对D6,D7,D8分条2进行GF变换再异或。
  • 如果一个硬盘中的一个分条失效,只需有P校验值即可恢复失效硬盘上的数据,异或运算在P校验值和其它数据硬盘间执行。如果同一个分条有2个硬盘同时故障,不同的场景有不同的处理方法。如果Q校验值不在失效的一个硬盘上,数据可以被恢复到数据盘上,然后重新计算校验信息。如果Q在其中一个失效的硬盘上,两个的公式都需要使用才能恢复两个失效硬盘上的数据。
  • α,β和γ是随机系数,硬盘会保存下来。

RAID 6 DP的工作原理

在这里插入图片描述

  • 另一种算法是RAID 6 DP。RAID 6 DP也有两个独立的校验数据块。第一个校验信息与RAID 6 P+Q的第一个校验值是相同的,第二个不同于RAID 6 P+Q,采用的是斜向异或运算得到行对角奇偶校验数据块。行奇偶校验值是同一分条的用户数据异或运算获得到,所图所示:P0是由分条0上的D0,D1,D2和D3异或运算得到,P1由分条1上的D4,D5,D6,D7异或运算,等等。所以,P0 = D0 ⊕D1⊕ D2⊕D3,P1 = D4⊕D5⊕D6⊕D7,如此类推。
  • 第二个校验数据块是由阵列的对角线数据块进行异或运算。数据块的选择过程比较复杂。DP0是由硬盘1 的分条0上的D0,硬盘2的分条1上的D5,硬盘3上的分条2的D10,和硬盘上4 分条3上的D15异或操作得到。DP1是对硬盘2 的分条0上的D1,硬盘3的分条1上的D6,硬盘4上分条2的 D11,和的第一块校验硬盘上分条3 上的P3进行异或运算得到。DP2是硬盘3 分条0上的D2,硬盘4上的分条1的 D7,奇偶硬盘分条2的P2,和硬盘1 分条3上的D12进行异或运算得到。所以,DP0 = D0⊕D5⊕D10⊕D15,DP1 =D1⊕D6⊕D11⊕P3,如此类推。
  • 一个RAID 6阵列能够容忍双硬盘失效。如上图所示,如果硬盘1和2失效,上面的所有数据会丢失,但其他硬盘上的数据和奇偶校验信息是有效的,我们了解一下阵列数据是如何恢复的。恢复D12采用DP2和斜向校验(D12 = D2⊕D7⊕P2⊕DP2);恢复D13利用P3和横向校验(D13 = D12⊕D14⊕D15⊕P3),通过使用DP3和斜向校验恢复D8(D8 = D3⊕P1⊕DP3⊕D13),使用P2和横向校验得到D9(D9 =D8⊕D10⊕D11⊕P2),恢复D4采用DP4和斜向校验,利用P1和横向校验得到D5等。这些操作是重复的,直到所有数据在故障盘被恢复。
  • 一个RAID 6组的性能,无论算法是DP还是P+Q,相对都比较慢。因此,RAID 6适用两种场景:
    • 数据非常重要,需要尽可能长的时间处于在线和可使用的状态。
    • 使用的硬盘容量非常大(通常超过2T)。大容量硬盘的重建时间较长,两个硬盘都失效是会造成数据较长时间不能访问。在RAID 6中,可以实现一个硬盘重构时另一个硬盘失效。一些企业希望在使用大容量硬盘后,存储阵列的供应商使用一个双重保护的RAID组。

混合RAID - RAID 10

在这里插入图片描述

  • 对于大多数的企业客户而言,RAID 0并不是一个真正可以操作的选择,而RAID 1受限于硬盘容量利用率。RAID 10组合了RAID 1和RAID 0,提供了最好的解决方案,特别是在随机写入时,由于不存在写惩罚,性能优势比较明显。
  • RAID 10组的硬盘数量总是偶数,最少需要4块硬盘(2个RAID1组成一个RAID0)。一半硬盘进行用户数据写入,另一半保存用户数据的镜像副本。镜像基于分条执行。
  • 我们一般使用RAID1+RAID0模式,在图中,物理硬盘1和2构成一个RAID 1,物理硬盘3和物理硬盘4形成另一个RAID 1。这2个RAID 1子组再形成RAID 0。
  • RAID 10组写入数据时,子组间采用并行的方式写入数据块,子组内数据采用镜像的方式写入。如图所示,D0将写入物理硬盘1,副本将被写入物理硬盘2。
  • 当硬盘在不同的RAID 1组故障(例如硬盘2和4),RAID 10组的数据访问不受影响。这是因为其他2个硬盘(3和1)上有故障盘2和4上数据的完整副本。但是,如果同一RAID1子组的硬盘(例如,硬盘1和2)在同一时间失败,数据将不能访问。
  • 从理论上讲,RAID 10可以忍受总数一半的物理硬盘失效,然而,从最坏的情况来看,在同一个子组的两个硬盘故障时,RAID 10也可能出现数据丢失。通常RAID 10用来保护单一的硬盘失效。

混合RAID - RAID 50

在这里插入图片描述

  • RAID 50是RAID 0和RAID 5的组合。两个子组被配置成RAID 5,这两个子组再形成RAID0。每个RAID 5子组完全独立于对方。RAID 50需要至少六个硬盘,因为一个RAID 5组最少需要三个硬盘。
  • 所图所示,物理硬盘1,2,和3形成一个RAID 5,物理硬盘4,5,和6形成另一组RAID5组。两个RAID 5子组间再构成一个RAID 0。
  • 在RAID 50中,RAID可以同时接受多个硬盘的并发故障。然而,一旦两块硬盘在同一RAID5组同时失败,RAID 50的数据将丢失。

常用RAID级别的比较

RAID级别RAID 0RAID 1RAID 3RAID 5RAID 6RAID 10RAID 50
容错性
冗余类型复制奇偶校验奇偶校验奇偶校验复制奇偶校验
热备盘选项
读性能一般
随机写性能最低一般
连续写性能一般
最小硬盘数2块2块3块3块4块4块6块
可用容量N*单块硬盘容量(1/N)*单块硬盘容量(N-1)*单块硬盘容量(N-1)*单块硬盘容量(N-2)*单块硬盘容量(N/2)*单块硬盘容量(N-2)*单块硬盘容量
典型应用环境迅速读写,安全性要求不高,如图形工作站等随机数据写入,安全性要求高,如服务器、数据库存储领域连续数据传输,安全性要求高,如视频编辑、大型数据库等随机数据传输,安全性要求高,如邮件服务器,文件服务器等随机数据传输,安全性要求高,如邮件服务器,文件服务器等数据量大,安全性要求高,如银行、金融等领域随机数据传输,安全性要求高,并发能力要求高,如邮件服务器,www服务器等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50 的相关文章

  • docker 错误 WARNING: IPv4 forwarding is disabled. Networking will not work.

    这个错误出现在使用 docker 的服务器上 xff0c 当你进入 docker 容器时 xff0c 如果出现这样的 WARNING 提示 xff0c 则表示服务器没有开启 IPv4 转发 xff0c 按照本文的方法配置开启转发即可 错误提
  • 嵌入式中异常/中断/事件的区别

    嵌入式中异常 xff0f 中断 xff0f 事件的区别 Cortex M3在内核水平上搭载了一个异常响应系统 xff0c 支持为数众多的系统异常和外部中断 其中 xff0c 编号1 15的对应系统异常 xff0c 大于等于16的则都是外部中
  • 【起航】OpenHarmony远征02

    OpenHarmony内核 目前OpenHarmony针对不同量级的系统 xff0c 可以使用不同形态的内核 xff0c 轻量和小型的系统可以使用Liteos xff0c 小型和标准系统可以使用Linux Liteos系统是面向IOT领域的
  • momenta面经总结

    一 C 43 43 01 堆和栈的区别 xff0c 栈的静态分配和动态分配 xff1f 栈由操作系统分配释放 xff0c 用于存放函数的参数值 局部变量等 xff0c 栈中存储的数据的生命周期随着函数的执行完成而结束 堆由开发人员分配和释放
  • Orbslam2使用opencv4解决cv_bridge冲突问题

    在研究orbslam2在opencv4下使用会和cv bridge4冲突 解决方法 xff1a 1条消息 ROS学习 xff1a cv bridge与opencv版本冲突三种解决方案 Mr Qin 的博客 CSDN博客 cv bridge
  • 智能车浅谈——方向控制篇

    文章目录 前言自动控制理论人工控制系统自动控制 方向控制典型环节对应典型环节分析给定环节与给定量比较环节与偏差量控制环节与控制量执行机构舵机PWM技术舵机中值及限幅转向控制 被控对象与被控量反馈对象与反馈量 控制思路结束语智能车系列文章汇总
  • 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言GPIO相关的寄存器GPIO 端口模式寄存器 GPIOx MODER x 61 A I 位操作 GPIO 端口输出类型寄存器 GPIOx OTYPER x 61 A I GPIO 端口输出速度寄存器 GPIO
  • 2021-基于卷积和LSTM神经网络的视频分类时间融合方法在暴力检测中的应用

    A Temporal Fusion Approach for Video Classification with Convolutional and LSTM Neural Networks Applied to Violence Dete
  • uni-app(Vue)直播拉流

    html span class token tag span class token tag span class token punctuation lt span div span span class token attr name

随机推荐

  • Docker 容器常见故障排查及处理

    Docker 容器常见故障排查及处理 本文来源于公司论坛发表的帖子 Docker是一种相对使用较简单的容器 xff0c 我们可以通过以下几种方式获取信息 xff1a 1 通过docker run执行命令 xff0c 或许返回信息 2 通过d
  • CMake教程

    本文参考 xff1a 1 https blog csdn net whahu1989 article details 82078563 2 https blog csdn net kai zone article details 82656
  • docker / containerd 错误 panic: invalid freelist page: 162, page type is leaf

    错误描述 containerd 服务启动失败 xff0c 使用命令 journalctl xe u containerd 查看日志如下所示 xff1a span class token punctuation span root 64 k8
  • 制作自己的rosgo

    制作自己的rosgo 首先 xff0c 什么是rosgo xff1f ROS2GO xff08 ROS To Go xff09 是一款随时可用的高速USB闪存驱动器 xff0c 已安装Ubuntu ROS和常用软件包 xff0c 可以从外部
  • 解决libssl.so.1.0.0 => not found以及libcrypto.so.1.0.0 => not found

    现在的apt源中 xff0c libssl1 0的版本一般是libssl1 0 2 xff0c libcrypto1 0的版本一般是libcrypto1 0 2 但是很多应用要使用libssl so 1 0 0和libcrypto so 1
  • cmake设置默认CMAKE_BUILD_TYPE

    原文 xff1a https cmake org pipermail cmake 2009 June 030311 html 在CMakeLists txt里写入 IF NOT CMAKE BUILD TYPE set CMAKE BUIL
  • 进程:fork的使用

    1 用fork函数创建一个进程 pid t fork void fork函数调用成功 xff0c 返回两次 返回值为0 xff0c 代表当前进程是子进程 返回值非负数 xff08 子进程的进程ID xff09 xff0c 代表当前进程为父进
  • 8.15美团笔试和奇葩赛码网的输入坑

    第一次用赛码网 xff0c 两个小时的笔试居然有一个半小时在查如何正确输入 xff0c 最要命的是在本地IDE上可以的输入到了网页上就GG了 看来是leetcode刷多了 xff0c 文件流那块学的也很糟糕 总结一下下次避免跳坑吧 一行的就
  • 大小端与字节序转换

    大端小端 不同机器内部对变量的字节存储顺序不同 xff0c 有的采用大端模式 big endian xff0c 有的采用小端模式 little endian 大端模式是指高字节数据存放在低地址处 xff0c 低字节数据放在高地址处 小端模式
  • 解决ubuntu安装后只有一个800x600的分辨率,且系统设置显示里也只有这个分辨

    1 修改 etc default grub 打开终端用命令 xff1a sudo gedit etc default grub 会出现下面的代码 xff1a If you change this file run update grub a
  • DRV8833直流电机驱动模块代替 TB6612FNG电机驱动

    江科大自化协TB6612使用DRV8833代替 xff0c 以及使用方法 文章目录 前言一 两种模块对比二 HAL库驱动的使用步骤1 配置CubeMX 前言 购买了国产DRV8833模块驱动直流电机 xff0c 单片机3 3V的GPIO口无
  • Spring boot Json字符串传输 " 转义问题解决

    在接收前端返回过来的json字符串时 xff0c 发现出现 34 被转义的情况 xff0c 这里记录下解决方式 xff0c 获取到json字符串的时候我们可以使用工具类去进行转就可以了 xff0c 使用 org apache commons
  • 计算机三级Linux应用与开发技术

    第1章 计算机体系结构与操作系统 一 选择题 1 操作系统负责管理计算机系统的 xff08 C xff09 xff0c 其中包括处理器 储存器 设备和文件 A 程序 B 文件 C 资源 D 进程 2 操作系统是一种 xff08 B xff0
  • Linux 命令 cp mv 花括号用法

    Linux 命令行使用 mv 重命名文件时 xff0c 巧妙的使用 可以很方便 xff0c 最常见的就是把一个文件加个后缀临时备份 例如 xff1a span class token function mv span files local
  • FreeRTOS的调度器源码分析及系统滴答SysTick

    1 PendSV系统调用 查遍了C站上所有关于FreeRTOS调度器的分析 xff0c 发现大家分析完vTaskStartScheduler 之后就戛然而止了 xff0c 我就会比较迷糊 xff0c 这个仅开启了调度器的调度 xff0c 而
  • 从零适配IMX6ULL开发板Linux系统——uboot移植

    串口驱动搜 CP210 下载 目的 xff1a 当拿到一块儿完全没有系统的开发板 xff0c 厂家并没有提供给我们对应的Linux系统 xff0c 从芯片厂家提供的原厂资料中 xff0c 修改并适配自己的开发板 我们需要做的步骤如下 xff
  • NXP IMX6ULL芯片时钟系统全概况

    本文主要针对IMX6ULL芯片的时钟系统进行分析 xff0c 并没有针对哪款开发板 xff0c 毕竟是芯片的问题 一 硬件原理图分析 对于IMX6ULL芯片有两个时钟源 xff0c 我使用的开发板是百问网IMX6ULL xff0c 其他IM
  • 【FreeRTOS】FreeRTOS内存管理的五种方式

    内存管理 1 FreeRTOS为什么要实现自己的内存管理 内存的动态管理是C语言程序的知识范围 xff0c 并不属于FreeRTOS的知识范畴 xff0c 但是它跟FreeRTOS关系是如此紧密 在C语言的库函数中 xff0c 有mallc
  • 【存储】存储特性

    存储特性 精简配置技术 xff08 SmartThin xff09 SmartThin主要功能容量虚拟化存储空间写时分配 xff1a Capacity on Write读写重定向 xff1a Direct on Time应用场景及配置流程
  • 【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50

    存储 RAID基本概念RAID数据组织形式RAID数据保护方式常用RAID级别与分类标准创建RAID组成员盘要求 热备盘 xff08 Hot Spare xff09 RAID 0的工作原理RAID 0的数据写入RAID 0的数据读取 RAI