传统RAID技术
RAID概念说明
RAID技术出现的初衷是把多个小容量的硬盘组合起来,以获得更大的存储容量。当前我们所说的RAID技术更多则是与数据保护相关,换言之,当物理设备失效时,RAID能够用来防止数据的丢失。
RAID技术的主要功能:
- 通过对硬盘上的数据进行条带化,实现对数据成块存取,减少硬盘的机械寻道时间,提高了数据存取速度。
- 通过对一阵列中的几块硬盘同时读取(并行访问),减少了硬盘的机械寻道时间,提高了数据存取速度。
- 通过镜像或者存储奇偶校验信息的方式,实现了对数据的冗余保护。
- 随着阵列技术的发展,已经产生了很多不同类型的RAID,但现在只有少数几种RAID仍在使用。在这个章节中,我们将讨论最常用的RAID类型,也会学习RAID的其它相关功能,比数据保护等,同时,选择不同的RAID类型意味着不同的性能/成本。
在存储设备中,可以通过2种方式实现RAID功能:硬件RAID和软件RAID。
- 硬件RAID使用专用的RAID适配器、硬盘控制器或存储处理器。RAID控制器有自己的处理器,I/O处理芯片,和内存,用来提高资源利用率和数据传输速度。RAID控制器管理路由、缓冲区,控制主机与RAID间数据流。硬件RAID通常在服务器中使用。
- 软件实现的RAID没有它自己的处理器或I/O处理芯片,而是完全依赖于主机处理器。因此,低速CPU不能满足RAID实施的要求。软件RAID通常在企业级存储设备上使用。
- 分条宽度
指在一个分条中数据成员盘的个数;
- 分条深度
指一个条带的容量大小。
- RAID技术通常有2种不同的方式进行数据保护。
一种方法是在另一块冗余的硬盘上保存数据的副本。
二是使用奇偶校验算法。奇偶校验码是使用用户数据计算出的额外信息。对于使用奇偶校验的RAID类型,它意味着需要额外的校验硬盘。奇偶校验采用的是异或(XOR的计算符号⊕)算法。
异或算法的输出见下表:
总结来说,RAID技术的优势体现在如下几个方面:
- 把多个硬盘组合成一个逻辑盘组,以提供更大容量的存储。
- 将数据分割成数据块,对多个硬盘并行进行写入/读出,提高硬盘访问速度。
- 通过提供镜像或奇偶校验来提供容错。
热备盘说明
- 当坏盘出现后,服务器会报警,人工可以手动将坏盘替换出来,当插入好盘的时候,RAID控制器会根据XOR,将的三块盘的信息在后台算出来,然后写入新的硬盘。有些RAID控制系统会用NVRAM来存放阵列信息,因此和整列相关的条带化数据也会重新分配到新盘上,这些工作都对用户和应用程序来说都是透明的,用户可能会感受到的就是系统会因为在后台底层进行条带数据的重新分配而带来的服务器响应延迟。
- 当然,如果条件允许,用户也可以强制作重新分配,当然是在维护停机时间内操作。
- 但是由于XOR的限制和RAID 5这个级别的限制,如果连续两个盘出现了问题,呢么整个盘阵中的数据就完蛋了,系统也会不可用。
- 特别是那些无人值守的机房,RAID 5中死掉一个盘,没有关系,如果他们比较倒霉,在管理人员没有更换坏盘的时候,第二个硬盘也死掉了,那麽就都完蛋了。
- Hot-Spare盘就是一个不参与盘阵的,但是加电上线的盘,一点RAID 中的盘出现问题,它都可以自动的替换进入盘阵,你可以把它想象成一个”自动换盘”的概念。
- 硬盘数量的话,就需要多一块,比如raid1需要两块盘,做热备的话就需要3块盘了,但使用的依然是2快,剩下一块随时准备替换使用中的2快中坏了的盘。
RAID0 说明
- 在所有RAID级别中,RAID 0(也被称为条带化RAID)具有最高的存储性能。RAID 0使用条带化技术将数据分布存储在RAID组的所有硬盘中。
- 一个RAID 0包含至少2个成员盘。RAID 0组将数据分为大小不等的从512个字节至兆字节的数据块(通常是512字节的倍数),并行将其写入到不同的硬盘中。如图所示的两个硬盘(驱动器)构成的RAID中:前两块数据被写入到分条0上,其中,第一个数据块被写在硬盘1的条带0上,第二个数据块并行存放在硬盘2的条带0上;这时,再下一个数据块被写到硬盘1上的下一个条带(条带1)上,以此类推。以这种方式,I/O的负载平衡分布在RAID中的所有硬盘上,由于数据传输总线上的速度远大于硬盘读写速度,因此,RAID组上的硬盘可以认为在同时进行读写。
- 一个RAID 0的硬盘组中的硬盘必须具有相同的大小,转速。如果一个RAID0的由4个硬盘组成,则读写速率理论上可达单个硬盘的4倍(实际上可能有系统损耗),容量为单个硬盘的4倍。RAID 0 中硬盘的容量大小不同,可用容量是最小的硬盘的容量的4倍,速度也是最小硬盘速度的4倍。
- RAID 0像是提供了一个单一的大容量的硬盘,还同时具有非常快速I/O的特点。在RAID0技术使用之前,类似RAID 0的一种技术被称为JBOD。一个JBOD(Just a Bundle OfDisks,简称一堆硬盘)是一组硬盘组合成一个虚拟的大硬盘。与RAID 0最大的区别是,一个JBOD的数据块不是同时并行写入不同硬盘的。在JBOD中,只有将第一块硬盘的存储空间使用完,才会使用第二块硬盘。所以JBOD总的可用容量是所有个硬盘容量的总和,但性能是单个硬盘的性能!
- RAID 0 安全相关说明:
- RAID 0是最不安全的,包括跟普通磁盘比较,也不如的。现在大部分硬盘坏的,都是硬故障。也就是磁盘本身问题,根文件没关系。某个文件坏了,不管在RAID几下面,他都是坏的。RAID是提高物理设备,也就是磁盘,的性能或者安全性,与软件,比如文件,没有关系的。一个文件坏了,不影响别的文件,不管是单磁盘还是RAID任何级别的情况下。说RAID几 安全不,都是说硬件,比如有磁盘坏了,数据会不会丢,会不会导致服务器不能工作,等等。这一讨论都是在硬件层上的,硬件坏了,数据文件依然可以完好,只是机器不能工作,就不能读取这些文件了。
- 组建RAID0,所有的文件基本上(注意是基本上,除了很小的文件,具体多小不深入讨论了,越说越多),都是跨磁盘存储的,比如两个磁盘组RAID0,那一个文件就被分称多份,存在不同磁盘上,只有所有磁盘都可读,才能把分开的多份,合并成一个完整文件,操作系统才能识别,这个文件。而普通模式【未做raid】的两个磁盘A和B,每个文件还是单独在要么磁盘A,或者B 上面存的。A盘坏了,B盘文件还是可以读的,不像RAID0文件被分割后分别存储在A和B上,基本上,每次访问文件都得要求读取两块。这样任何一个磁盘坏,两个磁盘上的所有数据都无法访问了,因为即使另一个磁盘好的,但是它上面的数据都是分开的,不是完整的,依赖于另一块磁盘。三块,四块磁盘的RAID0风险就更高了。
- 既然你能创建RAID0,那不想要了,就不创建,删了他,以普通模式工作,很简单,在哪里创建,就在那里删除(一般机器有专门的RAID管理界面,类似BIOS,启动时候按规定的快捷键进入。)没有什么特殊的,备份数据了,就跟对一台新设备操作一样,想怎么设置随便你。
- RAID 0采用条带化技术将数据写入硬盘组中,它将数据分为数据块,并均匀地分布存储在RAID组中的所有硬盘上。只有当RAID组的前一个分条被数据块写满后,数据才会写入到下一个分条。在图中,数据块D0,D1,D2,D3,D4,D5正在等待写入到RAID 0级别的硬盘组。D0将被写入到第一个分条(分条0)的第一块盘(硬盘1)上、D1写到的第一个分条的硬盘2上。以此类推。正是通过条带化并行的方式,将所有数据块写入到RAID 0组。
- RAID 0组的写入性能与硬盘的数量成正比。
- 当RAID 0接收数据读取请求时,它会在所有硬盘上搜索目标数据块并读取数据。在图中,我们可以看到整个读取过程。
- 首先,阵列收到读取数据块D0,D1,D2,D3,D4,D5的请求。接下来,阵列并行从硬盘1读取D0,从硬盘2读取D1,其他数据块也按类似的方式读取。所有的数据块从RAID读取后,他们被集成到RAID控制器,然后发送到主机。
- 同写入数据一样,RAID 0的读取性能与硬盘的数量成正比。
RAID1说明
- RAID 1(也被称为镜像结构的硬盘阵列)旨在建立一个高安全性的RAID级别。RAID1使用2个相同的硬盘系统【raid1只能为2块硬盘】,并设置了镜像。当数据写入到一个硬盘上时,数据的副本会同时存储在镜像硬盘上。当源硬盘(物理)失败时,镜像硬盘从源硬盘接管服务,保证服务的连续性。镜像盘作为备份,提供高数据可靠性。
- 一个RAID 1组存储的数据量只是单个硬盘的容量,另一硬盘保存的是数据的副本,相当于每一G字节的数据存储占用了2G字节的硬盘空间,所以说两个硬盘组成的RAID 1的空间利用率是50%。
- RAID 1的两个硬盘必须具有相同的大小。如果两个硬盘的容量大小不同,可用容量是最小的硬盘的容量。 坏一块盘数据不会丢失,2块同时坏,数据将丢失。
- RAID 0采用条带化技术将不同数据并行写入到硬盘中,而RAID 1则是同时写入相同的数据到每个硬盘,数据在所有成员硬盘中都是相同的。在上图所示,数据块D0,D1和D2,等待写入到硬盘。D0和D0的副本同时写入到两个硬盘中(硬盘1和硬盘2),其他数据块也以相同的方式(镜像)写入到RAID 1硬盘组中。
- 通常来说,一个RAID 1的写性能是单个硬盘的写性能。
- RAID 1读取数据时,会同时读取数据盘和镜像盘,以提高读取性能。如果其中一个硬盘失败,可以从另一个硬盘读取数据。
- RAID 1系统的读取性能等于两个硬盘的性能之和。在RAID组降级的情况下,性能下降一半。
RAID3 说明
- RAID 3与RAID 0类似,不同之处在于RAID 3带有专用的奇偶校验的分条。在RAID 3中,一块专用硬盘(校验盘)用来保存同一分条上其他硬盘上的相应的条带中的数据的奇偶校验值。如果检测到不正确的数据或硬盘出现故障,我们可以利用奇偶校验信息来恢复故障硬盘上的数据。RAID 3适用于数据密集型或单用户环境,需要长期、连续访问的数据块。RAID 3将数据写入操作分配给RAID组内的数据成员盘。但是,当有新数据需要写入时,无论写入哪个硬盘,RAID 3都需要重新计算并重写校验信息。因此,当某个应用程序需要大量写入时,RAID 3的奇偶校验盘将有很大的工作量。因为需要等待奇偶校验,所以会对RAID 3组的读写性能有一定影响。此外,因为校验盘有较高的工作负载,它往往是RAID 3里最容易失效的硬盘。这就是为什么校验盘被称为RAID 3的瓶颈的原因。
- RAID3 最少硬盘数为3块,假定一个RAID 3的硬盘数为N,其中有效用户数据存储容量为N-1个硬盘的容量。与其他RAID一样,RAID 3中的成员盘的容量和转速应该是相同的。
- 在RAID 3级别和RAID 5级别的硬盘阵列中,如果一个硬盘失效,该硬盘组将从在线(正常)状态转变为降级状态,直到完成重构失效硬盘。如果RAID中的另一个硬盘也出现故障,则硬盘组的数据将丢失。
- RAID 3采用单硬盘容错和并行数据传输。换句话说,RAID 3采用分条技术将数据分块,这些块进行异或算法,并将奇偶校验数据写到最后一个盘——RAID 3组的奇偶校验硬盘。当硬盘出现故障时,数据被写入到那些没有故障的硬盘上,奇偶校验继续。
- RAID 3的性能不是固定的。原则上,RAID 3采用的是N+1的数据保护方法。这意味着当有N个硬盘的用户数据需要保护时,需要一个额外的硬盘来存储校验信息。在这种情况下,新的数据块被写入硬盘同时,奇偶校验信息被计算生成后,写入校验硬盘。
- 通常情况下,RAID 3组的所有的硬盘会在分条过程中合作,N个硬盘会并行写入。但当新写入的数据较少,只需写入一个或两个硬盘时,按照RAID 3的工作原理,仍需要读所有的硬盘以便重新计算新的奇偶校验值。这种少量写入数据的场景,因为需要额外的读和写操作,相对于对单个硬盘进行数据写入,并没有提升硬盘的性能,这种情况被称为RAID 3的“写惩罚”。
- RAID 3的写入性能取决于更改数据的数量、硬盘的数目、以及计算和存储奇偶校验信息所需的时间。假定一个RAID 3的硬盘数为N,当所有成员盘的转速相同时,在不考虑写惩罚,满分条写的情况下,RAID 3的顺序IO写性能理论上略小于 N-1倍单个硬盘的性能(计算冗余校验需要额外的计算时间)。
- 在RAID 3中,数据以分条的方式进行读取。RAID中的每个硬盘的硬盘驱动器被控制,所以RAID 3里同一条带上的数据块可以并行读取。所以,RAID 3的每一个硬盘被充分利用,提升了读取性能。
- RAID 3使用并行数据读(写)模式。
- RAID 3的读取性能取决于读取的数据量和RAID 3阵列的硬盘数量。
RAID5 说明
- RAID 5是改进版的RAID 3,使用条带化并计算奇偶校验信息。在RAID 3中有一块专用硬盘负责奇偶校验数据的写入和读取,这导致了我们前面提到的性能瓶颈问题。RAID 5使用的是分布式奇偶校验,每个成员硬盘将用于存储用户数据和奇偶校验数据。所以RAID 5没有瓶颈或热点。
- RAID5 最少硬盘数为3块,假定一个RAID 5的硬盘数为N,其中有效用户数据存储容量为N-1个硬盘的容量。与其他RAID一样,RAID 5阵列中的成员盘的容量和转速应该是相同的。
- 在RAID 3级别和RAID 5级别的硬盘阵列中,如果一个硬盘失效,该硬盘组将从在线(正常)状态转变为降级状态,直到完成重构失效硬盘。如果RAID中的另一个硬盘也出现故障,则硬盘组的数据将丢失。
- 在RAID 5中,数据以分条的形式写入硬盘组中。硬盘组中的每个硬盘都存储数据块和校验信息,数据块写一个分条时,奇偶信息被写入相应的校验硬盘。在RAID 5进行连续写入的时候,不同分条用来存储奇偶校验的硬盘是不同的。因此RAID 5的不同分条的奇偶校验数据不是单独存在一个固定的校验盘里的,而是按一定规律分散存放的。
- RAID 3在少量的数据被写入时有写惩罚,RAID 5类似。
- RAID 5的写入性能取决于所写的数据量和RAID 5组中硬盘的数量。假定一个RAID 5的硬盘数为N,当所有成员盘的转速相同时,在不考虑写惩罚,满分条写的情况下,RAID 5的顺序IO写性能理论上略小于 N-1倍单个硬盘的性能(计算冗余校验需要额外的计算时间)。
- RAID 5组的数据以分条的形式存储在硬盘上。只需N-1个硬盘的数据就可以恢复全部数据。
- RAID 5组的读取性能取决于所写的数据量和RAID组中的硬盘数量。
RAID 6 说明
- 如上图,RAID 6 最少需要5个硬盘,公式为:N+2(N>2)个硬盘;
- 前面讨论到的RAID组数据保护都是考虑单一硬盘失效的场景(RAID 0排除在外)。现在,硬盘的容量已经增加了很多,同时重构时间也增加了。很多大容量的硬盘组合起来形成的一个RAID 5组重建失效硬盘可能需要几天,而不是几个小时。在重建过程中,系统处于降级状态,这种情况下,任何额外的硬盘故障都会导致硬盘组失效和数据丢失。这就是为什么一些组织或单位需要一个双冗余系统。换句话说:一个RAID组应该允许2个硬盘故障时,同时所有的数据应该是可访问的。这种双重冗余数据保护类型的实现有一些不同的方式:
- 第一种是多重镜像。多重镜像是指数据块存储在主盘时同步存储多个多个副本到多余硬盘的方法。这种方式意味着大量的开销。
- 第二种方式是RAID 6级别硬盘阵列。RAID 6组对2个硬盘失效提供保护。这些硬盘甚至可以在同一时间失效。
- RAID 6的正式名称是分布式双校验RAID。本质上它是一种改进的RAID 5,也具有条带化和分布式奇偶校验。现在在RAID 6有双校验,这意味着两点:
- 写入用户数据时,附加的双校验计算需要进行。所以,在所有RAID 类型中,RAID 6是 “最慢”的。
- 额外的校验信息需要占用两个盘的存储空间。这就是为什么我们把RAID 6看作是一个N+2类型的RAID。
- 目前,RAID 6没有一个统一的标准。不同公司以不同的方式实施RAID 6。以下2个是主要的实现方式:
- RAID P + Q:华为,HDS
- RAID DP:NetApp
- 这2种模式获得校验数据的方法不同。然而,在RAID组有2块硬盘故障的情况下,他们可以确保数据的完整性,并支持数据访问。
RAID 6 P+Q说明
- RAID 6采用P+Q校验时,P和Q是2个彼此独立的校验值。它们使用不同的算法,用户数据和校验数据分布在同一分条的所有硬盘上。
- P是用户数据块的简单的异或运算得到的。Q是对用户数据进行GF(GF =伽罗瓦域)变换再异或运算得到,α,β和γ为常量系统,由此产生的值是一个所谓的“芦苇码”。该算法将数据硬盘相同分条的所有数据进行转换和异或运算。
- 如图所示,P1是通过对D0,D1,D2所在的分条0进行异或操作获得的,P2是对D3,D4,D5所在的分条1异或操作实现的,P3则是对D6,D7,D8 所在的分条2条进行异或操作。
- Q1是对D0,D1,D2 所在的分条0条进行GF变换再异或操作实现的,Q2是对D3,D4,D5 所在的分条1进行GF变换再异或运算, Q3实现对D6,D7,D8分条2进行GF变换再异或。
- 如果一个硬盘中的一个分条失效,只需有P校验值即可恢复失效硬盘上的数据,异或运算在P校验值和其它数据硬盘间执行。如果同一个分条有2个硬盘同时故障,不同的场景有不同的处理方法。如果Q校验值不在失效的一个硬盘上,数据可以被恢复到数据盘上,然后重新计算校验信息。如果Q在其中一个失效的硬盘上,两个的公式都需要使用才能恢复两个失效硬盘上的数据。
RAID 6 DP说明
- 另一种算法是RAID 6 DP。RAID 6 DP也有两个独立的校验数据块。第一个校验信息与RAID 6 P+Q的第一个校验值是相同的,第二个不同于RAID 6 P+Q,采用的是斜向异或运算得到行对角奇偶校验数据块。行奇偶校验值是同一分条的用户数据异或运算获得到,所图所示:P0是由分条0上的D0,D1,D2和D3异或运算得到,P1由分条1上的D4,D5,D6,D7异或运算,等等。所以,P0 = D0 ⊕D1⊕ D2⊕D3,P1 = D4⊕D5⊕D6⊕D7,如此类推。
- 第二个校验数据块是由阵列的对角线数据块进行异或运算。数据块的选择过程比较复杂。DP0是由硬盘1 的分条0上的D0,硬盘2的分条1上的D5,硬盘3上的分条2的D10,和硬盘上4 分条3上的D15异或操作得到。DP1是对硬盘2 的分条0上的D1,硬盘3的分条1上的D6,硬盘4上分条2的 D11,和的第一块校验硬盘上分条3 上的P3进行异或运算得到。DP2是硬盘3 分条0上的D2,硬盘4上的分条1的 D7,奇偶硬盘分条2的P2,和硬盘1 分条3上的D12进行异或运算得到。所以,DP0 = D0⊕D5⊕D10⊕D15,DP1 =D1⊕D6⊕D11⊕P3,如此类推。
- 一个RAID 6阵列能够容忍双硬盘失效。如上图所示,如果硬盘1和2失效,上面的所有数据会丢失,但其他硬盘上的数据和奇偶校验信息是有效的,我们了解一下阵列数据是如何恢复的。恢复D12采用DP2和斜向校验(D12 = D2⊕D7⊕P2⊕DP2);恢复D13利用P3和横向校验(D13 = D12⊕D14⊕D15⊕P3),通过使用DP3和斜向校验恢复D8(D8 = D3⊕P1⊕DP3⊕D13),使用P2和横向校验得到D9(D9 =D8⊕D10⊕D11⊕P2),恢复D4采用DP4和斜向校验,利用P1和横向校验得到D5等。这些操作是重复的,直到所有数据在故障盘被恢复。
- 一个RAID 6组的性能,无论算法是DP还是P+Q,相对都比较慢。因此,RAID 6适用两种场景:
- 数据非常重要,需要尽可能长的时间处于在线和可使用的状态。
- 使用的硬盘容量非常大(通常超过2T)。大容量硬盘的重建时间较长,两个硬盘都失效是会造成数据较长时间不能访问。在RAID 6中,可以实现一个硬盘重构时另一个硬盘失效。一些企业希望在使用大容量硬盘后,存储阵列的供应商使用一个双重保护的RAID组。
混合RAID 10 说明
- 对于大多数的企业客户而言,RAID 0并不是一个真正可以操作的选择,而RAID 1受限于硬盘容量利用率。RAID 10组合了RAID 1和RAID 0,提供了最好的解决方案,特别是在随机写入时,由于不存在写惩罚,性能优势比较明显。
- RAID 10组的硬盘数量总是偶数,最少需要4块硬盘(2个RAID1组成一个RAID0)。一半硬盘进行用户数据写入,另一半保存用户数据的镜像副本。镜像基于分条执行。
- 我们一般使用RAID1+RAID0模式,如上图,在图中,物理硬盘1和2构成一个RAID 1,物理硬盘3和物理硬盘4形成另一个RAID 1。这2个RAID 1子组再形成RAID 0。
- RAID 10组写入数据时,子组间采用并行的方式写入数据块,子组内数据采用镜像的方式写入。如图所示,D0将写入物理硬盘1,副本将被写入物理硬盘2。
- 当硬盘在不同的RAID 1组故障(例如硬盘2和4),RAID 10组的数据访问不受影响。这是因为其他2个硬盘(3和1)上有故障盘2和4上数据的完整副本。但是,如果同一RAID1子组的硬盘(例如,硬盘1和2)在同一时间失败,数据将不能访问。
- 从理论上讲,RAID 10可以忍受总数一半的物理硬盘失效,然而,从最坏的情况来看,在同一个子组的两个硬盘故障时,RAID 10也可能出现数据丢失。通常RAID 10用来保护单一的硬盘失效。
混合RAID 50 说明
- RAID 50是RAID 0和RAID 5的组合。两个子组被配置成RAID 5,这两个子组再形成RAID0。每个RAID 5子组完全独立于对方。RAID 50需要至少六个硬盘,因为一个RAID 5组最少需要三个硬盘。
- 所图所示,物理硬盘1,2,和3形成一个RAID 5,物理硬盘4,5,和6形成另一组RAID5组。两个RAID 5子组间再构成一个RAID 0。
- 在RAID 50中,RAID可以同时接受多个硬盘的并发故障。然而,一旦两块硬盘在同一RAID5组同时失败,RAID 50的数据将丢失。
本文来自博客园,作者:古道轻风,转载请注明原文链接:https://www.cnblogs.com/88223100/p/Detailed-description-of-RAID0_1_3_5_6_10_50-and-hot-spare.html