随着技术的发展,越来越多的存储系统问世,不论是集中或者分布式的SAN、NAS还是对象存储,在各家存储厂商宣传自己存储的众多特性时,可靠性绝对是稳稳的排在第一位,同时这也是作为一个存储系统来说,最为基础的要求。
所谓的存储系统高可靠,在我理解主要有两点,第一点数据的可靠性,也就是数据不丢;另外一点就是存储系统的可用性,也就是数据可访问。为了实现存储系统的11个9的高可靠性,各个厂家在设计的时候有了各个方面的考虑,在磁盘级别,采用更为稳定的企业级sas盘;同时配合RAID技术来做到磁盘级别的冗余,实现不同级别的数据冗余和读写能力;在控制器级别,也有单、双控制器的设计,实现控制器级别的冗余;在设备级别,也会有N+1亦或是N+0的设备冗余;再往大说还有跨机房、乃至跨地域的冗余方案。
今天简单介绍一下磁盘级别的数据冗余技——RAID技术,RAID(Redundant Array of Independent Disks)即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说,RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。通过RAID技术,系统不但可以得到更大空间的‘磁盘’,同时在该‘磁盘’相对更可靠了,读写性能也大大增加了。
RAID 主要利用数据条带、镜像和数据校验技术来获取高性能、可靠性、容错能力,根据运用或组合运用这三种技术的策略和架构,可以把 RAID 分为不同的等级,以满足不同数据应用的需求。RAID等级没有高低之分,在不同的应用场景中,往往是在磁盘利用率、冗余性以及读写性能综合考虑后选择对应的RAID级别。
下面介绍一下不同的主流RAID技术之间的区别
RAID0
首先RAID0并没有冗余能力,可以简单的理解为他把所有的磁盘通过条带化组成的一个大硬盘,数据因此也实现了并发读写,成倍地提高了读写IO性能,同时磁盘利用率也达到了100%,但是由于没有丝毫的冗余能力,一旦阵列中出现磁盘损坏,数据将无法恢复,通常适用于一些对数据安全不太高但是对读写速度要求较高的场所。
RAID1
RAID1和RAID0恰恰相反,它侧重于数据的安全性,通过完全的镜像来做到数据的完全容错能力,通常也被叫做镜像,但是这也带来了高额的成本,通过下图可以看出磁盘空间利用率仅仅只有50%,是一种高成本的RAID技术,一般应用于对数据保护极为重视的场景,比如服务器的系统盘一般都是由RAID1构成。
RAID3和RAID5
RAID3和RAID5都属于带有检验的并行数据传输阵列,数据条带分布在数据盘中,不同的是RAID3使用专用的校验硬盘存放校验数据,而RAID5校验数据均匀分分布在个数据硬盘上,RAID成员硬盘同时存储数据和校验信息,数据和对应的校验信息保存在不同硬盘中,可以简单理解为RAID5是RAID3的高配升级版本,RAID5也是目前最为主流的RAID技术,它兼顾了磁盘的利用率以及数据的读写性能,是一种性价比很高的RAID技术。
如下图所示,RAID5通过一个校验信息最少需要3块盘组成,同时最多允许一块盘损坏,当一块硬盘损坏别提出阵列的时候,数据重构的过程相当于解一个一元一次方程,数据即可通过校验位和其他数据块重构回来。
RAID6
RAID6相比RAID5来说增加了一个校验位,一共有两个校验位,如果说RAID5掉了一块硬盘,恢复数据是一个解一元一次方程,那么对于RAID6来说就是一个二元一次方程组,这就说明RAID6可以最多允许损坏两块盘,数据安全对于RAID5来说提升了,当然磁盘利用率也稍微下降了一些,主要适用于对RAID5冗余能力还不满意的场景。
此外还有RAID10、RAID01、RAID50等组合等级,实现优势互补,从而达到性能、数据安全性更好,但目前实际使用较多的只有RAID10和RAID01,原因主要还是成本较高,小编也只在高配的服务器的系统盘中见过有默认的RAID10配置。
接着我们通过一个表格总结一下以上各个RAID级别的区别
RAID等级 | RAID0 | RAID1 | RAID3 | RAID5 | RAID6 | RAID10 |
容错冗余能力 | 无 | 高 | 较高 | 较高 | 高 | 高 |
读性能 | 高 | 低 | 高 | 高 | 高 | 高 |
随机写性能 | 高 | 低 | 低 | 一般 | 低 | 一般 |
连续读写性 | 高 | 低 | 低 | 低 | 低 | 一般 |
磁盘利用率 | 100% | 50% | (n-1)/n | (n-1)/n | (n-2)/n | 50% |
最少硬盘数量 | 1 | 2 | 3 | 3 | 4 | 4 |
随着硬盘技术的发展,磁盘厂家推出了单盘容量越来越大的磁盘,这就带来了一个问题,传统RAID技术在阵列降级重构过程中需要花费更多的时间,以RAID5为例,以 7.2K RPM 4TB 磁盘为例,在传统的 RAID5(8D+1P)中,其重构时间在 40 个小时左右。如果在重构过程中,阵列中有另外一块磁盘丢失、损坏从而被踢出阵列,那么这个重构中的阵列就不可用了,这时候只能寄希望于后剔除的磁盘去克隆了,往往这个时候,数据已经在一个非常危险的状态了。同时在重构过程中,重构的io也是占用系统的资源,势必会导致系统的读io性能下降。
那么问题来了,怎么来解决这个问题呢?答案当然是提高重构速度了,传统RAID重构过程通常在同一时刻只会对一块盘(热备盘)进行写操作,重构性能瓶颈受限于此,为了解决这个问题,不同的厂家有不同的解决方案,比较典型有华为的RAID2.0技术,以及DELL EMC的ADAPT技术,以及磁盘级别的EC纠错码。下一期我们再来详细聊聊EC纠删码技术。