概述
RAID,Redundant Array of Independent Disks,独立磁盘冗余阵列,一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术,是目前商用服务器常见的磁盘管理技术。主要是为了改善磁盘的存储容量、读写速度,增强磁盘的可用性和容错能力。目前服务器级别的计算机都支持插入多块磁盘(8块或者更多),通过使用RAID技术,实现数据在多块磁盘上的并发读写和数据备份。基本功能包括数据冗余和性能提升:
- 数据冗余:指把数据的校验信息存放在冗余的磁盘中,在某些磁盘数据损坏时,能从其他未损坏的磁盘中,重新构建数据
- 性能提升:提高传输速率,磁盘阵列将多个磁盘组成一个阵列,当做一个单一的磁盘使用,把数据已分段的形式存储到不同的硬盘之中,发生数据存取变动时,阵列中的相关磁盘一起工作,这就可以大幅的降低数据存储的时间,同时还能拥有更佳的空间和使用率
原理
常用RAID技术有以下几种:
RAID0
假设服务器有N块磁盘:
数据在从内存缓冲区写入磁盘时,根据磁盘数量将数据分成N份,这些数据同时并发写入N块磁盘,使得数据整体写入速度是一块磁盘的N倍,读取时也一样,因此RAID0具有极快的数据读写速度。
优势:提升IO
劣势:不做数据备份没有冗余(错误修复)能力,N块磁盘中只要有一块损坏,数据完整性就被破坏,所有磁盘的数据都会损坏。
计算:2块40G的硬盘做RAID0,可用总容量为累加值,即80G,利用率是100%
RAID1
RAID1这种方案是为解决RAID0的问题,数据在写入磁盘时,将一份数据同时写入两块磁盘,这样任何一块磁盘损坏都不会导致数据丢失,插入一块新磁盘就可以通过复制数据的方式自动修复,具有极高的可靠性。
优势:数据可靠性
劣势:磁盘利用率为50%
RAID3
一般情况下,一台服务器上不会出现同时损坏两块磁盘的情况,在只损坏一块磁盘的情况下,如果能利用其它磁盘的数据恢复损坏磁盘的数据,就能在保证可靠性和性能的同时,大幅提升磁盘利用率。
在数据写入磁盘时,将数据分成N-1份,并发写入N-1块磁盘,并在第N块磁盘记录校验数据,任何一块磁盘损坏(包括校验数据磁盘),都可以利用其它N-1块磁盘的数据修复。
但是在数据修改较多的场景中,任何磁盘修改数据都会导致第N块磁盘重写校验数据,频繁写入的后果是第N块磁盘比其它磁盘容易损坏,需要频繁更换,所以RAID3很少在实践中使用。
RAID5
相比RAID3,更多被使用的方案是RAID5。RAID5和RAID3很相似,但是校验数据不是写入第N块磁盘,而是螺旋式地写入所有磁盘中。这样校验数据的修改也被平均到所有磁盘上,避免RAID3频繁写坏一块磁盘的情况。
至少需要3块硬盘。通用采用4块硬盘,其中有一块硬盘是用来做数据冗余的,如果做RAID5的服务器上有一块硬盘坏掉,那么需要把坏的盘拨下来,然后换上一块新的硬盘,系统会自动进行数据同步。
可用容量:单块磁盘容量 * (n-1)
,n为磁盘数。
安全性能方面,RAID1最高,RAID5次于RAID1。
缺点:只允许单盘故障,一盘出现故障得尽快处理。有盘坏情况下,RAID5 IO/CPU性能狂跌,此时性能烂到无以复加。
建议:盘不多,对数据安全性和性能提示都有要求,RAID5是个不错选择,盘多可考虑RAID10。
RAID6
如果数据需要很高的可靠性,在出现同时损坏两块磁盘的情况下(或者运维管理水平比较落后,坏一块磁盘但是迟迟没有更换,导致又坏一块磁盘),仍然需要修复数据,这时候可以使用RAID6。RAID6和RAID5类似,但是数据只写入N-2块磁盘,并螺旋式地在两块磁盘中写入校验信息(使用不同算法生成)。
至少需要4块硬盘,RAID6是在RAID5的基础上为了加强数据保护而设计的。可允许损坏2块硬盘。
可用容量:
C=(N-2)×D
C=可用容量 N=磁盘数量 D=单个磁盘容量
RAID10
利用奇偶校验实现条带集镜像,结合RAID0和RAID1两种方案,将所有磁盘平均分成两份,数据同时在两份磁盘写入,相当于RAID1,但是在每一份磁盘里面的N/2块磁盘上,利用RAID0技术并发读写,既提高可靠性又改善性能,不过磁盘利用率较低,有一半的磁盘用来写备份数据。
至少需要4块硬盘,是一种高成本、高可靠性、高存储性能的三高阵列技术。
缺点:对盘的数量要求稍高,磁盘使用率为50%。
对比
RAID技术有硬件实现,比如专用的RAID卡或主板直接支持,也可以通过软件实现,在操作系统层面将多块磁盘组成RAID,在逻辑上视作一个访问目录。RAID技术在传统关系数据库及文件系统中应用比较广泛,是改善计算机存储特性的重要手段。
RAID技术只是在单台服务器的多块磁盘上组成阵列,大数据需要更大规模的存储空间和访问速度。将RAID技术原理应用到分布式服务器集群上,就形成Hadoop分布式文件系统HDFS的架构思想。
各级RAID的对比
RAID级别 | 别名 | 容错冗余 | 读性能 | 写性能 | 空间利用率 | 数据可靠性 | 最大能容忍的坏盘数 |
---|---|---|---|---|---|---|---|
RAID0 | 条带 | 无 | 单块盘的N倍 | 单块盘的N倍 | 100% | 很低 | 0 |
RAID1 | 镜像 | 有 | 单块盘的N倍 | 最慢磁盘的性能 | 50% | 很高 | N-1 |
RAID2 | - | - | 不到单块盘的N倍 | 单盘的写入速度 * 校验盘的数量 | 不到100% | 取决于海明纠错码位数 | |
RAID3 | 专用奇偶校验条带 | 有 | 单块盘的N-1倍 | 校验盘的写入速度 | (N-1)/N | 1 | |
RAID4 | - | - | 单块盘的N-1倍 | 校验盘的写入速度 | (N-1)/N | 1 | |
RAID5 | 分布奇偶校验条带 | 有 | 单块盘的N倍 | 略微弱于单块盘的N倍 | (N-1)/N | 较高 | 1 |
RAID6 | 双重奇偶校验条带 | 有 | 单块盘的N倍 | 略微弱于单块盘的N倍,差于RAID5 | (N-2)/N | 较(RAID5)高 | 2 |
RAID10 | 镜像加条带 | 有 | 50% |
实战
容量计算
如果使用物理硬盘容量不相等的硬盘做RAID,创建的RAID阵列的总容量为较小的硬盘的计算方式。
RAID5的存储机制是两块存数据,一块存另外两块硬盘的交易校验结果。RAID5的建立后,坏掉一块硬盘,可以通过另外两块硬盘的数据算出第三块的,所以至少要3块。RAID5是一种旋转奇偶校验独立存取的阵列方式,它与RAID3,RAID4不同的是没有固定的校验盘,而是按某种规则把奇偶校验信息均匀地分布在阵列所属的硬盘上, 所以在每块硬盘上,既有数据信息也有校验信息。这一改变解决争用校验盘的问题,使得在同一组内并发进行多个写操作。所以RAID5既适用于大数据量的操作,也适用于各种事务处理,它是一种快速、大容量和容错分布合理的磁盘阵列。当有N块阵列盘时,用户空间为N-1块盘容量。
3块容量为80G的硬盘做RAID5阵列,其容量为:160G;
2块80G和1块40G的硬盘做RAID5阵列,其容量为:80G
参考
一文详解大规模数据计算处理原理及操作重点