RAID 详解
RAID 定义
定义
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。利用虚拟化存储技术把多个硬盘组合起来,成为一个或多个硬盘阵列组,目的为提升性能或数据冗余,或是两者同时提升。
来源
加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。
RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。
常用的是RAID0、RAID1、RAID5、RAID10,其他RAID类型属于少用。
RAID 分类介绍
RAID0
原理:又称Stripe/Striping(分条),如上图,将两个以上磁盘并联,组成一个大容量磁盘。
优点:存放数据时,读写都可分段并行处理,因此速度最快;
缺点:但无冗余功能,不具备容错性,一个磁盘损坏所有数据丢失;
RAID1
原理:又称为Mirror或Mirroring(镜像),如上图,两组以上的磁盘互作镜像。
优点:读取速度理论double于硬盘数,所有RAID中数据安全性最高;
缺点:写入速度稍微降低,磁盘利用率最低;
RAID5
一种存储性能、数据安全、存储成本兼顾的存储解决方案;
原理:如上图,使用Disk Striping(硬盘分割)技术;把数据和相对应的奇偶校验(见备注1)信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
优缺点:RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜;
可用容量:
RAID10
原理:先分割数据再镜像,再将所有硬盘分为两组,视为以RAID 1作为最低组合,然后将每组RAID 1视为一个“硬盘”组合为RAID 0运作;
优点:结合RAID0、RAID1优点;
缺点:磁盘利用率低只有50%;
其他RAID
RAID2
原理:RAID0改良版;如上图,以汉明码(Hamming Code)方式将数据进行编码后分割为独立的比特,并将数据分别写入磁盘中。在数据中加入错误修正码(ECC,Error Correction Code),数据整体容量比原始数据大;(汉明码只能发现和修正一位错误,对于两位或者两位以上的错误无法正确和发现)至少要三台磁盘驱动器;
优点:加入了数据纠错机制
缺点:成本增高,需要额外的盘做汉明码纠错
RAID3
原理:采用Bit-interleaving(数据交错存储)技术,它需要通过编码再将数据比特分割后分别存在硬盘中,而将同比特检查后单独存在一个硬盘中,但由于数据内的比特分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用;
RAID4
原理:与RAID 3不同的是它在分割时是以区块为单位分别存在硬盘中,但每次的数据访问都必须从同比特检查的那个硬盘中取出对应的同比特数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。(块交织技术,Block interleaving)
RAID6
原理:与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID 6通常不会通过软件方式来实现,而更可能通过硬件方式实现。
同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。
可用容量:
其他
JBOD(Just a Bunch Of Disks)在分类上,JBOD并不是RAID的等级。由于并没有规范,市场上有两类主流的做法
-
使用单独的链接端口如SATA、USB或1394同时控制多个各别独立的硬盘,使用这种模式通常是较高端的设备,还具备有RAID的功能,不需要依靠JBOD达到合并逻辑扇区的目的。
-
只是将多个硬盘空间合并成一个大的逻辑硬盘,没有错误备援机制。
数据的存放机制是由第一颗硬盘开始依序往后存放,即操作系统看到的是一个大硬盘(由许多小硬盘组成的)。但如果硬盘损毁,则该颗硬盘上的所有数据将无法救回。若第一颗硬盘损坏,通常无法作救援(因为大部分文件系统将磁盘分割表(partition table)存在磁盘前端,即第一颗),失去磁盘分割表即失去一切数据,若遭遇磁盘阵列数据或硬盘出错的状况,危险程度较RAID 0更剧。它的好处是不会像RAID 0,每次访问都要读写全部硬盘。但在部分的JBOD数据恢复实践中,可以恢复未损毁之硬盘上的数据。同时,因为每次读写操作只作用于单一硬盘,JBOD的传输速率与I/O表现均与单颗硬盘无异。
使用场景
零售主板绝大部分支持RAID 0/1/5/10
系统盘:RAID1、RAID5
数据盘:RAID0(依赖基础系统提供数据冗余)
类型查询
megacli -LDInfo -Lall -aALL //查raid级别
备注
1、奇偶校验块
一些冗余磁盘阵列(RAID)使用奇偶校验块实现冗余。如果阵列中的一块磁盘出现故障,工作磁盘中的数据块与奇偶校验块一起来重建丢失的数据。
下面的图表每列表示一个磁盘,假设A1 = 00000111、A2 = 00000101以及A3 = 00000000。A1、A2、A3 异或得到的Ap等于00000010。如果第二个磁盘出现故障,A2将不能被访问,但是可以通过A1、A3与Ap的异或进行重建:
A1 XOR A3 XOR Ap = 00000101
冗余磁盘阵列
A1 A2 A3
Ap B1 B2
Bp C1 C2
C3 C4 Cp
注意:数据块是格式A#,奇偶校验块是Ap。
参考
https://zh.wikipedia.org/wiki/RAID
https://developer.aliyun.com/article/586759
https://zhuanlan.zhihu.com/p/119452913