HCIA-Storage:第七章存储可靠性

1.为什么要引入RAID?

在传统的计算机存储系统中,存储工作通常是由计算机内置的磁盘来完成的,这种设计方式性能和容量都很容易遇到瓶颈。在这个过程中,使用RAID技术来实现把几块虚拟化成一个硬盘,此磁盘的容量和性能都能得到提升,这个过程中,出现了集中常见的RAID保护形式:

内置存储存在诸多问题(重点):
1.由于机箱空间有限,硬盘数量的扩展受到限制了,单台服务器上存储容量自然也会受到限制;
2.不便于扩容,机箱满载的情况下需要扩展容量,只能通过添购服务器的方式实现,投资成本高,而且数据分散存储在不同的服务器上,不利于共享和备份;
3.可靠性低,机箱内部的硬盘相互独立,没有相关数据保护措施,坏盘情况下数据丢失的风险大;
4.存储空间利用率低,一台主机内置一块或几块容量较大的硬盘,而自身业务只需极小部分存储空间的情况下,其他主机也无法利用这些闲置的空间,总体而言造成了存储资源的浪费;
5.内置存储直接通过总线与内存相连,占用总线资源,影响主机性能。

随着大型计算、海量数据存储的发展,各类应用对计算能力、数据存储资源方面都有更高的要求,计算机内置存储已经很难满足各类信息化应用的需求。为了克服传统内置存储存在的问题,扩展磁盘数量,人们把磁盘从机箱里面挪到了机箱外面,通过SCSI总线将主机与外置的磁盘联系起来,进而通过扩展磁盘数量获得足够大的存储容量(引入RAID)。

重点:RAID技术的初衷,是将多个小容量的磁盘组合成一个大的逻辑磁盘,以获得更大的存储容量给大型计算机使用。随着磁盘技术不断发展,单个磁盘容量不断增大,组建RAID的目的不再是构建一个大容量的磁盘,而是利用RAID技术提高磁盘的读写性能和数据安全性。

 2.RAID技术的出现

RAID(Redundant Array of Independent Disks),即独立冗余磁盘阵列,也称磁盘阵列,是将两个或两个以上单独的物理磁盘以不同的方式组合成的一个逻辑盘组。
RAID技术的优势主要体现在三个方面;
一.是将多个磁盘组合成一个逻辑盘组,以提供更大容量的存储;
二.是将数据分割成数据块,由多个磁盘同时进行数据块的写入/读出,以提高访问速度;
三.是通过数据镜像或奇偶校验提供数据冗余保护,以提高数据安全性。

2.1.RAID的实现方式:软件RAID,硬件RAID

1.硬件RAID: 基于硬件的RAID技术:是通过独立硬件来实现相关功能,即采用集成RAID芯片的SCSI适配卡(RAID卡)或集成RAID芯片的磁盘控制器来实现RAID功能。RAID适配卡和磁盘控制器拥有自己独立的控制处理器、I/O处理芯片、存储器和RAID芯片,RAID功能的实现算法不再依赖于主机CPU和内存,而是由专门RAID芯片来执行.
优点:不占用主机资源、性能高,且操作系统盘也可以安装在RAID虚拟磁盘之上,能够进行相应的冗余保护。
缺点:成本高。

2.软件RAID:基于软件的RAID技术:通过在主机操作系统上安装相关软件实现,在操作系统底层运行RAID程序,将识别到的多个物理磁盘按一定的RAID策略虚拟成逻辑磁盘。然后将这个逻辑磁盘映射给磁盘管理器,由磁盘管理器对其进行格式化。格式化程序将察觉不到底层有多个物理磁盘正在读写数据

优点:成本低、配置灵活、管理方便等。
缺点:占用主机CPU资源和内存空间,且需启动操作系统之后才能正常运行

2.2.RAID的数据组成形式

条带化的数据组织方式,实现了多块磁盘并发/并行存取数据,提高了数据存取效率

分条:宽度指在一个分条中数据成员盘的个数
分条:深度指一个条带的容量大
条带单元(Stripe Unit):指磁盘中单个或者多个连续的扇区的集合,是单块磁盘上进行一次数据读写的最小单元。
条带(Stripe):是同一磁盘阵列中多个磁盘驱动器上相同“位置”(或者说是相同编号)的条带单元的集合,条带单元是组成条带的元素

2.3.RAID的数据组成形式

并行:指多个物理磁盘同时响应一个I/O请求。
并发:指多个物理磁盘一对一同时响应多个I/O请求。

 

 

2.4.RAID的关键技术-数据保护(镜像方式)

镜像:是指利用冗余的磁盘保存数据的副本,一个数据盘对应一个镜像备份盘

2.5.RAID的关键技术-数据保护(奇偶校验)

奇偶校验:是指用户数据通过奇偶校验算法计算出奇偶校验码,并将其保存于额外的存储空间过程

 

2.6.RAID的级别与分类标准

一个JBOD(Just a Bundle Of Disks,简称一堆硬盘)是一组硬盘组合成一个虚拟的大硬盘。与RAID 0最大的区别是, 一个JBOD的数据块不是同时并行写入不同硬盘的。在JBOD中,只有将第一块硬盘的存 储空间使用完,才会使用第二块硬盘。所以JBOD总的可用容量是所有个硬盘容量的总 和,但性能是单个硬盘的性能

RAID0

RAID 0:一种简单的、无数据校验的数据条带化技术。
安全性:不提供冗余策略。
性能:数据以条带形式均匀分布于各个硬盘,支持并发/行读写。

RAID0数据写入

写数据时,RAID 0采用条带化技术将数据写入磁盘组中,它将数据分为数据块,按条带写入,均匀地存储在RAID组中的所有磁盘上。只有当RAID组的前一个条带被数据块写满后,数据才会写入到下一个条带。数据块D0,D1,D2,D3,D4,D5将被按条带化方式依次写入磁盘组,数据块D0、D1将同时被写入条带0中,分别写入磁盘0和磁盘1的相应条带单元上,数据块D2、D3将同时被写入条带1中,数据块D4、D5将同时被写入条带2中,依此类推,直至组中成员磁盘共同完成一个数据写入任务。由此可知,数据写入性能与成员磁盘的数量成正比。

RAID0的读取

读数据时,RAID 0接收到数据读取请求,它会在所有磁盘上搜索并读取目标数据块,经过整合后将数据返回给主机。假设阵列收到读取数据块D0,D1,D2,D3,D4,D5的请求,数据块D0、D1将从条带0中同时被读取,数据块D2、D3将从条带1中同时被读取,数据块D4、D5也将从条带2中同时被读取,依此类推,当所有的数据块从磁盘被读取后,经RAID控制器整合后发送给主机。和数据的写入同理,RAID 0的读取性能与组中成员磁盘的数量成正比

RAID 0具有低成本、高性能、100%的空间利用率等优点,但是它不提供数据冗余保护,一旦某磁盘数据失效,将无法得到恢复,此外,组中任何一个磁盘数据失效,都可能导致整个逻辑磁盘的数据因为部分丢失而不可用。因此,RAID 0一般适用于对性能要求严格但对数据安全性和可靠性要求不高的应用,如视频存储、音频存储、临时数据缓存等。
阵列中的任何一个硬盘失效都将导致整个RAID组的数据丢失(重点)。

RAID0应用场景与优缺点

RAID 0优点在于读写性能好,存储数据被分割成N(成员盘数)部分,分别存储在N个磁盘上,理论上逻辑磁盘的读写性能是单块磁盘的N倍,实际容量等于阵列中最小磁盘容量的N倍。
RAID 0缺点在于安全性低,任何一块磁盘发生故障,数据都无法恢复,甚至可能导致整个RAID上的数据丢失。RAID 0比较适合于读写性能要求高但安全性要求不高的应用,如存储高清电影、图形工作站等

 RAID1

RAID 1又称为镜像(Mirroring),是具有全冗余的阵列模式。RAID 1包括一个数据磁盘(数据盘),一个或者多个备用磁盘(镜像盘)。每次写数据时,数据盘上的数据将完全地备份到镜像盘中(重点)。
一个RAID 1包含至少2个成员盘。
镜像盘作为备份,可显著提供高数据的可用性。由于RAID 1阵列中一个磁盘保存数据,另一磁盘保存的是数据的副本。因此,RAID 1的空间利用率是50%。例如,将1GB数据写入阵列中, 需要占用2GB的存储空间。RAID 1的两个磁盘通常是容量相等的,若两个磁盘的容量大小不同,可用容量是两个磁盘中容量较小的磁盘的容量。

RAID1的写入过程

写数据时,RAID 1以双写的方式将数据写入两个磁盘中。以数据块D0,D1和D2写入磁盘组过程为例:首先,数据块D0及其副本同时被写入磁盘0和磁盘1中,而后数据块D1及其副本也同时被写入磁盘0和磁盘1中,依此类推,直至所有数据块均以同样的方式写入到RAID 1磁盘组中。在RAID 1中,因为数据需要被写入数据盘和镜像盘,因此写性能会稍受影响。

RAID1的读取过程

 

读数据时,RAID 1会同时读取数据盘和镜像盘上的数据。假设阵列收到读取数据块D0,D1和D2的请求,则数据块D0和D1可以分别由磁盘0和磁盘1同时读出(其他数据块同理),直至所有数据被取出并经控制器整合后返回给主机。因此,正常工作状态下RAID 1系统的读性能等于两个磁盘的读性能之和。需要特别注意的是,当RAID 1磁盘组在正常工作时,成员盘发生故障或掉线,会由工作状态进入降级状态。假设图中磁盘0发生故障,RAID 1磁盘组进入降级状态,此时只能从磁盘1中读取数据,因此,相比工作状态,降级状态下读性能会下降一半。

 

RAID 1的数据盘与镜像盘具有相同的内容。当数据盘出现故障时,可以使用镜像盘恢复数据。
假设磁盘0为数据盘,磁盘1为镜像盘,当磁盘0出现数据失效,可以用一个新磁盘或热备盘替换磁盘0,并从磁盘1中将数据复制到新磁盘或热备盘里,以恢复丢失的数据。当RAID 1组中有磁盘失效,只要新磁盘数据没有完成重建,RAID 1就处于降级状态,而当单个磁盘的容量越高,需要恢复的数据就越多,数据重建时间就会越长。

 

RAID 1模式优点在于安全性很高,N-1个磁盘作为镜像盘,允许N-1个磁盘故障,当一个磁盘受损时,换上一个新磁盘替代原磁盘即可自动恢复数据和继续使用。
RAID 1缺点在于磁盘读写性能一般且空间利用率低,存储速度与单块磁盘相同,阵列实际容量等于N个磁盘中最小磁盘的容量。RAID 1比较适用于安全性要求高的应用,如服务器、数据库存储等。

RAID3

 

RAID 3和RAID 4都采用一个专用的磁盘用于存放校验数据,即校验盘(重点)。
RAID 3可以认为是RAID 0的一种改进模式。相比RAID 0,RAID 3增加了一个专用的磁盘作为校验盘。
RAID 3至少需要三块磁盘,它将不同磁盘上同一条带上的数据利用异或算法作为奇偶校验,所得校验数据写入校验盘中对应条带的条带单元上。

RAID 3支持从多个磁盘并行读取数据,读性能非常高。而写入数据时,必须计算对应条带数据的校验数据,并将校验数据写入校验盘中,一次写操作包含了写数据块、读取同条带的其他数据块、计算校验数据、写入校验数据多个操作,写开销大,写性能相对较低。当RAID 3中某一磁盘出现故障时,不会影响数据读取,可以借助校验数据和其他完好数据来重建失效数据。如果所要读取的数据块正好位于失效磁盘,系统则需读取与该数据块位于同一条带的其他数据块和校验数据块,根据奇偶校验逆运算重建丢失的数据并发送给主机,从而对读性能有一定影响。当故障磁盘被更换后,系统按相同的方式重建故障盘中的数据,并写到新磁盘.

RAID3的写入

写数据时,RAID 3采用并行方式写入数据。假设数据A、B、C将依次被写磁盘组中,整个过程如下:首先,收到写请求之后,控制器对数据进行分块,数据A被分拆成数据块A0、A1、A2,将这三个数据块进行异或运算得到校验数据块P1:将数据块A0、A1、A2、P1同时被写入同一条带上(分别落于磁盘0、磁盘1、磁盘2、磁盘3的相应条带单元上)。同理,数据B和C以同样的方式被写入磁盘组中。RAID 3组中成员盘共同完成一个数据写入任务,理论上数据写入性能与数据盘的数量成正比。

RAID3的读取

读数据时,和写数据过程类似,RAID 3采用并行方式读取数据。假如阵列收到读取数据A、B、C的请求,数据块A0、A1、A2将从对应条带单元中同时被读取,经RAID控制器整合后发送给主机。数据B和C以同样的方式被读取,理论上RAID 3的读性能与数据盘的数量成正比。

当RAID 3磁盘组中某一块磁盘发生故障时,RAID 3通过对剩余数据盘上的数据块和校验盘上的校验数据作异或计算,重构出故障盘上原有的数据。
以4盘RAID 3为例,当磁盘0出现故障时,其存储的数据块A0,B0,C0丢失,故障盘失效恢复需要经历如下过程:将与数据块A0同一条带上数据块A1,A2和校验块P1从各自磁盘中取出,进行异或运算得到数据块A0,从而恢复出数据块A0;同理,可以恢复出数据块B0和C0。如此循环,直至恢复出磁盘0上的所有数据。

RAID 3优点在于读性能非常好且安全性较高,和RAID 0一样从多个磁盘的条带单元中并行读取数据,N块盘的RAID 3读性能与N-1块盘的RAID 0不相上下,由于RAID 3有校验数据,当N个磁盘中的其中一个磁盘出现故障时,可以根据其它N-1个磁盘中的数据恢复出故障盘上的数据;缺点在于写性能不好,RAID 3支持顺序业务的并行写操作,却不支持随机业务的并发写操作,因为校验数据统一存放在检验盘上,写性能受到校验盘的限制。
RAID 3比较适用于连续数据写、安全性要求高的应用,如视频编辑、大型数据库等。

RAID5

RAID 5是目前最常用的RAID等级通过条带化形式将数据写入磁盘组中。
与RAID 3类似,RAID 5每个条带上都有一份校验数据,不同之处在于RAID 5不同条带上的校验数据不是单独存在一个固定的校验盘里的,而是按一定规律分散存放在阵列的各个磁盘里。
阵列中每个磁盘都存储有数据块和校验数据,当数据块按条带方式写入时,校验数据也同时被写入该条带的某个磁盘条带单元里。因此,RAID 5不存在RAID 3中并发写操作时校验盘性能瓶颈问题。另外,RAID 5还具备很好的扩展性,当阵列磁盘数量增加时,并行操作能力也随之增强,从而拥有更高的容量以及更高的性能。

RAID5的写入

写数据时,RAID 5按条带进行。各个磁盘上既存储数据块,又存储校验数据。假设数据块D0,D1,D2,D3,D4,D5将依次被写入磁盘组,写入过程如下:首先,利用数据D0、D1进行异或运算得到校验数据P0;而后将数据块D0、D1、P0按条带方式同时写入,分别落于磁盘0、磁盘1和磁盘2的相应条带单元上。以同样的方式,将数据块D2、D3、D4、D5及其校验数据P1、P2写入磁盘中,由于采用分布式校验数据布局,校验数据P0、P1、P2分别落在磁盘2、磁盘1、磁盘0中。

RAID5的读取

读数据时,RAID 5只读取磁盘中的用户数据块,而不需读取校验数据。假设阵列收到读取数据块D0,D1,D2,D3,D4,D5的请求,数据块D0、D1将同时从磁盘0和磁盘1中被读取,随后,数据块D2、D3将同时从磁盘0和磁盘2中被读取,数据块D4、D5也将同时从磁盘1和磁盘2中被读取,所有的数据块从磁盘被读取后,经RAID控制器整合后发送给主机。

RAID5数据保护方式

在RAID 5中,如果有一块磁盘失效,可对其他成员磁盘进行异或运算,恢复出故障磁盘上的数据。
例如:磁盘0数据失效,该磁盘上数据块D0、D2和校验数据P2丢失。首先恢复数据块D0,将与数据块D0同一条带上数据块D1和P0从各自磁盘中取出,进行异或运算得到数据D0;再用相同方法,恢复出数据块D2和P2,直至将磁盘0上的数据全部恢复。

RAID5的应用场景与优点,缺点

RAID 5优点在于存储性能较好、数据安全性高,是目前综合性能最佳的数据保护解决方案。
RAID 5把校验数据分散在了不同数据盘上,避免了RAID 3中写性能受到校验盘限制的问题,四盘或以上的RAID 5支持数据的并行/并发读写操作。RAID 5缺点在于写消耗太大,一次写操作包含了写数据块、读取同条带的数据块、计算校验值、写入校验值等多个操作,对写性能有一定的影响。
RAID 5适用于随机数据存储、安全性要求高的应用,如邮件服务器、文件服务器等。

RAID6

RAID6 P+Q

前面所述的RAID 1、RAID 3和RAID 5都只能保护因单个磁盘失效而造成的数据丢失,如果两个磁盘同时发生故障,数据将无法恢复。RAID 6引入双重校验的概念,常用的校验方式有两种,一种是P+Q校验,一种是DP校验。
P通过用户数据块的简单的异或运算得到。
Q是对用户数据进行GF(伽罗瓦域)变换再异或运算得到。α,β和γ为常量系统,由此产生的值是一个所谓的“芦苇码”。该算法将数据磁盘相同条带上的所有数据进行转换和异或运算。

 

RAID 6阵列中只有一个磁盘数据失效时,只需有P校验数据即可恢复失效磁盘上的数据,恢复过程与RAID 5类似。
例如:阵列中同时有两个磁盘数据失效时,则根据不同的场景有不同的处理方法,磁盘0和磁盘1数据失效,即P0、Q0、D3、P2、D6、D7、D9、D10、Q5、Q12数据丢失,P0和Q0可以通过对条带0中数据块D0、D1、D2重新作P和Q校验运算实现恢复,其他丢失数据同样可以将对应条带上未丢失的数据取出。通过利用以上两个校验公式组成方程组,求解实现数据的恢复。

RAID6 DP工作原理

RAID 6DP,P和DP代表2个校验数据,分别使用横向校验方式和斜向校验方式算得(重点)。
DP横向校验方式与RAID 3中的校验方式完全相同,斜向校验盘中校验数据DP0、DP1、DP2、DP3为各个数据盘及横向校验盘的斜向数据校验信息。
横向校验:P0=D0⊕D1⊕D2 ⊕ D3
斜向校验:DP0=D0 ⊕D5⊕D10 ⊕ D15

阵列中只有一个磁盘数据失效时,根据P校验公式或DP校验公式即可恢复失效磁盘上的数据,与RAID 3同理。
阵列中同时有两个磁盘数据失效时,则需根据两个校验公式实现数据的恢复(重难点)。
动画图展示数据重构过程。

RAID6应用于优缺点

RAID 6优点在于安全性非常高,同时读写性能较好。当阵列中两个磁盘同时失效时,阵列仍能够继续工作,并通过求解两元方程来重建两个磁盘上的数据。RAID 6继承了RAID 3/RAID 5的读写特性,读性能非常好;缺点在于它有两个校验数据,写操作消耗比RAID 3/RAID 5的更大,并且设计和实施相对复杂。
适用于安全性要求非常高的应用。

RAID01

RAID 01是先条带化再做镜像,实质是对条带化后的虚拟磁盘实现镜像.
RAID 01结构:RAID组包括两个RAID 0子组(即,子组内做RAID 0),子组间做RAID 1.
利用四块磁盘创建两个独立的RAID 0子组,然后将这两个RAID 0子组组成一个RAID 1,从而,这四个磁盘构成了RAID 01组。数据被写入RAID 01时将同时写入到两个磁盘阵列中,其中一个RAID 0子组数据失效时,整个阵列仍可继续工作,保证数据安全性的同时又提高了性能,但整体磁盘利用率仅为50%。

RAID10

RAID 10是先做镜像再条带化,实质是对镜像后的虚拟磁盘实现条带化(重点)。
RAID 10组包括两个RAID 1子组(即,子组内做RAID 1),子组间做RAID 0(重点)。
利用四块磁盘创建两个独立的RAID 1子组,然后将这两个RAID 1子组组成一个RAID 0,即这四个磁盘构了一个RAID 10。RAID 10兼具RAID 0和RAID 1两者的特性,虽然造成了50%的磁盘浪费,但它不仅提供了200%的速度,而且提高了数据安全性。一个RAID 1子组内最多允许坏一个磁盘,如果不在同一个RAID 1子组中的两个磁盘同时损坏,也不会导致数据丢失,整个RAID 10组仍能正常工作。

RAID10写入

写数据时,RAID 10采用条带化技术将数据写入RAID 1子组中,它将数据分为数据块,并均匀地分散存储在所有RAID 1子组中。数据块D0,D1,D2,D3,D4,D5将被按条带的方式依次写入两个磁盘子组中,并在组内做镜像,数据块D0、D1将同时被写入一个条带中,分别落于两个RAID 1子组中,最终数据块D0将以镜像的方式存储在磁盘0和磁盘1中,而数据块D1也将以镜像的方式存储在磁盘2和磁盘3中……,依此类推,数据块D2、D3、D4、D5将以同样的方式被写入到阵列中。通过条带化并行的方式,最终将所有数据块写入阵列中,其写入性能与RAID 1子组的数量成正比。

RAID10的读取

读数据时,当RAID 10接收数据读取请求时,它会在所有磁盘上搜索目标数据块并读取数据。RAID 10阵列收到读取数据块D0,D1,D2,D3,D4,D5的请求,阵列可以同时从磁盘0、磁盘1、磁盘2和磁盘3中分别读取数据块D0、D2、D1、D3,数据块D4、D5也按类似的方式被读取出来。当所有的数据块从阵列中被读取后,被集合到RAID控制器中,经控制器整合后发送到主机。RAID 10的并发读取性能与磁盘的数量成正比。

RAID10的数据保护

当磁盘在不同的RAID 1子组出现故障,RAID 10中的磁盘1和2,RAID 10整体上数据访问不受影响,因为磁盘0和磁盘3上有故障盘1和故障盘2上数据的完整副本。但是,如果位于同一RAID 1子组中的两个磁盘在同一时间故障,例如磁盘0和磁盘1,数据将不能访问。从理论上讲,RAID 10可以忍受总数一半的物理磁盘失效,然而,从以上分析来看,在同一个子组出现两个失效磁盘时,RAID 10也可能出现数据丢失,所以RAID 10通常用于防止单一磁盘失效的应用场景。

RAID10的应用场景

RAID 01的优点非常明显,具有与RAID 1一样的容错能力,与RAID 0一样也具有较高的I/O带宽;缺点在于重构粒度太大、存储空间利用率低。RAID 01对一个RAID 0组进行整体的镜像备份,组内一块盘失效,将引起整组磁盘进行重构,此外,RAID 01内部都含有RAID 1模式,因此整体磁盘利用率均仅为50%。
RAID 10的优点和RAID 01一样,具有与RAID 1一样的容错能力,与RAID 0一样也具有较高的I/O宽带,此外,RAID 10利用多个RAID1组做RAID0,组内一块盘失效,可以利用其组内镜像盘进行单盘快速重构;缺点在于磁盘利用率也只有50%。适用于数据量大、安全性要求高的应用,如银行、金融等领域的数据存储。

RAID50

RAID 50是RAID 5与RAID 0的结合,即组内做RAID 5,构成RAID 5子组,组间做RAID 0(重点)。
由于每个RAID 5子组要求最少有三个磁盘,所以RAID 50中要求最少有6块盘.

RAID50的写入过程

 

RAID50的读取过程

RAID50的保护方式

相比RAID 5而言,RAID 50具备更高的容错能力,其同时允许各个RAID 5子组各坏一个磁盘,即,既允许某个RAID 5子组内有一个磁盘数据失效,也允许两个RAID 5子组中各坏一个磁盘。由于检验数据分布于在两个RAID 5子组上,重构速度相比于单独的RAID 5有很大提高;此外,RAID 50读写性能也相当好

原文地址:https://www.cnblogs.com/SmallandGig/p/11006893.html