传统RAID技术

RAID技术背景

在RAID技术出现前啊,存储受到单盘容量和性能的限制。RAID技术的出现,解决计算机磁盘在整个系统中处于瓶颈的地位,同时提高存储的冗余性。

硬盘成为整个系统中的瓶颈

有限的硬盘操作,难 满足大容量需求

单个硬盘存放数据,数据可靠性难以保证

RAID基本概念

RAID:Redundant Array of Independent Disks,独立硬盘冗余阵列,RAID技术将多个单独的物理磁盘以不同的方式组合成一个逻辑硬盘,从而提高了硬盘的读写行呢和数据安全性。

RAID技术的主要功能是将多块独立的硬盘组合成一个逻辑上的存储池,在上层来看多块硬盘显示为一个存储池,这种方式将硬盘数据分割成多个数据块,同时对多个硬盘进行读/写,提高存储池的访问速度。

RAID技术从实现原理可以分为两大类:硬件RAID和软件RAID。硬件RAID使用专用RAID卡,通过将硬盘数据线连接到RAID卡上组合成RAID阵列,RAID卡有专门独立的控制芯片、内存,不需要CPU的参与RIAD工作当中去,性能比软RAID要好,特别是在大型RAID阵列当中。软RAID实现,通过系统中的软件去抽象掉底层硬盘,但是系统仍然可以识别到每个硬盘,没有独立的处理芯片,需要完全依赖主机的CPU。因此,软RAID会占用主机CPU的性能,不适合在大型RAID阵列中使用。

软件RAID
硬件RAID

RAID的数据保护方式

RAID在一定层度上为数据提供冗余保护,防止单一或多个磁盘故障而造成数据丢失。RAID技术通常有2种不同的方式进行数据保护。

  • 一种方法是在另一块冗余的硬盘上保存数据的副本,提高可靠性,并可以提高读性能。
  • 二是使用奇偶校验算法。奇偶校验码是使用用户数据计算出的额外信息。对于使用奇偶校验的RAID类型,它意味着需要额外的校验硬盘。奇偶校验采用的是异或(XOR的计算符号⊕)算法。
    • XOR运算广泛地使用在数字电子和计算机科学中。
    • XOR校验的算法——相同为假,相异为真:
      • 0⊕0= 0; 0⊕1= 1; 1⊕0= 1; 1⊕1= 0;

常用RAID级别与分类标准

随着阵列技术的发展,已经产生了很多不同类型的RAID,但现在只有少数几种RAID仍在使用。

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像是提供了一个单一的大容量的硬盘,还同时具有非常快速I/O的特点。在RAID 0技术使用之前,类似RAID 0的一种技术被称为JBOD。一个JBOD(Just a Bundle Of Disks,简称一堆硬盘)是一组硬盘组合成一个虚拟的大硬盘。与RAID 0最大的区别是,一个JBOD的数据块不是同时并行写入不同硬盘的。在JBOD中,只有将第一块硬盘的存储空间使用完,才会使用第二块硬盘。所以JBOD总的可用容量是所有个硬盘容量的总和,但性能是单个硬盘的性能!

当RAID 0接收数据读取请求时,它会在所有硬盘上搜索目标数据块并读取数据。在图中,我们可以看到整个读取过程。RAID 0组的读写性能与硬盘的数量成正比。

RAID 1的工作原理

RAID 1(也被称为镜像结构的硬盘阵列)旨在建立一个高安全性的RAID级别。RAID 1使用2个相同的硬盘系统,并设置了镜像。当数据写入到一个硬盘上时,数据的副本会同时存储在镜像硬盘上。当源硬盘(物理)失败时,镜像硬盘从源硬盘接管服务,保证服务的连续性。镜像盘作为备份,提供高数据可靠性。

一个RAID 1组存储的数据量只是单个硬盘的容量,另一硬盘保存的是数据的副本,相当于每一G字节的数据存储占用了2G字节的硬盘空间,所以说两个硬盘组成的RAID 1的空间利用率是50%。

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

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

RAID 5的工作原理

RAID 5是改进版的RAID 3,使用条带化并计算奇偶校验信息,在RAID 5中,数据以分条的形式写入硬盘组中。RAID 5的不同分条的奇偶校验数据不是单独存在一个固定的校验盘里的,而是按一定规律分散存放的。RAID 3在少量的数据被写入时有写惩罚,RAID 5类似。RAID5的写惩罚值为4,这意味每次写入数据时,存储系统需要执行2次读操作和2次写操作。

RAID 5的写入性能取决于所写的数据量和RAID 5组中硬盘的数量。假定一个RAID 5的硬盘数为N,当所有成员盘的转速相同时,在不考虑写惩罚,满分条写的情况下,RAID 5的顺序IO写性能理论上略小于 N-1倍单个硬盘的性能(计算冗余校验需要额外的计算时间)。

在RAID 3级别和RAID 5级别的硬盘阵列中,如果一个硬盘失效,该硬盘组将从在线(正常)状态转变为降级状态,直到完成重构失效硬盘。如果RAID中的另一个硬盘也出现故障,则硬盘组的数据将丢失。

但是,RAID 5并不是完美的。当有很多个大容量硬盘组合成RAID 5的时候,构建以及重构时间往往要花费几个小时甚至是几天。在重构过程中,存储池处于降级状态,这种情况下任何额外的硬盘失效都会导致数据的丢失。

RAID 6概述

RAID6 的正式名称时分布式双校验RAID。本质上他是一种改进的RIAD 5,也具有条带化和分布式奇偶校验,这意味着RIAD 6有以下特点:

  • 需要至少N+2(N>2)个硬盘来构成阵列,一般用在数据可靠性、可用性要求极高的应用场合。
  • 写入数据时,附加的双校验计算需要进行。所以,在所有RAID类型中,RAID 6是“最慢”的。

常用的RAID 6技术有:

  • RAID6 P + Q
  • RAID6 DP

目前来看,RAID 6 没有一个统一的标准,不同公司以不同方式实施RAID 6。

RAID 6 P+Q工作原理

RAID 6采用P+Q校验时,P和Q时2个彼此独立的校验值。他们使用不同的算法,用户数据和校验数据分布在同一分条的所有硬盘上。

RAID 6 P+Q 需要计算出两个校验数据P和Q,当有两个数据丢失的时候,根据P和Q恢复丢失的数据。校验数据P和Q是由以下公式计算出来的:

  • P = D0 ⊕ D1 ⊕ D2…
  • Q = (α * D0) ⊕ (β * D1) ⊕ (γ * D2)…

RAID 6 DP工作原理

DP - Double Parity,就是在RAID4所使用的一个行XOR校验硬盘的基础上又增加了一个硬盘用于存放斜向的XOR校验信息。横向礁岩盘中P0-P3为各个数据盘中横向数据的校验信息。

例如:P0=D0  XOR D1 XOR D2 XOR D3

斜向校验盘中DP0 - DP3为各个数据盘及横向校验盘的斜向数据校验信息。

例如:DP0=D0 XOR D5 XOR D10 XOR D15

RAID 50

RAID 50 是RAID 0和RAID 5的组合。两个子组被配置成 RAID 5,这两个子组在组成 RAID 0。每个RAID 5子组完全独立于对方。RAID 50需要至少六个硬盘,因为一个 RAID 5组最少需要三个硬盘。简而言之,RAID 50是将RAID 5和RAID0进行组合的RAID级别,第一级是RAID5,第二级为RAID 0。

RAID 2.0+技术

RAID技术演变

作为一种成熟、可靠的硬盘系统数据保护标准,RAID技术自诞生以来一直作为存储系统的基础技术而存在,但是近些年来随着数据存储需求的快速增长,单盘容量不断增大,高性能应用的不断涌现,传统RAID逐渐暴露出越来越多的问题,特别是大容量硬盘出现故障而需要进行数据重构的场景。

正如前面所说的问题,传统RAID技术面临以下的不足:

  • 数据丢失风险大:硬盘容量越大,重构时间越长,数据丢失风险越来越高。
  • 对业务影响大:重构过程中,RAID组成员盘忙于重构,服务能力明显下降,影响上层业务的运行。

为了解决传统RAID的上述问题,同时顺应虚拟化技术的发展趋势,如下替代方案应运而生:

  • LUN虚拟化:在传统RAID基础上将RAID组进行更细粒度地切分,再将切分的单元进行组合,构建主机可访问的空间。
  • 块虚拟化:将存储池中的硬盘划分成一个个小粒度的数据块,基于数据块来构建RAID组,使得数据均匀地分布到存储池的所有硬盘上,然后以数据块为单元来进行资源管理。

RAID 2.0+ 基本原理

RAID2.0+技术,把物理硬盘划分成很多数据块(chunk,CK),不同盘上的CK组成具备RAID关系的CKG(Chunk Group ),多个CKG组成庞大的存储资源池,主机所用的资源从资源池中获取。

相对于传统RAID机制,RAID2.0+具备如下优势:

  • 业务负载均衡,避免热点:数据打散到资源池内所有硬盘上,没有热点,硬盘负荷平均,避免个别盘因为承担更多的写操作而提前达到寿命的上限。
  • 快速重构,缩小风险窗口:当硬盘故障时,故障盘上的有效数据会被重构到资源池内除故障盘外的所有盘上,实现了多对多的重构,速度快,大幅缩短数据处于非冗余状态的时间。
  • 全盘参与重构:资源池内所有硬盘都会参与重构,每个盘的重构负载很低,重构过程对上层应用无影响。

RAID 2.0+ 软件逻辑对象

华为RAID 2.0+ : 底层介质虚拟化 + 上层资源虚拟化,同时解决数据快速重构问题和资源的智能分配问题。

数据快速重构:缩短数据重构时间,从小时级到分钟级,使重构速度提升近20倍,大幅降低重构过程对业务的影响和多盘失效的概率。

存储池内所有硬盘参与重构,仅重构业务数据,由传统RAID多对一的重构模式转变为多对多快速重构模式。

硬盘域

在传统RAID中,要将硬盘空间提供给业务主机的第一步操作是 创建RAID组。但是对创建RAID组这一操作有一些限制和要求:RAID组中的硬盘的类型是相同的,硬盘的大小和转速需要保持一致,而且一个RAID组中的硬盘个数不建议超过12个。

华为RAID 2.0+技术中采用了另一种实现方法。在该方法中,第一步操作不是 创建RAID组,而是创建硬盘域。一个硬盘域就是一组硬盘。一个硬盘只能属于一个硬盘域。 OceanStor存储系统可以创建一个或多个硬盘域。看起来,硬盘域的概念似乎跟RAID组的概念类似,都是一组硬盘,但实际上还是有很大的区别。在创建的RAID组中,这组硬盘已经按照设定某个RAID组级别进行了绑定,且这组硬盘的类型,大小,转速都必须是一样的。但是在一个硬盘域中,硬盘的个数可以大很多,比如上百个,而且可以最多包含3种类型的硬盘,每种类型的硬盘对应分配到一个存储层级,SSD盘对应分配到高性能层,SAS盘分配到性能层,NL-SAS盘分配到容量层。如果硬盘域中没有相应的硬盘类型,则该硬盘域就没有相应的存储层。更为关键的区别是,硬盘域的主要作用是将这一组盘和哪一组盘分开,目的是实现故障、性能和存储资源等的完全隔离。在创建硬盘域时,RAID级别尚未指定,即数据的冗余保护方式还未指定。事实上,RAID 2.0+ 对数据冗余保护方式的设置更加灵活,更加精细化。硬盘域中硬盘组成的存储空间,将被划分成更小粒度的存储池,以及为各个存储层级内共享的热备空间。热备空间大小是系统根据管理员为该硬盘域设置的热备策略(高、低、无)以及该硬盘域各存储层的硬盘个数自动设置的,而不再是传统RAID组中那样,由管理员指定某个特定的盘做热备盘。

Storage Pool & Tier

一个存储池基于指定的一个硬盘域创建,可以从该硬盘域上动态的分配Chunk(CK)资源,并按照每个存储层级(Tier)的“RAID策略”组成Chunk Group(CKG)向应用提供具有RAID保护的存储资源。

存储池根据硬盘类型可划分为多个Tier,OceanStor存储系统支持的存储层级和硬盘类型上图左表所示。

创建存储池可以指定该存储池从硬盘域上划分的存储层级(Tier)类型以及该类型的“RAID策略”和“容量”。

OceanStor存储系统支持RAID1、RAID10、RAID3、RAID5、RAID50和RAID6,支持的RAID策略和配置上图右表所示。

容量层由大容量的SATA、NL-SAS盘组成,RAID策略建议使用双重校验方式的RAID6。(SATA盘较少使用,部分产品规格上已经不支持)

存储层级层级名称支持硬盘类型应用
Tier0高性能层SSD性能和价格较高,适合存放访问频率很高的数据
Tier1性能层SAS性能较高,价格适中,适合存放访问频率中等的数据
Tier2容量层NL-SAS性能较低,价格最低且单盘容量大,适合存放大容量的数据以及访问频率较低的数据
RAID级别RAID策略
RAID11D+1D,1D+1D+1D+1D
RAID10系统自动选择2D +2D或4D+4D
RAID32D+1P,4D+1P,8D+1P
RAID52D+1P,4D+1P,8D+1P
RAID50(2D+1P)*2,(4D+1P)*2,(8D+1P)*2
RAID62D+2P ,4D+2P,8D+2P,16D+2P

Disk Group (DG)

Disk Group (DG)即硬盘组,由硬盘域内相同类型的多个硬盘组成的集合,硬盘类型包括SSD、SAS和NL-SAS三种。

  • OceanStor存储系统会在每个硬盘域内根据每种类型的硬盘数量自动划分为一个或多个Disk Group(DG)。
  • 一个Disk Group(DG)只包含一种硬盘类型。
  • 任意一个CKG的多个CK来自于同一个Disk Group(DG)的不同硬盘。
  • Disk Group(DG)属于系统内部对象,主要作用为故障隔离,由OceanStor存储系统自动完成配置,对外不体现。

LD

Logical Drive (LD)即逻辑磁盘,是被存储系统所管理的硬盘,和物理硬盘一一对应

CK

Chunk简称CK,是存储池内的硬盘空间切分成若干固定大小的物理空间,是组成RAID的基本单位。

CKG

Chunk Group简称CKG,是由来自于同一个DG内不同硬盘的CK按照RAID算法组成逻辑存储单元,是存储池从硬盘域上分配资源的最小单位。

Extent

Extent是在CKG基础上划分的固定大小的逻辑存储空间,大小可调,是热点数据统计和迁移的最小单位,也是存储池中申请空间、释放空间的最小单位。

一个Extent归属于一个Volume或一个LUN,Extent大小在创建存储池时可以进行设置,创建之后不可更改,不同存储池的Extent大小可以不同,但同一存储池中Extent大小是相同的。

Grain

在Thin LUN模式下,Extent按照固定大小被进一步划分为更细粒度的块,这些块称为Grain。Thin LUN以Grain为粒度进行空间分配,Grain内的LBA是连续的。

Volume & LUN

Volume是卷,是存储系统内部管理对象

LUN是可以直接映射给主机读写的存储单元,是Volume对象的对外体现

其他RAID技术

华为动态RAID算法

普通RAID算法

RAID组中坏一个Block后,恢复坏Block数据,并搬迁整个RAID组数据,再屏蔽该RAID组空间;

效果:大量可用的Flash空间被浪费。

华为动态RAID算法

RAID组中坏一个Block后,恢复坏Block数据并搬迁,同时屏蔽坏Block,用剩下的Block重构新RAID组;

效果:充分有效利用所有Flash空间。

RAID-TP

现有系统的持续升级意味着客户需要不断购买更高容量的磁盘来逐渐取代现有磁盘,不同容量的磁盘将用于同一系统中。问题是如何在不同容量磁盘混用的环境中保证最佳利用率。

RAID保护是存储系统必备的基本功能,提供高可靠性和性能保证,但随着容量剧增,RAID重建的时间越来越难保证,RAID保护的可靠性降低。

RAID-TP采用了华为优化的FlexEC算法,这个算法允许系统容忍三盘同时故障,这样不仅可以提高可靠性,还允许更长的重建时间。•在典型的4:2 RAID 6系统中,利用率通常约为67%,而配备25个磁盘的华为OceanStor全闪存存储的容量利用率则大幅度提高了20%。

与传统的RAID系统相比,使用FlexEC算法重建时实际从单个磁盘读取的数据量减少了70%,降低了对系统性能的影响。

RAID-TP功能实现了最佳性能、可靠性和容量利用率。

二次元!不是的?喜欢数码科技吗?我来带你了解。
最后更新于 2025-04-22