1.为什么要引入RAID?
在传统的计算机存储系统中,存储工作通常是由计算机内置的磁盘来完成的,这种设计方式性能和容量都很容易遇到瓶颈。
内置存储存在诸多问题(重点):
1.由于机箱空间有限,硬盘数量的扩展受到限制了,单台服务器上存储容量自然也会受到限制;
2.不便于扩容,机箱满载的情况下需要扩展容量,只能通过添购服务器的方式实现,投资成本高,而且数据分散存储在不同的服务器上,不利于共享和备份;
3.可靠性低,机箱内部的硬盘相互独立,没有相关数据保护措施,坏盘情况下数据丢失的风险大;
4.存储空间利用率低,一台主机内置一块或几块容量较大的硬盘,而自身业务只需极小部分存储空间的情况下,其他主机也无法利用这些闲置的空间,总体而言造成了存储资源的浪费;
5.内置存储直接通过总线与内存相连,占用总线资源,影响主机性能。
随着大型计算、海量数据存储的发展,各类应用对计算能力、数据存储资源方面都有更高的要求,计算机内置存储已经很难满足各类信息化应用的需求。为了克服传统内置存储存在的问题,扩展磁盘数量,人们把磁盘从机箱里面挪到了机箱外面,通过SCSI总线将主机与外置的磁盘联系起来,进而通过扩展磁盘数量获得足够大的存储容量(引入RAID)。
重点:RAID技术的初衷,是将多个小容量的磁盘组合成一个大的逻辑磁盘,以获得更大的存储容量给大型计算机使用。随着磁盘技术不断发展,单个磁盘容量不断增大,组建RAID的目的不再是构建一个大容量的磁盘,而是利用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比较适合于读写性能要求高但安全性要求不高的应用,如存储高清电影、图形工作站等
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比较适用于连续数据写、安全性要求高的应用,如视频编辑、大型数据库等