行业资讯

RAID磁盘阵列是个啥?有什么用

2018-02-01 10:36  浏览:

RAID磁盘阵列是个啥?有什么用

有不少粉丝在我们的后台留言说,想让我们讲一下有关磁盘阵列,也就是RAID相关的事情。那么今天呢,我们就谈一谈什么是RAID磁盘阵列,而RAID又该怎么用。

1、什么是RAID

RAID(Redundant Arrays of Independent Disks,一说Redundant Arrays of Inexpensive Disks),中文名称叫独立磁盘冗余阵列(廉价磁盘冗余阵列),简称磁盘阵列。它的作用呢,是在多块硬盘组成的阵列系统中,牺牲一块至多块硬盘的容量,来对数据的存储提供一定的容错能力。

我们先来简单假设一种使用情况:你拥有一些重要的数据,但是你并没有将这些数据进行备份,他们只存在于你台式机的单一硬盘中。那么一旦遇到台式机的硬盘损坏,你的这些数据只能去找数据恢复公司了;而如果你的台式机做了磁盘阵列,那么只需要替换阵列中坏掉的硬盘就可以重新恢复数据了。

这正是RAID的魅力所在。如果你只组建一个相对廉价的阵列,甚至不需要额外的硬件成本,只要你的主板支持RAID功能,就可以体验RAID给你带来的好处。

2、RAID都有哪些类型

知道了RAID是什么之后,我们就来看看RAID都有哪些类型吧。根据RAID算法的不同,有RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID01/10、RAID50等等很多种,然而由于他们其中有一些的算法过于麻烦,日常使用中很少涉及。因此,我们这次的科普只涉及几种广泛使用的RAID类型:包含RAID0、RAID1、RAID5、RAID01/10四种。除此之外,我们还将顺带提及RAID6以及RAID50这两种稍麻烦点,但至少还有人用的阵列类型。至于剩下的嘛……就不多说啦。

▌RAID0(条带存储)

假设阵列中一共有n块硬盘,RAID0是将需要存储的数据以“条带(Stripe)”为单位分成n份,然后分别写入n块硬盘中。因此,RAID0将提供非常优秀的读写性能。打个简单的比方,如果你要读写一个2G的文件,在普通硬盘上,要以单盘的速度读取/写入2G的数据;而如果在4盘RAID0阵列中,每个盘只需读取/写入500MB的数据,四个盘可以并行读取/写入,因此理论的读写速度将是单块硬盘的4倍。

RAID0(条带存储)

但是严格的说,RAID0并不能算Redundant Array(冗余阵列),因为它并不提供冗余的容错机制。只要阵列中有一块硬盘坏掉,由于这块硬盘保存着所有数据(每个文件)的某一部分,因此所有数据都将无法读取,整个阵列中的数据将宣告报废。虽然RAID0的空间利用率可以达到1,但是容错率却是为0。因此,一般会辅以其他RAID类型来实现数据的冗余容错。

▌RAID1(镜像存储)

RAID1是最安全的阵列方案,但也是空间利用率最低的方案。RAID1将所有数据原封不动copy一份,放于另一块硬盘中。如果你用4块1T的硬盘组成RAID1阵列,可用空间甚至只有1T!因为剩下的3块硬盘中的数据与第一块硬盘一模一样。当然这也提供了坏n-1块硬盘的数据保障,只要任意一块硬盘是好的,就算剩余硬盘全部坏掉也可以读取数据。因此空间利用率只有1/n,而容错率高达(n-1)/n。但是由于空间利用率实在太低,一般来讲只用2块硬盘组成RAID1,再辅以其他RAID类型共同协作。

RAID1(镜像存储)

至于RAID1阵列组的性能,读取性能取决于阵列中最快的硬盘(谁读的快就用谁的数据,反正数据都一样),而写入性能则取决于阵列中最慢的硬盘(要等所有硬盘写入结束,才完成写入操作)。

▌RAID01/10

介绍完RAID0与RAID1,大家或许会发现如果是单独使用,它们俩都有着巨大的不足。因此,就有两种结合性的RAID方案被提出:RAID0+1与RAID1+0,分别简称为RAID01和RAID10(所以发音分别是“RAID零一/RAID一零”,可不要读成“RAID十”呦)。这两种方案都是同时吸取了RAID0的读写快速优点与RAID1的安全容错优点,但是RAID10由于可以在相同的性能/容量下提供比RAID01更好的容错安全性,因此RAID01已经被弃用。

要具体了解为什么弃用RAID01而选择RAID10,我们要先分别了解它俩的原理。其实很简单,RAID01就是先将多块磁盘组成RAID0阵列,之后再用2个RAID0阵列组成RAID1。而RAID10则先用两块硬盘组成RAID1阵列,再用多个RAID1阵列组成RAID0。接下来我们假设拥有10块1T硬盘,来看看它们两个的安全性:

RAID1(镜像存储)

先来看RAID01:ABCDE硬盘组RAID0容量5T,FGHIJ硬盘组RAID0容量5T,两组硬盘组RAID1容量5T。在坏掉一块硬盘的情况下(假设F坏掉),FGHIJ组成的RAID0阵列失效,整个RAID1阵列处于降级(不健康)状态;此时若ABCDE中任意一块硬盘再坏掉,将导致ABCDE组成的RAID0阵列失效,整个RAID1阵列将完全失效,数据全部丢失。因此在一块硬盘失效,阵列恢复重建过程中的失败率为5/9,超过了50%。

RAID1(镜像存储)

再来看RAID10:AB硬盘组RAID1容量1T,CD组RAID1容量1T……依此类推组成5个RAID1,之后再将这5个1T阵列组成RAID0,容量5T。依然假设坏掉F盘,此时F所处的RAID1阵列(E、F)处于降级状态,而整个RAID0阵列依然健康(由于RAID0阵列没有容错机制,因此除了健康就是失效,没有降级状态);如果第二块硬盘坏掉,只要不是E盘,整个RAID0阵列就不会失效。因此RAID10在一块硬盘失效,阵列恢复重建过程中的失败率仅为1/9,只有RAID01的五分之一。

以上就是弃用RAID01而采用RAID10的原因,可能比较绕,希望大家可以耐心看完。不过只要大家认真读过,就能发现RAID10对于硬盘的限制:至少4块硬盘,并且硬盘数目需要是2的倍数(因为要做RAID1)。而总可用空间为(单盘容量*硬盘数量/2),也就是空间利用率为1/2;最多允许阵列中一半的硬盘坏掉(每个小RAID1阵列中坏一块硬盘),因此容错率也为1/2。

至于RAID10的理论读取性能呢,则为max(小RAID1阵列中两块盘的读取速度)*n/2;而理论写入性能则是min(小RAID1阵列中两块盘的写入速度)*n/2。

3、热备盘与冷备盘(Hot Spare / Cold Spare)

讲到这里,大家想必已经对RAID阵列有一定的了解了,也见到了RAID的容错冗余能力。那么在继续剩下的RAID类型科普之前,我们先来讲一下,如果我在具有容错冗余能力的RAID阵列(即除去RAID0的其他RAID类型)中坏掉了一块硬盘,RAID阵列会如何自我进行恢复呢?

我们就以2盘的RAID1为例。假如坏掉了一块盘,RAID1阵列将只有1块盘在正常运行,这时的RAID1阵列将处于降级(Degraded)状态,也就意味着当前阵列已无容错冗余能力,虽然还能继续运行,但是数据已经不安全,需要人为干预进行修复。对于我们来讲,只需要拔出坏掉的硬盘,换一块相同容量的、好的硬盘插上去,RAID1阵列就会自动开始恢复重建过程。简单来说,就是将剩余1块盘中的数据重新拷贝到新换上的这块盘中。根据硬盘大小的不同,阵列恢复重建过程将从十几小时到几十小时不等。

那么,我们换上的这块硬盘,不管你是从抽屉里拿出来的还是去科技市场买了一块新的,都是通过人为操作插入到整个阵列里的。在出问题之前,这块盘就冷冷的躺在抽屉里而并不会通电,这块盘就叫冷备盘(Cold Spare)。

那能不能让阵列自动找一块好的硬盘来替换掉坏掉的盘呢?当然可以。我们可以为任何一种具有容错冗余能力的RAID阵列配备热备盘(Hot Spare)。简单来说,就是在建好RAID阵列后,再向其中插入1到多块与阵列中硬盘相同容量的盘,将其设置为Hot Spare模式。这些盘在阵列健康的时候就静静的呆在那,也不存数据,也没有读写访问。一旦阵列中有硬盘出问题,阵列处于Degraded状态时,RAID控制器会立即激活热备盘,开始阵列的恢复重建工作。

配备热备盘的好处是当阵列出现问题时,可以第一时间启动恢复重建操作,而不必等操作人员发现之后再手动操作。这样就避免了阵列在(降级后,操作人员发现之前)的这段时间内“带病运行”,增加了数据的可靠性。当然,缺点就是又增加了成本。

天下数据专业提供香港服务器美国服务器韩国服务器新加坡服务器日本服务器租用等全球海外服务器主机资源,服务受到行业和用户的一致好评。

【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015

下一篇:服务器和电脑主机的区别 上一篇:RAID10与RAID01比较,RAID10与RAID5比较
24H服务热线:4006388808 立即拨打