RAID技术的发展及应用

摘要

2021年8月20日,十三届全国人大常委会第三十次会议表决通过了《中华人民共和国个人信息保护法》,将于2021年11月1日起施行。随着国家对个人信息保护的宣贯,以及大家对个人信息保护的越来越重视,越来越多的人倾向于搭建自有的NAS,来替代公有云盘。磁盘阵列这个概念,不再是数据中心独有,随着家庭存储的普及,慢慢地进入普通家庭,进入到人们日常的工作和生活当中,甚至于一些高端点地硬盘盒,也都开始支持磁盘阵列。本文从磁盘阵列(RAID)的发展历程、常用分类及应用场景几个方面,详细清晰地对磁盘阵列进行介绍及类型比较,以便帮助大家能了解哪种磁盘阵列实现方式最能满足他们的需求。

一、RAID的发展历程及原理

1、什么是RAID

RAID是磁盘阵列(Redundant Array of Independent Disk)的英文简称(在后续的文章中均以“RAID”来代表磁盘阵列),使用RAID,可以提高系统容错性,增强系统的可靠性,Redundant也由此而来。

2、RAID的发展

RAID技术诞生于1987年,由美国加州大学伯克利分校提出。RAID是“Redundant Arrays of Inexpensive Disks”的缩写,值得注意的是,当时的“I”是“inexpensive”的意思,意为廉价的。提出RAID的初衷之一,就是希望用多块廉价的磁盘组成一个磁盘组来替代大型机上昂贵的大容量磁盘,并实现性能的超越,同时实现容错、逻辑数据备份的功能。。那时候有的大型机上的单个磁盘容量可达7500M,而个人电脑中普通的磁盘容量只有2M。大型机上磁盘成本高达20美元/M,而个人电脑的普通磁盘只有3美元/M。

但后来发现,大量便宜磁盘组合并不能适用于现实的生产环境,并且随着磁盘成本和价格的不断降低以及该技术得到了越来越广泛的应用后,“廉价”已经毫无意义,为了保障数据容错,各种生产环境的实现方案并不便宜。因此,RAID咨询委员会(RAID Advisory Board, RAB )决定用 “ 独立 ” 替代 “ 廉价 ” ,于是RAID变成了独立磁盘冗余阵列(Redundant Array of Independent Disks)。但这仅仅是名称的变化,实质内容没有改变。

所以说,RAID技术,是为便宜而来,但随着RAID技术的发展及类型的多样化,便宜已经不再是重点,数据的安全保障和性能的提升,才是RAID目前的使命。

3、RAID的基本原理

高性能和可靠性是RAID的两大使命,因此,RAID的实现方式主要有三种:1、数据条带(Data Stripping,提高性能);2、镜像(Mirroring,提高可靠性);3、数据校验(Data parity,结合前面两种特点)。

(1)数据条带(Data Stripping)

数据条带是一种提升数据读写效率的技术,在收到数据时,会将数据进行分块,并分布存储在多个磁盘上,读取时,再从多个磁盘同时读取。大家都知道,相对于高速的CPU来说,磁盘是一种慢速的机械运动,应用的使用瓶颈,往往就在磁盘的读取效率上,数据条带技术,将数据进行分块,多个磁盘同时存储及读取,使数据存储和读取效率成倍提高,并且加入的磁盘越多,效率越高,从侧面解决了磁盘I/O的效率问题。

但是数据条带只关注I/O性能的提升,对数据可靠性没有任何的提升,由于数据被拆分且没有备份,其中任何一个数据条带损坏都会导致整个数据不可用,即阵列内任何一块磁盘坏掉,都会导致整个阵列的数据不可用,所以采用数据条带技术反而增加了数据发生丢失的概率。故多用于需要反复高性能读取的临时数据的存储。

(2)镜像(Mirroring)

镜像是一种冗余技术,在收到数据时,会采用镜像技术产生两个完全相同的数据副本,分别存在两块磁盘上。当一个数据副本失效不可用时,系统仍可正常访问另一个副本,不会对应用系统运行产生重大影响,并且镜像通过实时拆分,能获得特定时间点上的数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。性能方面,由于在数据写入时需要生成两个副本,所以在写入时性能会受到些许影响;但是读取时可从两个磁盘同时读取,性能会有较大提升。

然而在数据存储方面,由于同一份数据有两份副本,并且两份副本分别存于两块磁盘,相当于两块磁盘只有一块磁盘的容量,资源浪费较为严重,方案较为昂贵,故多用于至关重要数据的保护。

(3)数据校验(Data parity)

数据校验使用校验数据来确保数据的完整性,在收到数据时,对数据进行块分割,并生成校验数据,校验数据可以根据现有数据块重构出缺失的数据块,从而在个别磁盘出现故障时,保证数据的完整性,同时由于对数据进行了分块分布存储,也相应提高了数据的读写效率。

相对于条带技术,数据校验技术降低了部分阵列读取效率,但提高了数据安全性;相对于镜像技术,数据校验技术使用重构的方式代替复制备份,理论上降低了数据恢复概率,但是由于采用了分块分布存储,极大降低了方案成本,在一定条件下还对性能有所提升。所以,目前使用最为广泛的,是数据校验技术,以及数据校验和数据条带相结合的技术。

二、常用的RAID等级及应用场景

值得注意的是,RAID的等级并不是用来区分好坏的,而是RAID模式以及技术形式的一种区分,并不是说等级越高越好。由于RAID的技术发展较为久远,RAID的等级也五花八门,很多等级只有在特定的情形下使用,日常生活和工作中很少接触,所以下面我们就来说说日常生活和工作中较为常见的几种RAID等级(RAID 0、RAID 1、RAID 4、RAID 5、RAID 6、RAID 10、RAID 50、RAID 60),以及它们的建议使用场景。

1、RAID 0

RAID 0可以说是数据条带技术的代表作,由两块或以上的磁盘组成,RAID 0将所在磁盘条带化后组成大容量的存储空间,并将数据分块后分散存储在各个磁盘当中,从而提升了高并发下的读写效率。再加上不需要进行数据校验及副本拷贝,RAID 0的性能在所有RAID等级中是最高的。其架构如图2.1.1:


图 2.1.1

其中数据A被分为A1、A2、A3三块,同时在三块磁盘上进行写读,比单一磁盘提升了三倍(理论上)的效率。但是由于RAID 0不提供数据冗余保护,所以一旦有磁盘损坏,数据将无法恢复。因此,RAID 0一般适用于对性能要求严格,但对数据安全性和可靠性不高的应用,如音视频缓存,前置临时数据存储等。

RAID 0 档案:
磁盘数量:>=2
容量计算:硬盘容量*硬盘个数
优点:读写性能提升
缺点:无容错能力
磁盘容错:0

2、RAID 1

RAID 1也是镜像技术的代表作,由两块磁盘组成,存储空间由容量最小的磁盘决定,在收到数据时,镜像出一个副本,同时存入两块磁盘,得到了完全一致的数据镜像,及时其中一块盘损坏,也可以单独使用另一块盘进行读写,而不依赖其他手段,当新增一块恢复盘后,可以对现有数据进行批量镜像到新的盘,其安全性在所有RAID等级中是最高的。其架构如图2.2.1:


图 2.2.1

其中数据A被分为两份,同时存入两块磁盘,写入方面由于需要镜像副本,所以效率会有所影响,但是读取时由于可以从两块磁盘同时读取,比如A从磁盘1读取,B从磁盘2读取,对读取效率有着一定的提升。由于是完全相同的镜像副本,所以RAID 1拥有完全容错的能力,但实现成本较高,主要适用于对数据保护要求极高,但对数据读写效率要求不高的应用,如邮件系统,重要的生产数据等。

RAID 1和RAID 0是完全相反的两个极端,RAID 1追求极致的保护,RAID 0追求极致的性能,这也是镜像技术和数据条带技术分别代表的技术路线。下面我们再说说同时具备效率提升和数据保护的数据校验技术。

RAID 1档案:
磁盘数量:2
容量计算:最小硬盘容量
优点:读取性能提升、良好的容错能力、重建更快
缺点:写入性能下降、容量利用率低、造价昂贵
磁盘容错:1

3、RAID 4

RAID 4目前用得比较少,采用的是数据条带+奇偶校验技术,是针对RAID 0的优化。在RAID 0中,数据分块分布存储,导致某个磁盘出问题后,数据无法恢复;RAID 4采用了数据校验的方式,新增一个盘作为数据校验盘,当其中一块存放数据的磁盘坏掉后,校验数据可以根据其他盘的数据块,来对损坏磁盘的数据块进行推导,使得数据可以成功读取。当新增一块恢复盘后,可利用现有数据块及校验数据,恢复出损坏的数据。其架构如图2.3.1:


图 2.3.1

其中数据A被分为A1、A2两块,同时增加一份校验数据PA,PA可以通过A1推导出A2,反之亦然,这样就保证了在有一块磁盘坏掉的情况下,数据还能正常读写。并且由于采用了数据条带技术,数据的读写有两块磁盘同时进行,也响应提高了读写速率。但是由于RAID 4是采用单独的磁盘对校验数据进行存储,所以校验盘的压力会比较大,容易成为性能瓶颈,并且容易损坏。故当RAID 5出现后,RAID 4目前几乎没有商业应用了。

RAID 4档案:
磁盘数量:>=3
容量计算:最小硬盘容量*(硬盘个数-1)
优点:读写性能提升、有一定的容错能力
缺点:单块盘作为校验盘,访问压力大,容易损坏的同事,影响性能
磁盘容错:1

4、RAID 5

RAID 5是针对RAID 4的优化,由于RAID 4使用单块磁盘作为校验盘,所以性能相对受限,并且故障率高,所以RAID 5就对校验数据进行了分布式的存放,多个盘轮流当校验盘,减轻了校验盘的压力。其架构如图2.4.1:


图 2.4.1

其中,校验数据PA、PB、PC分别存在于三块磁盘,三块磁盘轮流当校验盘,在将校验压力分散的同事,也保证了数据读写效率和低故障率。RAID 5是目前家用存储3-5盘场景中使用最多的一个RAID级别,能够在保证数据安全的同时,提升数据读写效率,并且方案使用性价比较高。

RAID 5档案:
磁盘数量:>=3
容量计算:最小硬盘容量*(硬盘个数-1)
优点:读写性能提升、容错能力提升
缺点:暂未发现
磁盘容错:1

5、RAID 6

RAID 6的编码方式有很多种,有Park编码,有ZZS编码,有X-Code编码也有基于RAID 5升级的P+Q双校验方式。本文主要介绍的,是最后一种,P+Q双校验。在RAID 5中,只有一种数据校验,磁盘容错为1。在较少磁盘组成的阵列,以及方案成本受限的情形中,性价比较高,但是对于较多磁盘组成的阵列,容错率还是偏低。所以RAID 6应运而生,它除了采用RAID 5的异或校验以外,还增加了一个“Q”校验位,其架构如图2.5.1:


图 2.5.1

Q校验使用基于伽罗华域(Galois Field,GF)的里德-所罗门(Reed-Solomon)编码计算得出,即Q0=GF(D0)⊕GF(D1)、Q1=GF(D2)⊕GF(D3),其中GF(D0)的含义是对D0进行伽罗华域的里德-所罗门编码变换,P+Q双校验RAID-6在两块成员盘离线的情况下依然能够得到完整数据,缺点是至少需要4块磁盘,并且需要两块磁盘的空间存放校验数据。RAID 6大多用于4-8盘位的家庭存储,以及对数据较为敏感的应用使用,和RAID 5相比,多牺牲1块盘的空间,换来多1快盘的容错。

RAID 6档案:
磁盘数量:>=4
容量计算:最小硬盘容量*(硬盘个数-2)
优点:读写性能提升、容错能力提升
缺点:暂未发现
磁盘容错:1

6、RAID 组合

在日常和工作使用中,以上几个RAID级别已经完全可以满足客户的大部分需求,但是对于数据中心存储来说,单使用某个级别,还无法达到安全与效率并行的要求。打个比方,某个存储设备有100块磁盘,如果按较为安全的RAID 6来组成磁盘阵列,那100块磁盘里面,最多只能同时坏2块,容错率还是太低。所以,就出现了RAID 组合的形式,如RAID 10、RAID 50、RAID 60,凡是有两个数字的RAID级别,都是组合级别(就目前来讲)。下面我们就以较为常用的RAID 60来说说,其架构如图2.6.1:


图 2.6.1

RAID 60由至少8块磁盘组成,先组合成RAID 6,再由各RAID 6组合成RAID 0,既可以组成大容量高效率的磁盘阵列,又可以拥有双数据校验的安全性。当然,每个RAID 6中的磁盘数量是可以改变的,大于等于4块就可以,由应用的安全级别来定。若按图2.6.1的方式组合,100块磁盘的存储设备,容错磁盘为2-50块,容错率大大提高,但是可利用数据盘的数量,也只有50块,因为每个RAID 6组合,都要拿出两块磁盘的容量存放校验数据。其余的RAID组合也类似,没有最优解,只有最合适,根据应用重要程度,来选择RAID组合,以及每个组合中磁盘的梳理,才是正解。

7、JBOD

JBOD并不是标准的RAID级别,但也属于磁盘阵列的一种。它跟RAID 0类似,都是使用几块磁盘进行组合,形成一个大容量的逻辑盘。跟RAID 0不同的是,JBOD属于串联模式,当一个磁盘写满了,才去写第二个磁盘;RAID 0属于并联模式,将数据分块,多磁盘同时写入。在读写效率上,JBOD依赖于单磁盘的性能,而RAID 0可以依靠多磁盘性能。JBOD的架构如图2.7.1:


图 2.7.1

JBOD的读/写性能完全等同于对单一物理盘的存取操作,同时JBOD也不提供数据安全保障,因为它没有任何冗余,它只是提供一种简单的利用磁盘空间的方法。JBOD的逻辑盘容量等于组成JBOD的所有物理盘的容量总和,目前使用场景较少。

三、RAID的实现方式

RAID的实现方式主要有两种,软件实现RAID和硬件实现RAID。

1、软件实现RAID的方式和优缺点

软件实现RAID主要是依赖系统自带软件或第三方软件来创建磁盘阵列,比如Linux中的mdadm(multiple devices admin)工具及Windows中的磁盘管理工具。既然是软件,那无可厚非的就需要消耗系统资源,并且只能在系统安装之后进行磁盘阵列的创建,即无法对系统盘进行保护,碰到系统盘故障或系统崩溃,数据就会存在丢失的风险。当然这种方式也不是全无优点,最大的好处就是免费,并且简单直观。概括如下:

RAID软件实现:
方式:通过软件进行磁盘阵列的创建
优点:成本低廉、简单直观
缺点:影响系统性能、数据保护不全面
场景:可用于教学、实验,及RAID 0使用的场景

2、硬件实现RAID的方式和优缺点

硬件实现RAID的方式,就是将RAID控制器集成到主板上,或使用外部硬件RAID控制器,也就是我们常说的“RAID卡”。使用硬件方式实现RAID的好处,就是可以在创建系统前创建磁盘阵列,将系统一块保护在内,并且由于是外置硬件,所以不会影响到系统性功能。当然,由于是新增硬件,实现方式略贵。概括如下:

RAID硬件实现:
方式:通过集成主板,或外置RAID控制器进行磁盘阵列的创建
优点:安全性高、不影响系统性能
缺点:费用较高,配置不够直观和灵活
场景:业务服务器、存储设备等追求安全和效率的场景

四、总结

综上,RAID是一种非常成熟的技术,已经在数据中心普遍使用,但是对于普通用户接触较少。随着家庭存储及中小型存储的普及,对RAID技术和RAID阵列的理解需逐步宣贯,以便更多的人以及中小企业能够根据自身的实际情况,选择相应的RAID级别,更好地对个人数据以及业务数据进行保护。

参考文献

[1]林静.RAID技术实现方法和RAID阵列[J].信息与电脑,2018(17):106.
[2]王志昌.计算机RAID存储技术解析[J].中国科教创新导刊,2010(8):162.