独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks),简称磁盘阵列。利用虚拟化储存技术把多个硬碟组合起来,成为一个或多个硬碟阵列组,目的为提升效能或资料冗馀,或是两者同时提升。
“RAID”的各地常用名称 | |
---|---|
中国大陆 | 独立硬盘冗余阵列 |
台湾 | 容错式磁碟阵列 |
港澳 | 独立磁碟冗馀阵列 |
在运作中,取决于 RAID 层级不同,资料会以多种模式分散于各个硬碟,RAID 层级的命名会以 RAID 开头并带数字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每种等级都有其理论上的优缺点,不同的等级在两个目标间取得平衡,分别是增加资料可靠性以及增加存储器(群)读写效能。
简单来说,RAID把多个硬碟组合成为一个逻辑硬碟,因此,作业系统只会把它当作一个实体硬碟。RAID常被用在伺服器电脑上,并且常使用完全相同的硬碟作为组合。由于硬碟价格的不断下降与RAID功能更加有效地与主机板整合,它也成为普通用户的一个选择,特别是需要大容量储存空间的工作,如:视讯与音讯制作。
磁碟阵列比较表
RAID等级 | 最少硬碟 | 最大容错 | 可用容量 | 读取效能 | 写入效能 | 安全性 | 目的 | 应用产业 |
---|---|---|---|---|---|---|---|---|
单一硬碟 | (参考) | 0 | 1 | 1 | 1 | 无 | ||
JBOD | 1 | 0 | n | 1 | 1 | 无(同RAID 0) | 增加容量 | 个人(暂时)储存备份 |
0 | 2 | 0 | n | n | n | 一个硬碟异常,全部资料都会异常 | 追求最大容量、速度 | 影片剪接快取用途 |
1 | 2 | n-1 | 1 | n | 1 | 高,一个正常即可 | 追求最大安全性 | 个人、企业备份 |
5 | 3 | 1 | n-1 | n-1 | n-1 | 中下至中 | 追求最大容量、最小预算 | 个人、小型企业备份 |
6 | 4 | 2 | n-2 | n-2 | n-2 | 中至中高,仅安全性较RAID 5高 | 同RAID 5,但较安全 | 个人、企业备份 |
10 | 4 | 高 | 综合RAID 0/1优点,理论速度较快 | 大型资料库、伺服器 | ||||
50 | 6 | 高 | 提升资料安全 | |||||
60 | 8 | 高 | 提升资料安全 |
1. n代表硬碟总数
2. JBOD(Just a Bunch Of Disks)指将数个物理硬碟,在操作系统中合并成一个逻辑硬碟,以直接增加容量
3.依不同 RAID 厂商实作演算法对于效能表现会有不同,效能公式仅供参考
4.RAID 10、50、60 依实作 Parity 不同公式也不同
标准RAID
RAID 0亦称为带区卷。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散储存在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失,危险程度与JBOD相当。
两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,与RAID 0相同。另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁碟做RAID 1,仅算一个磁碟的容量,是所有RAID中磁盘利用率最低的一个级别。
如果用两个不同大小的磁碟建RAID 1,可用空间为较小的那个磁碟,较大的磁碟多出来的空间也可以分割成一个区来使用,不会造成浪费。
RAID 1没有校验机制。用两个磁盘组成RAID 1阵列,如果两个硬盘上的数据出现差异,RAID 1会不知道该相信哪一个硬盘,这种情形称作大脑分裂。事实上,RAID 1的磁盘数量越多,越有可能其中某个磁盘的数据变得不一致(但仍然工作),RAID 1只会从第一个工作的硬盘里提供数据,没有办法检测到底哪个硬盘的数据不对。[1]
这是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。因为在数据中加入错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些。
RAID 2最少要三台磁碟机方能运作。
采用Bit-interleaving(数据交错储存)技术,它需要通过编码再将数据位元分割后分别存在硬盘中,而将相同位元检查后单独存在一个硬盘中,但由于数据内的位元分散在不同的硬盘上,因此就算要读取一小段数据资料都可能需要所有的硬盘进行工作,所以这种规格比较适于读取大量数据时使用。
采用块交织技术(Block interleaving)。它与RAID 3不同的是它在分割时是以区块为单位分别存在硬盘中,但每次的数据存取都必须从同位元检查的那个硬盘中取出对应的同位元数据进行核对,由于过于频繁的使用,所以对硬盘的损耗可能会提高。
此章节的准确性有争议。 |
RAID 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分割)技术。
RAID 5使用“奇偶校验位”。与 RAID 4 一样,有效大小是 N-1 个磁盘的大小。 然而,由于奇偶校验信息也在 N 个驱动器之间均匀分布,因此避免了每次写入都必须更新奇偶校验磁盘的瓶颈。防止单个磁盘故障,而且访问速度快[2]。
RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID 5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写快取”可以让效能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。
冗余磁盘阵列在最可能发生的单个磁盘故障情况下提供保护,在这种情况下,单个磁盘只是停止工作。这消除了构建大型 EIDE(增强型IDE) 磁盘阵列的主要障碍。
RAID-5 并不能完全防止其他类型的磁盘故障。 RAID-5 将在单个磁盘停止工作但导致整个 EIDE 总线发生故障(或整个 EIDE 控制器卡发生故障)但只是暂时停止运行的情况下提供有限的保护。这将暂时禁用整个 RAID-5 阵列。如果更换坏盘解决了问题,即故障没有永久损坏其他磁盘上的数据,那么 RAID-5 阵列将正常恢复。 相似的如果只是控制器卡损坏,则更换它将使 RAID-5 阵列正常恢复。 但是,如果不止一个磁盘损坏,尤其是文件或目录结构信息损坏,整个 RAID-5 阵列就会损坏。 剩余的故障模式是磁盘正在传送损坏的数据。 RAID-5 没有对此固有的保护;但是,可以在事件标头中内置对数据的纵向奇偶校验,例如校验和记录计数 (CRC),以标记问题。
与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID 6通常不会通过软件方式来实现,而更可能通过硬件方式实现。
同一阵列中最多容许两个磁盘损坏。更换新磁盘后,资料将会重新算出并写入新的磁盘中。
依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。可使用的容量为硬盘总数减去2的差,乘以最小容量,公式为:
同理,数据保护区域容量则为最小容量乘以2。
RAID 6在硬体磁碟阵列卡的功能中,也是最常见的磁碟阵列等级。
Storage Networking Industry Association (SNIA)对于RAID 6的定义是:"在任意两块磁盘同时失效的情况下,仍然能够对RAID中的所有虚拟磁盘执行读写操作的RAID实现。迄今已经有:(奇偶和里德-所罗门)双校验、正交双奇偶校验和对角奇偶校验等若干方法用于实现RAID 6。"[3]
为了达到容忍任意两块磁盘失效的目的,需要计算两种不同的综合解码。其中之一是P,可以象RAID 5那样经过简单的异或计算获得,而另一个不同的综合编码则比较复杂,需要利用域论来解决。
要解决这个问题,需要引入一个的伽罗瓦域,对于一个合适的k次不可约多项式,。一块数据可以二进制形式记作,其中是 0 或者 1,对应着伽罗瓦域中的元素。令对应磁盘条带中的数据,以这种方式编码成域中的元素(实际上可能会切分成字节大小的块)。如果是域的某个生成元,且 表示域中的加法、并列表示域中的乘法的话,则 和 的计算可以表示为( 表示数据磁盘的编号):
对于计算机科学知识背景的人士,比较容易理解的方法是把 看作是异或运算、把 看作对一块数据进行线性反馈移位寄存器操作的结果。于是上述公式[4]中P的计算就是对每个条带进行异或。这是因为对于任何二阶有限域而言,加法其实就是异或。Q的计算则是对每个条带进行移位运算之后的结果进行异或。
如果一块数据磁盘失效了,数据可以同 RAID 5 一样重新计算出来。如果两块数据磁盘或者一块数据磁盘和一块包含P的磁盘失效了,数据可以通过P 和 Q(或者仅通过 Q)通过更加复杂的过程重新计算出来,计算的过程需要用到域论,非常复杂。而如果 和 () 两块数据盘丢失了,使用 的其他信息可以求出 和 ,而 和 :
把 的等式的两端同时乘以 ,并加到前面的等式中就可以得到 ,就可以求出 , 进一步就可以求出。
与计算 P 相比,对 Q 的计算要更加消耗CPU。所以软件方式实现的 RAID 6 对于系统性能会有明显的影响,而硬件方案则相对复杂。
混合RAID
JBOD(Just a Bunch Of Disks)在分类上,JBOD并不是RAID的等级。由于并没有规范,市场上有两类主流的做法
- 使用单独的连结端口如SATA、USB或1394同时控制多个各别独立的硬碟,使用这种模式通常是较高阶的设备,还具备有RAID的功能,不需要依靠JBOD达到合并逻辑磁区的目的。
- 只是将多个硬碟空间合并成一个大的逻辑硬碟,没有错误备援机制。
资料的存放机制是由第一颗硬碟开始依序往后存放,即作业系统看到的是一个大硬碟(由许多小硬碟组成的)。但如果硬碟损毁,则该颗硬碟上的所有数据将无法救回。若第一颗硬碟损坏,通常无法作救援(因为大部分档案系统将磁碟分割表(partition table)存在磁碟前端,即第一颗),失去磁碟分割表即失去一切数据,若遭遇磁碟阵列资料或硬碟出错的状况,危险程度较RAID 0更剧。它的好处是不会像RAID 0,每次存取都要读写全部硬碟。但在部分的JBOD数据恢复实践中,可以恢复未损毁之硬碟上的数据。同时,因为每次读写操作只作用于单一硬碟,JBOD的传输速率与I/O表现均与单颗硬碟无异。
RAID 7并非公开的RAID标准,而是Storage Computer Corporation的专利硬体产品名称,RAID 7是以RAID 3及RAID 4为基础所发展,但是经过强化以解决原来的一些限制。另外,在实作中使用大量的快取记忆体以及用以实现非同步阵列管理的专用即时处理器,使得RAID 7可以同时处理大量的IO要求,所以效能甚至超越了许多其他RAID标准的实作产品。但也因为如此,在价格方面非常的高昂。[5]
RAID 10是先做镜像卷RAID 1 将所有硬碟分为两组,再做RAID 0 执行条带化操作分割数据 ,视为以RAID 1作为最低组合,然后将每组RAID 1视为一个“硬盘”组合为RAID 0运作。
RAID 01则是跟RAID 10的程序相反,是先将数据分割。再做镜像卷RAID 1 它将所有的硬碟分为两组,每组各自构成为RAID 0作为最低组合,而将两组硬碟组合为RAID 1运作。
当RAID 10有一个硬碟受损,其馀硬碟会继续运作。RAID 01只要有一个硬碟受损,同组RAID 0的所有硬碟都会停止运作,只剩下其他组的硬碟运作,可靠性较低。如果以六个硬碟建RAID 01,镜像再用三个建RAID 0,那么坏一个硬碟便会有三个硬碟离线。因此,RAID 10远较RAID 01常用,零售主机板绝大部份支援RAID 0/1/5/10,但不支援RAID 01。
RAID 5与RAID 0的组合,先作RAID 5,再作RAID 0,也就是对多组RAID 5彼此构成Stripe存取。由于RAID 50是以RAID 5为基础,而RAID 5至少需要3颗硬碟,因此要以多组RAID 5构成RAID 50,至少需要6颗硬碟。以RAID 50最小的6颗硬碟组态为例,先把6颗硬碟分为2组,每组3颗构成RAID 5,如此就得到两组RAID 5,然后再把两组RAID 5构成RAID 0。
RAID 50在底层的任一组或多组RAID 5中出现1颗硬碟损坏时,仍能维持运作,不过如果任一组RAID 5中出现2颗或2颗以上硬碟损毁,整组RAID 50就会失效。
RAID 50由于在上层把多组RAID 5构成Stripe,效能比起单纯的RAID 5高,容量利用率比RAID5要低。比如同样使用9颗硬碟,由各3颗RAID 5再组成RAID 0的RAID 50,每组RAID 5浪费一颗硬碟,利用率为(1-3/9),RAID 5则为(1-1/9)。
它拥有一个镜像条带阵列,硬碟里其中一个条带就是一个是由3组以上的RAID 5组成RAID 3硬碟阵列。
RAID 6与RAID 0的组合:先作RAID 6,再作RAID 0。换句话说,就是对两组以上的RAID 6作Stripe存取。RAID 6至少需具备4颗硬碟,所以RAID 60的最小需求是8颗硬碟。
由于底层是以RAID 6组成,所以RAID 60可以容许任一组RAID 6中损毁最多2颗硬碟,而系统仍能维持运作;不过只要底层任一组RAID 6中损毁3颗硬碟,整组RAID 60就会失效,当然这种情况的机率相当低。
比起单纯的RAID 6,RAID 60的上层透过结合多组RAID 6构成Stripe存取,因此效能较高。不过使用门槛高,而且容量利用率低是较大的问题。
实现方式
根据实现模式,分为软件和硬件两种:[6]
- 软体磁碟阵列(Software RAID):
- 主要由CPU处理阵列储存作业,缺点为耗损较多CPU资源运算RAID,优点则是价格低(若用作业系统的RAID功能,则无需额外花费)。
- 硬体辅助磁碟阵列(Hardware-Assisted RAID):需要一张基于Fake RAID(伪RAID)的RAID卡,以及厂商所提供的驱动程式,但此类RAID卡仍然借助CPU进行运算。此类RAID卡的阵列较易迁移到其他电脑,其RAID功能靠执行于作业系统的厂商驱动程式和CPU运算提供。
- 作业系统的RAID功能:如Linux、FreeBSD、Windows Server等作业系统内建RAID功能。
- Windows10内建的磁碟管理有五种模式:
- 简单磁碟区:独立运作的基本分割区。若PC上只有一个物理磁碟,那么只能创建简单磁碟区。
- 跨距磁碟区(跨区卷):将不同物理磁碟的多个未配置空间合并为一个逻辑磁区。资料的存放机制是由第一颗硬碟开始依序往后存放,作业系统会视为一个硬碟。如果任一个物理硬碟损毁,则该逻辑磁区上的所有资料将无法救回。
- 等量磁碟区(带区卷):由两个或多个物理磁碟的相同容量空间组成。资料分布在多个物理磁碟中,可以提高效能。
- 镜像磁碟区:将两个或多个物理磁碟中创建完全相同的资料副本,即使其中一个物理硬碟损坏,资料仍然可以从其他冗馀副本中获取,具有容错空间。若物理磁碟容量大小不同,实际可用空间将等于最小的物理磁碟。
- RAID-5磁碟区:最大可支援9.4ZB的硬碟容量,最多可创建128个分割区。
- 硬体磁碟阵列(Hardware RAID)
-
- 基于主机板的磁碟阵列:只需要主机板支援即可(通常是晶片组内建的RAID功能,如Intel Matrix RAID,后来变为Intel Rapid Storage Technology),不需要任何磁碟阵列卡。若主机板损坏,可能难以购买同款主机板重建RAID。
- RAID卡:与Fake RAID卡相比,RAID卡基于片上RAID (ROC, RAID-on-chip),具有独立的CPU资源及独立BIOS。优点是读写效能快,不占用伺服器资源,可用于任何作业系统,也能在系统断电后,透过备份电池模组(BBU, Backup Battery Unit)以及非挥发性记忆体(NVRAM)将硬碟读写日志(Journal)包含的剩馀读写作业先记录在记忆体中,等待电力供应复原后,再由NVRAM取回日志资料,接著再完成读写作业,将剩馀读写作业安全完成以确保读写完整性。备份电池模组通常会配合阵列卡的Write-Back(回写)快取模式,借由此记忆体快取读写作业以得到更高的读写效能;但是没有备份电池模组的硬体磁碟阵列卡若使用Write-Back快取模式,遭遇断电情形会导致读写资料流失。此外,由于硬体磁碟阵列卡配备内建处理器,因此可以与作业系统分离,独立对硬碟进行各种操作。相比于软体磁碟阵列,还原作业的速度更快。然而,其缺点在于售价较高,且性能与价格呈正相关。此外,使用RAID卡还可能因内建的自检程式而导致电脑启动时间增加。
应用
RAID2、3、4较少实际应用,因为RAID0、RAID1、RAID5、RAID6和混合RAID已经涵盖所需的功能,因此RAID2、3、4大多只在研究领域有实作,而实际应用上则以RAID0、RAID1、RAID5、RAID6和混合RAID为主。
RAID4有应用在某些商用机器上,像是NetApp公司设计的NAS系统就是使用RAID4的设计概念。
以下是RAID的一些应用场景:
参考文献
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.