版权声明: 付费作品,禁止转载
前言
提到冗余保护,最容易想到的就是RAID(Redundant Arrays of Independent Disks) , 独立冗余磁盘阵列。它是一种把多块独立的物理硬盘按不同方式组合形成一个硬盘组,以此提供比单个硬盘更高的存储性能和数据冗余的技术。该技术在服务器和存储阵列产品中广泛应用。服务器为啥要做磁盘阵列呢?主要有两个作用:提供容错功能, 提高传输速率、可靠性、可管理性
SSD因为更快的速写速度而逐渐取代磁盘,但SSD也有固有缺陷,比如1 bit error,因为对存储系统容错性要求高;bit error比较好理解,SSD由很多很小的颗粒组成,万一其中某个TLC、QLC材质的物理页失效了呢,因而SSD对容错性要求很高。解决bit error方法之一就是引入RAID5,RAID5有一个校验盘,能恢复一块出错盘。 [2]
近年来,随着固态硬盘的使用率上升,提升固态硬盘的性能和可靠性(包括寿命)一直是行业攻关的重点。RAID技术在固态硬盘内已经得到了广泛应用。关键数据多副本,可以看作是RAID1保护,用户数据更常见的则是使用性价比较高的RAID5。具体使用什么RAID级别,一般是根据实际情况进行选择。DapuStor的HaiShen系列产品就使用RAID5技术为用户数据提供冗余保护,提升可靠性。这里,我们就将盘内RAID1、RAID5技术做一个简单介绍。
RAID 概述
1988 年美国加州大学伯克利分校的 D. A. Patterson 教授等首次在论文 “A Case of Redundant Array of Inexpensive Disks” 中提出了 RAID 概念。
RAID 这种设计思想很快被业界接纳, RAID 技术作为高性能、高可靠的存储技术,已经得到了非常广泛的应用。 RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力和扩展性,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。实际应用领域中使用最多的 RAID 等级是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。
从实现角度看, RAID 主要分为软 RAID、硬 RAID 以及软硬混合 RAID 三种。软 RAID 所有功能均有操作系统和 CPU 来完成,没有独立的 RAID 控制 / 处理芯片和 I/O 处理芯片,效率自然最低。硬 RAID 配备了专门的 RAID 控制 / 处理芯片和 I/O 处理芯片以及阵列缓冲,不占用 CPU 资源,但成本很高。软硬混合 RAID 具备 RAID 控制 / 处理芯片,但缺乏 I/O 处理芯片,需要 CPU 和驱动程序来完成,性能和成本 在软 RAID 和硬 RAID 之间。
RAID 每一个等级代表一种实现方法和技术,等级之间并无高低之分。在实际应用中,应当根据用户的数据应用特点,综合考虑可用性、性能和成本来选择合适的 RAID 等级,以及具体的实现方式。[4]
基本原理
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。
RAID 的两个关键目标是提高数据可靠性和 I/O 性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。。在这样的冗余机制下,可以用新磁盘替换故障磁盘, RAID 会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在 RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合 I/O 带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如, RAID1 存储空间利用率仅有 50% , RAID5 会损失其中一个磁盘的存储容量,空间利用率为 (n-1)/n 。
RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity ) 。
镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。
数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。
数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。
至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。
盘内RAID 技术原理
3.1 RAID 1 原理
RAID 1通过1:1备份实现数据冗余,在成对的独立磁盘上产生备份的数据。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。[3]
3.2 RAID 5原理
数据按条带分布在不同位置,比如图中A1~Ap是一个条带,B1~Bp是另一个条带,每个条带中的一份数据(比如A1)叫做条带单元。每个条带有一份校验数据(比如Ap),所以我们一般也称它为N+1的RAID组。RAID5校验计算通常采用异或(XOR)算法。现在很多主控也提供RAID5计算的硬件加速功能。
4. 盘内RAID5条带布局
为了保证任意时候,一个Block或者DIE损坏,不会导致数据丢失。一个RAID5条带中的每个条带单元最好是来自不同的Block和不同的DIE。这种我们一般称为DIE级别的RAID冗余。跟上图对应,比如A1数据在DIE 1的某个Block,A2数据在DIE2的某个Block。最直观的组条带方式就是每个DIE各选一个Block,然后每个Block的相同Page组成一个条带。各个Block的Page组成RAID5条带有下面几种常见布局:
4.1 固定DIE的布局
在组成一个RAID组的Block中,使用一个固定DIE的Block存储校验(类似传统的RAID3),但是组成不同RAID组的Block可以不同。
4.2旋转布局
组成一个RAID组的Block中,校验不固定在某个Block上,而是有规律的旋转变化(RAID5的旋转布局有多种方式,此处只列举了一种)。
不同的数据布局,会产生不同的盘内数据布局。最直观的,顺序写后,顺序读,各个DIE或者Block上的压力模型,在前面提到两种布局下是不同的。
5. RAID5数据恢复
如果Host 读某个Nand Page发生UNC(UNCorrectable)错误,这时RAID5恢复的原理是读这个条带内其他数据和校验数据,进行计算,得到期望的数据。
盘内RAID的异常处理
RAID5的数据恢复依赖分条的完整性,因为故障可能发生在任何阶段,所以数据恢复前必须判断出校验的有效性,避免恢复出错误数据。
典型场景1:某个Nand Block故障时,这个Block已经在一个写完成的条带上,此时RAID其实处于降级状态,较优的想法是把相关条带的数据重新放到一个健康的条带或者重建出故障Block的数据来替换它。
典型场景2:某个Nand Block 故障时,此时还没有数据写入,尽量把它从RAID组的Block中剔除,选一个健康的Block替换或者让当前RAID组从N+1保护转换成(N-1)+1。
典型场景3:一个条带单元的数据写入Nand 过程中发生了Program fail,同时另一个位置的读又遇到UNC,这些场景在DapuStor的HaiShen系列产品中都有专门处理,保障可以恢复出正确数据。
因为错误可能发生在任何时刻,所以其他场景这里就不一一列举。
6. RAID带来的影响
6.1 OP(Over Provisioning)空间降低
引入RAID后,有的Nand空间用于存储校验数据,间接导致用户数据的可用OP空间降低,
6.2 WA(Write Amplification)变大
因为每个条带额外写入了一份校验数据,所以整个生命周期的WA会增大。
6.3性能影响
前面两点提到的OP变小,写放大变大,其实最终也都会表现成对性能的影响。另外,一个直观感受是顺序写和读的过程,因为每个条带都有一个DIE没有提供给Host IO服务,所以性能也必定会有影响。
7. 盘内冗余技术发展
RAID5为用户数据提供了N+1级别的冗余保护。随着盘内功能增强,业务对盘内可靠性要求的提高,不同成本和可靠性定位的用户可能会需要不同冗余保护的级别。技术上还有一些更高级别的冗余保护:
7.1 RAID6
相比RAID5的N+1,它提供了N+2的保护。对应在SSD产品中,它当然也会带来更大的OP损耗。
7.2. EC(Erasure Coding)
现在分布式存储时代,多备份和EC相比传统RAID是更广泛的应用。EC算法提供了N+M的保护级别,可以有更广阔的选择空间。
原文出处(有删改):
微信公众号:大普微, 固态硬盘内RAID5技术, https://www.elecfans.com/d/1308406.html
参考:
[1] 【微信公众号:大普微】, 固态硬盘内RAID5技术, https://www.elecfans.com/d/1308406.html
[2] cherry_hust,SSD+RAID优点以及存在问题, https://blog.csdn.net/cherry_hust/article/details/70209243
[3]raid1 raid2 raid5 raid6 raid10如何选择使用, https://it.sohu.com/a/562870781_121124365
[4] http://www.hack520.com/169.html