一、Raid介绍
RAID(Redundant Array Of Independent Disks):独立磁盘冗余阵列。RAID的最初出现的目的是为了解决中小型企业因经费原因使用不起SCSCI硬盘,而不得不使用像IDE较廉价的磁盘情况下,将多块IDE磁盘通过某种机制组合起来,使得IDE磁盘在一定程度上提高读写性能的一种机制。当然,现在也可以将SCSCI类的磁盘也可以做成RAID来提高磁盘的读写性能。
RAID是(Redundent Array of Inexpensive Disks)的缩写,直译为“廉价冗余磁盘阵列”,也简称为“磁盘阵列”。后来RAID中的字母I被改作了Independent,RAID就成了“独立冗余磁盘阵列”,但这只是名称的变化,实质性的内容并没有改变。可以把RAID理解成一种使用磁盘驱动器的方法,它将一组磁盘驱动器用某种逻辑方式联系起来,作为逻辑上的一个磁盘驱动器来使用。
RAID 包含一组或者一个集合甚至一个阵列。使用一组磁盘结合驱动器组成 RAID 阵列或 RAID 集。将至少两个磁盘连接到一个 RAID 控制器,而成为一个逻辑卷,也可以将多个驱动器放在一个组中。一组磁盘只能使用一个 RAID 级别。使用 RAID 可以提高服务器的性能。不同 RAID 的级别,性能会有所不同。它通过容错和高可用性来保存我们的数据。
RAID 的种类及应用
IDE和SCSI是计算机的两种不同的接口,前者普遍用于PC机,后者一般用于服务器。基于这两种接口,RAID分为两种类型:基于IDE接口的RAID应用,称为IDE RAID;而基于SCSI接口的RAID应用则相应称为SCSI RAID。
基于不同的架构,RAID 又可以分为:
● 软件RAID (软件 RAID)
● 硬件RAID (硬件 RAID)
● 外置RAID (External RAID)
注意:请预先备份您服务器上的数据,配置磁盘阵列的过程将会删除您的硬盘上的所有数据!
RAID的优点:
-
传输速率高。在部分RAID模式中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个的磁盘驱动器几倍的速率。因为CPU的速度增长很快,而磁盘驱动器的数据传输速率无法大幅提高,所以需要有一种方案解决二者之间的矛盾。
-
更高的安全性。相较于普通磁盘驱动器很多RAID模式都提供了多种数据修复功能,当RAID中的某一磁盘驱动器出现严重故障无法使用时,可以通过RAID中的其他磁盘驱动器来恢复此驱动器中的数据,而普通磁盘驱动器无法实现,这是使用RAID的第二个原因。
服务器做磁盘阵列(raid)的主要有两个作用:
1、提供容错功能
磁盘阵列可以通过数据校验提供容错功能,服务器会将数据写入多个磁盘,如果某个磁盘发生故障时,此时仍能保证信息的可用性,重要数据不会丢失,也不会耽误服务器的正常运转。
2、提高传输速率
磁盘阵列将多个磁盘组成一个阵列,当做一个单一的磁盘使用,把数据已分段的形式存储到不同的硬盘之中,发生数据存取变动时,阵列中的相关磁盘一起工作,这就可以大幅的降低数据存储的时间,同时还能拥有更佳的空间和使用率。
RAID的实现
RAID实现方式有2种:
-
硬件RAID
由硬件控制器来实现,硬件阵列是使用专门的磁盘阵列卡来实现的,在操作系统中看到的仅是一个单独的设备。企业一般都使用硬件RAID来实现。
-
软件RAID
由软件模拟硬件RAID的控制器来实现,依赖于操作系统。
-
软件阵列是指通过网络操作系统自身提供的磁盘管理功能将连接的普通SCSI卡上的多块硬盘配置成逻辑盘,组成阵列。
-
软件阵列可以提供数据冗余功能,但是磁盘子系统的性能会有所降低,有的降代还比较大,达30%左右。
-
主流的RAID级别有,0、1、5、10等。数字越高,其安全等级越高,防止数据丢失能力越强。
注意 : 先做条带化,后做镜像
0表示条带,1表示镜像
RAID识别方式 : IDE、SATA、USB、SCSI、SAS
级别 : 仅代表磁盘组织方式不同,没有上下之分 :
0 : 条带
性能提升 : 读,写
冗余能力 (容错能力) : 无
空间利用率 :ns
至少2块盘
1 镜像
性能表现 : 写性能下降,读性能提升
冗余能力 (容错能力) : 有
空间利用率 :1/2
至少2块盘
2 :
3 :
4 :
5 :
性能提升 : 读,写提升
冗余能力 (容错能力) : 有
空间利用率 :1/2
至少需要2块盘
10 :
性能提升 : 读,写提升
冗余能力 (容错能力) :有
空间利用率 :1/2
至少需要4块盘
01 :
性能提升 : 读,写提升
冗余能力 (容错能力) :有
空间利用率 :1/2
至少需要4块盘
50 :
性能提升 : 读,写提升
冗余能力 (容错能力) :有
空间利用率 :(n-2)/n
至少需要6块盘
jbod :
性能提升 : 无提升
冗余能力 (容错能力) :
空间利用率 :100%
至少需要2块盘
一块硬盘只能做RAID0,两块做RAID1,三块做RAID5
下面通过软件RAID的实现,来理解RAID的实现方式。
在Linux中使用mdadm这个命令来实现。具体在内核中是由 md(multdisk)模块实现的。
下面介绍mdadm的常用参数:
RAID配置方法
服务器版Windows系统安装
RAID基础知识
基本原理
RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,通常简称为磁盘阵列。简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。 SNIA 对 RAID 的定义是 :一种磁盘阵列,部分物理存储空间用来记录保存在剩余空间上的用户数据的冗余信息。当其中某一个磁盘或访问路径发生故障时,冗余信息可用来重建用户数据。磁盘条带化虽然与 RAID 定义不符,通常还是称为 RAID (即 RAID0 )。
RAID 的初衷是为大型服务器提供高端的存储功能和冗余的数据安全。在整个系统中, RAID 被看作是由两个或更多磁盘组成的存储空间,通过并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能。大多数 RAID 等级具有完备的数据校验、纠正措施,从而提高系统的容错性,甚至镜像方式,大大增强系统的可靠性, Redundant 也由此而来。
RAID 目标是提高数据可靠性和 I/O 性能。磁盘阵列中,数据分散在多个磁盘中,然而对于计算机系统来说,就像一个单独的磁盘。通过把相同数据同时写入到多块磁盘(典型地如镜像),或者将计算的校验数据写入阵列中来获得冗余能力,当单块磁盘出现故障时可以保证不会导致数据丢失。有些 RAID 等级允许更多地 磁盘同时发生故障,比如 RAID6 ,可以是两块磁盘同时损坏。在这样的冗余机制下,可以用新磁盘替换故障磁盘, RAID 会自动根据剩余磁盘中的数据和校验数据重建丢失的数据,保证数据一致性和完整性。数据分散保存在 RAID 中的多个不同磁盘上,并发数据读写要大大优于单个磁盘,因此可以获得更高的聚合 I/O 带宽。当然,磁盘阵列会减少全体磁盘的总可用存储空间,牺牲空间换取更高的可靠性和性能。比如, RAID1 存储空间利用率仅有 50% , RAID5 会损失其中一个磁盘的存储容量,空间利用率为 (n-1)/n 。
磁盘阵列可以在部分磁盘(单块或多块,根据实现而论)损坏的情况下,仍能保证系统不中断地连续运行。在重建故障磁盘数据至新磁盘的过程中,系统可以继续正常运行,但是性能方面会有一定程度上的降低。一些磁盘阵列在添加或删除磁盘时必须停机,而有些则支持热交换 ( Hot Swapping ),允许不停机下替换磁盘驱动器。这种高端磁盘阵列主要用于要求高可能性的应用系统,系统不能停机或尽可能少的停机时间。一般来说, RAID 不可作为数据备份的替代方案,它对非磁盘故障等造成的数据丢失无能为力,比如病毒、人为破坏、意外删除等情形。此时的数据丢失是相对操作系统、文件系统、卷管理器或者应用系统来说的,对于 RAID 系统来身,数据都是完好的,没有发生丢失。所以,数据备份、灾 备等数据保护措施是非常必要的,与 RAID 相辅相成,保护数据在不同层次的安全性,防止发生数据丢失。
RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )。镜像,将数据复制到多个磁盘,一方面可以提高可靠性,另一方面可并发从两个或多个副本读取数据来提高读性能。显而易见,镜像的写性能要稍低, 确保数据正确地写到多个磁盘需要更多的时间消耗。数据条带,将数据分片保存在多个不同的磁盘,多个数据分片共同组成一个完整数据副本,这与镜像的多个副本是不同的,它通常用于性能考虑。数据条带具有更高的并发粒度,当访问数据时,可以同时对位于不同磁盘上数据进行读写操作, 从而获得非常可观的 I/O 性能提升 。数据校验,利用冗余数据进行数据错误检测和修复,冗余数据通常采用海明码、异或操作等算法来计算获得。利用校验功能,可以很大程度上提高磁盘阵列的可靠性、鲁棒性和容错能力。不过,数据校验需要从多处读取数据并进行计算和对比,会影响系统性能。 不同等级的 RAID 采用一个或多个以上的三种技术,来获得不同的数据可靠性、可用性和 I/O 性能。至于设计何种 RAID (甚至新的等级或类型)或采用何种模式的 RAID ,需要在深入理解系统需求的前提下进行合理选择,综合评估可靠性、性能和成本来进行折中的选择。
RAID 主要优势有如下几点:
(1) 大容量
它扩大了磁盘的容量,由多个磁盘组成的 RAID 系统具有海量的存储空间。现在单个磁盘的容量就可以到 1TB 以上,这样 RAID 的存储容量就可以达到 PB 级,一般来说, RAID 可用容量要小于所有成员磁盘的总容量。不同等级的 RAID 算法需要一定的冗余开销,具体容量开销与采用算法相关。如果已知 RAID 算法和容量,可以计算出 RAID 的可用容量。通常, RAID 容量利用率在 50% ~ 90% 之间。
(2) 高性能
RAID 的高性能受益于数据条带化技术。单个磁盘的 I/O 性能受到接口、带宽等计算机技术的限制,性能往往很有 限,容易成为系统性能的瓶颈。通过数据条带化, RAID 将数据 I/O 分散到各个成员磁盘上,从而获得比单个磁盘成倍增长的聚合 I/O 性能。
(3) 可靠性
由多个磁盘组成的 RAID 系统在可靠性方面应该比单个磁盘要差。假定:单个磁盘故障将导致整个 RAID 不可用。 RAID 采用镜像和数据校验等数据冗余技术,打破了这个假定。 镜像是最为原始的冗余技术,把某组磁盘驱动器上的数据完全复制到另一组磁盘驱动器上,保证总有数据副本可用。 比起镜像 50% 的冗余开销 ,数据校验要小很多,它利用校验冗余信息对数据进行校验和纠错。 RAID 冗余技术大幅提升数据可用性和可靠性,保证了若干磁盘出错时,不 会导致数据的丢失,不影响系统的连续运行。
(4) 可管理性
RAID 是一种虚拟化技术,它对多个物理磁盘驱动器虚拟成一个大容量的逻辑驱动器。对于外部主机系统来说, RAID 是一个单一的、快速可靠的大容量磁盘驱动器。这样,用户就可以在这个虚拟驱动器上来组织和存储应用系统数据。 从用户应用角度看,可使存储系统简单易用,管理也很便利。 由于 RAID 内部完成了大量的存储管理工作,管理员只需要管理单个虚拟驱动器,可以节省大量的管理工作。 RAID 可以动态增减磁盘驱动器,可自动进行数据校验和数据重建,这些都可以 大大简化管理工作。
关键技术
镜像
镜像是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而造成数据丢失。对于 RAID 而言,采用镜像技术 典型地 将会同时在阵列中产生两个完全相同的数据副本,分布在两个不同的磁盘驱动器组上。镜像提供了完全的数据冗余能力,当一个数据副本失效不可用时,外部系统仍可正常访问另一副本,不会对应用系统运行和性能产生影响。而且,镜像不需要额外的计算和校验,故障修复非常快,直接复制即可。镜像技术可以从多个副本进行并发读取数据,提供更高的读 I/O 性能,但不能并行写数据,写多个副本会会导致一定的 I/O 性能降低。
镜像通过 “ 拆分 ” 能获得特定时间点的上数据快照,从而可以实现一种备份窗口几乎为零的数据备份技术。
数据条带
磁盘存储的性能瓶颈在于磁头寻道定位,它是一种慢速机械运动,无法与高速的 CPU 匹配。再者,单个磁盘驱动器性能存在物理极限, I/O 性能非常有限。 RAID 由多块磁盘组成,数据条带技术将数据以块的方式分布存储在多个磁盘中,从而可以对数据进行并发处理。
这样写入和读取数据就可以在多个磁盘上同时进行,并发产生非常高的聚合 I/O ,有效提高了整体 I/O 性能,而且具有良好的线性扩展性。这对大容量数据尤其显著,如果不分块,数据只能按顺序存储在磁盘阵列的磁盘上,需要时再按顺序读取。而通过条带技术,可获得数倍与顺序访问的性能提升。
条带粒度可以是一个字节至几 KB 大小,分块越小,并行处理能力就越强,数据存取速度就越高,但同时就会增加块存取的随机性和块寻址时间。实际应用中,要根据数据特征和需求来选择合适的分块大小,在数据存取随机性和并发处理能力之间进行平衡,以争取尽可能高的整体性能。
数据条带是基于提高 I/O 性能而提出的,也就是说它只关注性能, 而对数据可靠性、可用性没有任何改善。实际上,其中任何一个数据条带损坏都会导致整个数据不可用,采用数据条带技术反而增加了数据发生丢失的概念率。
数据校验
镜像具有高安全性、高读性能,但冗余开销太昂贵。数据校验是一种冗余技术,它用校验数据来提供数据的安全,可以检测数据错误,并在能力允许的前提下进行数据重构。相对镜像,数据校验大幅缩减了冗余开销,用较小的代价换取了极佳的数据完整性和可靠性。数据条带技术提供高性能,数据校验提供数据安全性, RAID 不同等级往往同时结合使用这两种技术。
采用数据校验时, RAID 要在写入数据同时进行校验计算,并将得到的校验数据存储在 RAID 成员磁盘中。校验数据可以集中保存在某个磁盘或分散存储在多个不同磁盘中,甚至校验数据也可以分块,不同 RAID 等级实现各不相同。当其中一部分数据出错时,就可以对剩余数据和校验数据进行反校验计算重建丢失的数据。校验技术相对于镜像技术的优势在于节省大量开销,但由于每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。
海明校验码和 异或校验是两种最为常用的 数据校验算法。海明校验码是由理查德 · 海明提出的,不仅能检测错误,还能给出错误位置并自动纠正。海明校验的基本思想是:将有效信息按照某种规律分成若干组,对每一个组作奇偶测试并安排一个校验位,从而能提供多位检错信息,以定位错误点并纠正。可见海明校验实质上是一种多重奇偶校验。异或校验通过异或逻辑运算产生,将一个有效信息与一个给定的初始值进行异或运算,会得到校验信息。如果有效信息出现错误,通过校验信息与初始值的异或运算能还原正确的有效信息。
常见RAID类型
常见5种RAID类型对比,n位磁盘数量。
注意 : RAID 0 2块盘
RAID 1 2块盘
RAID 4 3块盘
RAID 5 3块盘
RAID 6 4块盘
RAID 10 4块盘
一块硬盘只能做RAID0,两块做RAID1,三块做RAID5。
RAID 等级
标准 RAID 等级
SNIA 、 Berkeley 等组织机构把 RAID0 、 RAID1 、 RAID2 、 RAID3 、 RAID4 、 RAID5 、 RAID6 七个等级定为标准的 RAID 等级,这也被业界和学术界所公认。标准等级是最基本的 RAID 配置集合,单独或综合利用数据条带、镜像和数据校验技术。标准 RAID 可以组合,即 RAID 组合等级,满足 对性能、安全性、可靠性要求更高的存储应用需求。
JBOD
JBOD ( Just a Bunch Of Disks )不是标准的 RAID 等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合。 JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘。 JBOD 的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据。 JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护。它只是简单提供一种扩展存储空间的机制, JBOD 可用存储容量等于所有成员磁盘的存储空间之和。目前 JBOD 常指磁盘柜,而不论其是否提供 RAID 功能。
RAID0
RAID0:最少使用2块磁盘,出现的目的是为了提高读写性能,磁盘利用率达到100%,但没有容错能力,磁盘损坏的几率也增加了一倍。
具体如下:
RAID1
RAID1:最少使用2块磁盘,常作为磁盘的镜像使用,所以一般情况下,自己2块磁盘。设备利用率一般情况下是50%,允许一块磁盘损坏,读性能提高,写性能有所下降。
RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
RAID1 与 RAID0 刚好相反,是为了增强数据安全性使两块 磁盘数据呈现完全镜像,从而达到安全性好、技术简单、管理方便。 RAID1 拥有完全容错的能力,但实现成本高。 RAID1 应用于对顺序读写性能要求高以及对数据保护极为重视的应用,如对邮件系统的数据保护。
RAID4
RAID4:最少使用3块磁盘,其中一块专门保存其他2块数据的备份。通常情况是:保存其他2块磁盘数据按位异或的结果。设备利用率是 n-1/n (n为磁盘数目),可以损坏一块磁盘,读写性能都有相应的提升。
具体如下:
注意 : RAID2、3、4较少实际应用,它们大多只在研究领域有实作。
RAID5
RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。
RAID5:同RAID4一样,最少使用3块磁盘,不同的一点是,RAID5将备份信息分散到每个磁盘上。
具体如下:
RAID5 的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。与其他 RAID 等级一样,重建数据时, RAID5 的性能会受到较大的影响。
RAID5 兼顾存储性能、数据安全和存储成本等各方面因素,它可以理解为 RAID0 和 RAID1 的折中方案,是目前综合性能最佳的数据保护解决方案。 RAID5 基本上可以满足大部分的存储应用需求,数据中心大多采用它作为应用数据的保护方案。
RAID6
前面所 述的各个 RAID 等级都只能保护因单个磁盘失效而造成的数据丢失。如果两个磁盘同时发生故障,数据将无法恢复。 RAID6 引入双重校验的概念,它可以保护阵列中同时出现两个磁盘失效时,阵列仍能够继续工作,不会发生数据丢失。 RAID6 等RAID6 思想最常见的实现方式是采用两个独立的校验算法,假设称为 P 和 Q ,校验数据可以分别存储在两个不同的校验盘上,或者分散存储在所有成员磁盘中。当两个磁盘同时失效时,即可通过求解两元方程来重建两个磁盘上的数据。种扩展的 RAID5 等级。
RAID6 具有快速的读取性能、更高的容错能力。但是,它的成本要高于 RAID5 许多,写性能也较差,并有设计和实施非常复杂。因此, RAID6 很少得到实际应用,主要用于对数据安全等级要求非常高的场合。它一般是替代 RAID10 方案的经济性选择。
RAID6:在RAID5的基础上,将备份信息多存了一份。最少使用4块磁盘,所以,它可以允许2块磁盘损坏,其他的同RAID5一样。
具体如下:
RAID 组合等级
标准 RAID 等级各有优势和不足。自然地,我们想到把多个 RAID 等级组合起来,实现优势互补,弥补相互的不足,从而达到在性能、数据安全性等指标上更高的 RAID 系统。目前在业界和学术研究中提到的 RAID 组合等级主要有 RAID00 、 RAID01 、 RAID10 、 RAID100 、 RAID30 、 RAID50 、 RAID53 、 RAID60 ,但实际得到较为广泛应用的只有 RAID01 和 RAID10 两个等级。当然,组合等级的实现成本一般都非常昂贵,只是在 少数特定场合应用。
简述raid0 raid1 raid5 三种工作模式的工作原理及特点
RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)
RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一块盘和N个盘组合
其优点读写快,是RAID中最好的
缺点:没有冗余,一块坏了数据就全没有了
RAID 1,只能2块盘,盘的大小可以不一样,以小的为准
10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高
RAID 5 ,3块盘,容量计算10*(n-1),损失一块盘
特点,读写性能一般,读还好一点,写不好
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5
根据数据的存储和访问的需求,去匹配对应的RAID级别
RAID10 和 RAID01
RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。相同的配置下,通常 RAID01 比 RAID10 具有更好的容错能力。
RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。
RAID 50
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)。
RAID 60
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访问,因此性能较高。不过使用门槛高,而且容量利用率低是较大的问题。
RAID 2.0 和 RAID 2.0+
RAID 2.0(独立磁盘冗余数组2.0),其基本思想就是把大容量机械硬盘先按照固定的容量切割成多个更小的分块(Chunk,通常为64MB),RAID组建立在这些小分块上,而不是某些硬盘上,我们称为分块组(Chunk Group)。
此时硬盘间不再组成传统的RAID关系,而是组成更大硬盘数量的硬盘组(建议最大硬盘数量为96-120,不建议超过120块盘),每个硬盘上不同的分块可与此硬盘组上不同硬盘上的分块组成不同RAID类型的分块组,这样一个硬盘上的分块可以属于多个RAID类型的多个分块组。以这样的组织形式
基于 RAID2.0 技术的存储系统能够做到在一块硬盘故障后,在硬盘组上的所有硬盘上并发进行重构,而不再是传统 RAID 的单个热备盘上进行重构,从而大大降低重构时间,减少重构窗口扩大导致的数据丢失风险,在硬盘容量大幅增加的同时确保存储系统的性能和可靠性。RAID 2.0 并没有改变传统的各种RAID类型的算法,而是把RAID范围缩小到分块组上。因此,RAID2.0技术具备以下技术特征:
-
几个、几十个甚至上百个机械硬盘组成硬盘组;
-
硬盘组中的硬盘被分割成几十兆、上百兆的分块,不同硬盘上的分块组成的分块组 (Chunk Group);
-
RAID 计算在分块组 (Chunk Group) 内进行,系统不再有热备盘,而是被同一分块组内保留的热备块所代替。
基于传统RAID技术的存储阵列故障恢复机制
RAID 2.0系统中一块硬盘故障后,重构可以在同一硬盘组内其他所有硬盘保留的热备空间上并发进行,使用RAID 2.0技术的存储系统具备以下优势:
-
快速重构:存储池内所有硬盘参与重构,相对于传统RAID重构速度大幅提;
-
自动负载均衡:RAID 2.0使得各硬盘均衡分担负载,不再有热点硬盘,提升了系统的性能和硬盘可靠性;
-
系统性能提升:LUN基于分块组创建,可以不受传统RAID硬盘数量的限制分布在更多的物理硬盘上,因而系统性能随硬盘IO带宽增加得以有效提升;
-
自愈合:当出现硬盘预警时,无需热备盘,无需立即更换故障盘,系统可快速重构,实现自愈合。
RAID2.0+(独立磁盘冗余数组2.0)
在 RAID 2.0 的基础上提供了更细粒度 (可以达几十KB粒度) 的资源颗粒,形成存储资源的标准分配及回收单位,类似计算虚拟化中的虚拟机,我们称之为虚拟块。
这些容量单位一致的虚拟块构成了一个统一的存储资源池,所有应用、中间件、虚拟机、操作系统所需的资源可以在这个资源池中按需分配及回收。相对传统 RAID 系统,RAID2.0+ 技术实现了存储资源的虚拟化及预配置,存储资源的申请及释放完全自动化的通过存储池实现,而不再需要传统 RAID 阵列的RAID组创建,LUN创建,LUN格式化等耗时而容易出错的手工配置过程。因此,RAID 2.0+ 技术解决了虚拟机环境下,存储资源必须动态按需分配及释放的问题。
在 RAID 2.0 基础上,RAID2.0+技术具备以下技术特征:
-
在 RAID 2.0 基础上,分块组(Chunk Group)被切分为容量从256KB到64MB的虚拟化存储颗粒(Extent);
-
存储资源以以上颗粒为单位自动分配及释放;
-
可以以以上颗粒度为单位在存储池内或不同存储池间进行细粒度分级存储;
-
在系统通过扩展控制器扩展性能或容量后,可以通过自动化的迁移这些标准颗粒来达到负载均衡的目的。
基于RAID 2.0+技术的存储阵列
技术优点
RAID2.0+技术主要用于实现系统资源的智能分配,满足虚拟机环境对存储的需求:
-
存储资源按需自动化分配及释放,满足了虚拟机对存储最本质的需求;
可根据业务实时情况,将不同数据分级存储,通过灵活调配SSD等高性能存储资源满足高性能业务需求;
根据业务特点自动迁移数据,提高存储利用效率;
RAID 2.0与传统RAID的对比
不适合使用RAID的场景
Hadoop集群中为何不使用RAID?
尽管建议采用RAID (Redundant Array of Independent Disk,即磁盘阵列) 作为 namenode 的存储器以保护元数据,但是若将 RAID 作为 datanode 的存储设备则不会给 HDFS 带来益处。HDFS 所提供的节点间数据复制技术已可满足数据备份需求,无需使用 RAID 的冗余机制。
此外,尽管 RAID 条带化技术 (RAID 0) 被广泛用户提升性能,但是其速度仍然比用在 HDFS 里的 JBOD (Just a Bunch Of Disks) 配置慢。JBOD 在所有磁盘之间循环调度 HDFS 块。RAID 0 的读写操作受限于磁盘阵列中最慢盘片的速度,而 JBOD 的磁盘操作均独立,因而平均读写速度高于最慢盘片的读写速度。需要强调的是,各个磁盘的性能在实际使用中总存在相当大的差异,即使对于相同型号的磁盘。针对某一雅虎集群的评测报告(http://markmail.org/message/xmzc45zi25htr7ry)表明,在一个测试(Gridmix)中,JBOD 比 RAID 0 快10%;在另一测试(HDFS写吞吐量)中,JBOD 比 RAID 0 快30%。
最后,若 JBOD 配置的某一磁盘出现故障,HDFS 可以忽略该磁盘,继续工作。而 RAID 的某一盘片故障会导致整个磁盘阵列不可用,进而使相应节点失效。
二、Raid概念
软件 RAID 和硬件 RAID
软件 RAID 的性能较低,因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前,操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。
硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时,即使出现电源故障,它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。
硬件 RAID 卡如下所示:
几个重要Raid概念:
-
校验方式用在 RAID 重建中从校验所保存的信息中重新生成丢失的内容。 RAID 5,RAID 6 基于校验。
-
条带化是将切片数据随机存储到多个磁盘。它不会在单个磁盘中保存完整的数据。如果我们使用2个磁盘,则每个磁盘存储我们的一半数据。
-
镜像被用于 RAID 1 和 RAID 10。镜像会自动备份数据。在 RAID 1 中,它会保存相同的内容到其他盘上。
-
热备份只是我们的服务器上的一个备用驱动器,它可以自动更换发生故障的驱动器。在我们的阵列中,如果任何一个驱动器损坏,热备份驱动器会自动用于重建 RAID。
-
块是 RAID 控制器每次读写数据时的最小单位,最小 4KB。通过定义块大小,我们可以增加 I/O 性能。
三、Raid级别
RAID有不同的级别,下面列举比较常用的模式:
-
RAID0 = 条带化
-
RAID1 = 镜像
-
RAID5 = 单磁盘分布式奇偶校验
-
RAID6 = 双磁盘分布式奇偶校验
-
RAID10 = 镜像 + 条带。(嵌套RAID)
Raid 0
RAID 0,无冗余无校验的磁盘阵列。数据同时分布在各个磁盘上,没有容错能力,读写速度在RAID中最快,但因为任何一个磁盘损坏都会使整个RAID系统失效,所以安全系数反倒比单个的磁盘还要低。一般用在对数据安全要求不高,但对速度要求很高的场合,如:大型游戏、图形图像编辑等。此种RAID模式至少需要2个磁盘,而更多的磁盘则能提供更高效的数据传输。
条带化有很好的性能。在RAID0(条带化)中数据将使用切片的方式被写入到磁盘。一半的内容放在一个磁盘上,另一半内容将被写入到另一个磁盘。
假设我们有2个磁盘驱动器,例如,如果我们将数据“TECMINT”写到逻辑卷中,“T”将被保存在第一盘中,“E”将保存在第二盘,'C'将被保存在第一盘,“M”将保存在第二盘,它会一直继续此循环过程。(LCTT 译注:实际上不可能按字节切片,是按数据块切片的。)
在这种情况下,如果驱动器中的任何一个发生故障,我们就会丢失数据,因为一个盘中只有一半的数据,不能用于重建 RAID。不过,当比较写入速度和性能时,RAID 0 是非常好的。创建 RAID 0(条带化)至少需要2个磁盘。如果你的数据是非常宝贵的,那么不要使用此 RAID 级别。
特点:
-
高性能。
-
RAID 0 中容量零损失。
-
零容错。
-
写和读有很高的性能。
Raid 1
RAID 1,镜象磁盘阵列。每一个磁盘都有一个镜像磁盘,镜像磁盘随时保持与原磁盘的内容一致。RAID1具有最高的安全性,但只有一半的磁盘空间被用来存储数据。主要用在对数据安全性要求很高,而且要求能够快速恢复被损坏的数据的场合。此种RAID模式每组仅需要2个磁盘。
镜像可以对我们的数据做一份相同的副本。假设我们有两个2TB的硬盘驱动器,我们总共有4TB,但在镜像中,但是放在RAID控制器后面的驱动器形成了一个逻辑驱动器,我们只能看到这个逻辑驱动器有2TB。
当我们保存数据时,它将同时写入这两个2TB驱动器中。创建 RAID 1(镜像化)最少需要两个驱动器。如果发生磁盘故障,我们可以通过更换一个新的磁盘恢复 RAID 。如果在 RAID 1 中任何一个磁盘发生故障,我们可以从另一个磁盘中获取相同的数据,因为另外的磁盘中也有相同的数据。所以是零数据丢失。
特点:
-
良好的性能。
-
总容量丢失一半可用空间。
-
完全容错。
-
重建会更快。
-
写性能变慢。
-
读性能变好。
-
能用于操作系统和小规模的数据库
Raid 5
RAID 5, 无独立校验盘的奇偶校验磁盘阵列。同样采用奇偶校验来检查错误,但没有独立的校验盘,而是使用了一种特殊的算法,可以计算出任何一个带区校验块的存放位置。这样就可以确保任何对校验块进行的读写操作都会在所有的RAID磁盘中进行均衡,既提高了系统可靠性也消除了产生瓶颈的可能,对大小数据量的读写都有很好的性能。为了能跨越数组里的所有磁盘来写入数据及校验码信息,RAID 5设定最少需要三个磁盘,因此在这种情况下,会有1/3的磁盘容量会被备份校验码占用而无法使用,当有四个磁盘时,则需要1/4的容量作为备份,才能让最坏情况的发生率降到最低。当磁盘的数目增多时,每个磁盘上被备份校验码占用的磁盘容量就会降低,但是磁盘故障的风险率也同时增加了,一但同时有两个磁盘故障,则无法进行数据恢复。
RAID 5多用于企业级。 RAID 5的以分布式奇偶校验的方式工作。奇偶校验信息将被用于重建数据。它从剩下的正常驱动器上的信息来重建。在驱动器发生故障时,这可以保护我们的数据。
假设我们有4个驱动器,如果一个驱动器发生故障而后我们更换发生故障的驱动器后,我们可以从奇偶校验中重建数据到更换的驱动器上。奇偶校验信息存储在所有的4个驱动器上,如果我们有4个 1TB 的驱动器。奇偶校验信息将被存储在每个驱动器的256G中,而其它768GB是用户自己使用的。单个驱动器故障后,RAID 5依旧正常工作,如果驱动器损坏个数超过1个会导致数据的丢失。
特点:
-
性能卓越
-
读速度将非常好。
-
写速度处于平均水准,如果我们不使用硬件 RAID 控制器,写速度缓慢。
-
从所有驱动器的奇偶校验信息中重建。
-
完全容错。
-
1个磁盘空间将用于奇偶校验。
-
可以被用在文件服务器,Web服务器,非常重要的备份中。
Raid 6
RAID 6和RAID 5相似但它有两个分布式奇偶校验。大多用在大数量的阵列中。我们最少需要4个驱动器,即使有2个驱动器发生故障,我们依然可以更换新的驱动器后重建数据。
它比RAID 5慢,因为它将数据同时写到4个驱动器上。当我们使用硬件 RAID 控制器时速度就处于平均水准。如果我们有6个的1TB驱动器,4个驱动器将用于数据保存,2个驱动器将用于校验。
特点:
-
性能不佳。
-
读的性能很好。
-
如果我们不使用硬件 RAID 控制器写的性能会很差。
-
从两个奇偶校验驱动器上重建。
-
完全容错。
-
2个磁盘空间将用于奇偶校验。
-
可用于大型阵列。
-
用于备份和视频流中,用于大规模。
Raid 10
RAID 10可以被称为1 + 0或0 +1。它将做镜像+条带两个工作。在 RAID 10中首先做镜像然后做条带。在 RAID 01上首先做条带,然后做镜像。RAID 10比RAID 01好。
假设,我们有4个驱动器。当我逻辑卷上写数据时,它会使用镜像和条带的方式将数据保存到4个驱动器上。 如果我在 RAID 10 上写入数据“TECMINT”,数据将使用如下方式保存。首先将“T”同时写入两个磁盘,“E”也将同时写入另外两个磁盘,所有数据都写入两块磁盘。这样可以将每个数据复制到另外的磁盘。 同时它将使用 RAID 0 方式写入数据,遵循将“T”写入第一组盘,“E”写入第二组盘。再次将“C”写入第一组盘,“M”到第二组盘。
特点:
-
良好的读写性能。
-
总容量丢失一半的可用空间。
-
容错。
-
从副本数据中快速重建。
-
由于其高性能和高可用性,常被用于数据库的存储中。
下面附录几张参考表:
针对不同RAID 模式在实际运用中可以使用的磁盘空间分别有多少,在用列表举例说明:
所有Raid级别的一些特性:
Linux 下软 RAID 实现方案
通过硬件阵列卡实现raid具有可靠性高,性能好等特点,但是对于一般的企业而言硬件阵列卡固然好,如果大规模应用的话动辄几千上万的费用也不是他们所能承受的,难道就没有既能保证数据安全,又能减少费用支持的IT方案吗?软raid就可以实现这一需求。
二.实现步骤
软raid比较依赖操作系统,所以他的劣势也显而易见,需要占用系统资源(主要是CPU资源)。目前在Linux和windows下软raid都比较常见了,Linux是通过mdadm实现的,windows下则在win2003之后通过磁盘管理来实现。
实验环境:
一台centos 7.2 VM,主机名分别为host1,host1上挂载两块50G的数据盘,我们的实验就在这两块数据盘上完成。
P.S:需要强调的是生产环境下两块组raid的硬盘必须是同品牌同型号同容量的,否则极容易出现软raid失效的情况。
1.确认操作系统是否安装了mdadm软件
[root@host1 ~]# rpm -qa |grep mdadm
mdadm-3.3.2-7.el7.x86_64
2.对两块数据盘进行分区,并设置分区类型为raid
fdisk命令只能对容量在2T以下的硬盘进行分区,如果超过2T则需要使用parted工具了。Parted命令以后会介绍使用方法,本节不赘述了。
在fdisk下raid的分区类型代码是fd,在parted工具下首先需要使用mklabel将磁盘格式由MBR改成GPT,然后才能使用mkpart命令进行分区,分完区之后使用set设置分区flag为raid即可。
3.使用mdadm命令创建raid1
可以看到创建时有个Note的提示,是说软raid不能当启动设备,这就是软raid比较鸡肋的地方了。
mdadm -C /dev/md0 -ayes -l1 -n2 /dev/xvd[b,c]1
命令说明:
-
-C --create 创建阵列;
-
-a --auto 同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
-
-l --level 阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
-
-n --raid-devices 阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
-
/dev/md0 阵列的设备名称,如果还有其他阵列组可以以此类推;
创建完成后可以使用cat /proc/mdstat查看阵列状态:
下图中第一次查看的时候提示resync完成了95.7%,第二次查询的时候两块盘才真正同步完。
也可以使用mdadm -D /dev/md0查看阵列组的状态
4.创建md0的配置文件
echo DEVICE /dev/sd{a,b}1 >> /etc/mdadm.conf
mdadm -Evs >> /etc/mdadm.conf
mdadm运行时会自动检查/etc/mdadm.conf 文件并尝试自动装配,因此第一次配置raid后可以将信息导入到/etc/mdadm.conf 中。
5.使用/dev/md0
在/dev/md0上创建文件,然后挂载进行使用。
mkfs.ext4 /dev/md0
注意:在格式化时,可以指定-E选项下的stride参数指定条带是块大小的多少倍,有在一定程度上提高软RAID性能,如块默认大小为4k,而条带大小默认为64k,则stride为16,这样就避免了RAID每次存取数据时都去计算条带大小,如:
mkfs.ext4 -E stride=16 -b 4096 /dev/md0
6.其他命令
比如组raid的阵列中有磁盘损坏,可以使用如下命令:
选项:-a(--add),-d(--del),-r(--remove),-f(--fail)
模拟损坏盘:
mdadm /dev/md1 -f /dev/sdb5
移除故障盘:
mdadm /dev/md1 -r /dev/sdb5
添加新硬盘:
mdadm /dev/md1 -a /dev/sdb7
停止阵列
mdadm -S /dev/md1
企业服务器硬盘常见的RAID种类及每种RAID特点原理
RAID 0 : 无差错控制的带区组,将一个数据分为两份分别放在两块硬盘上,不需要计算校验码。
RAID 1 : 镜像结构,类似于备份模式 , 一个数据被复制到两块硬盘上,
RAID 5 : 分布式奇偶效验的独立磁盘结构,它的奇偶效验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的效验位来重建损坏的数据,支持一块盘掉线后仍然正常运行。
RAID 10 : 高可靠性与高效磁盘结构,一个带区结构加一个镜像结构,因为两种结构各有优缺点 ,因此可以相互补充,主要用于容量不大,但要求速度和差错控制的数据库中。
参考链接:
http://blog.51cto.com/guoting/1439016
https://mp.weixin.qq.com/s/eqU_iVr_OHMGJPTs11wo6w
链接 :
全面介绍磁盘阵列 RAID 技术 : https://mp.weixin.qq.com/s/Z0nRcr7wur0o-qKLlxEByw
RAID RAID 大揭秘~ : https://www.cnblogs.com/keerya/p/7440118.html
Raid教程 全程图解手把手教你做R AID :https://www.jb51.net/article/39265.htm
用两块硬盘组建RAID0磁盘阵列简单 : https://www.jb51.net/article/50365.htm
在CentOS上创建 Software RAID 10的详解 : https://www.jb51.net/os/RedHat/519347.html
linux 系统中软件raid 配置方法 : https://www.jb51.net/os/RedHat/1260.html
Raid的学习和基础知识 : https://www.jb51.net/os/RedHat/1258.html
查看Linux系统下Raid信息 : https://www.jb51.net/os/RedHat/1094.html
RAID磁盘阵列-Redundant Arrays of Independent Disks : https://www.jianshu.com/p/ba6cdb0d3f1c
RAID0、1、5、10详解 : http://blog.51cto.com/11638832/1883592
Megacli64使用 : https://www.jianshu.com/p/0b4e0f5ffe93
RAID各级别特性详解 : http://blog.51cto.com/11291941/1754092
Linux之磁盘阵列技术详解(一)--raid0创建 : http://blog.51cto.com/zhengkangkang/1878404
Linux磁盘阵列技术详解(二)--raid 1创建 : http://blog.51cto.com/zhengkangkang/1878528
linux下磁盘管理机制--RAID : http://blog.51cto.com/guoting/1439016
mdadm管理RAid 阵列 : http://blog.51cto.com/sgk2011/610253
硬RAID 和软RADID 的比较 : http://blog.51cto.com/sgk2011/610251
服务器安装raid
Centos 7为Dell R730服务器挂载RAID10硬盘的方法 : https://www.jb51.net/os/RedHat/514992.html
Dell PowerEdge R710配置raid磁盘阵列 : http://www.voidcn.com/article/p-bmccasdg-ro.html
LSI MegaRaid 创建RAID和删除RAID :http://bean-li.github.io/LSI-RAID-create/
LSI MegaRaid Consistency Check : http://bean-li.github.io/raid-consistency-check/
更换RAID中的故障盘 : http://bean-li.github.io/locate-corrupt-disk-in-raid/
MegaCli command on LSI Raid --BBU,write policy and disk cache policy : http://bean-li.github.io/MegaCli-cmd/
disk cache policy in RAID : http://bean-li.github.io/disk-cache-policy/