云时代还需要RAID吗

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云时代还需要RAID 吗? [复制链接]

flypen

新手上路

多币

10

威望

9

注册时间

2009-2-2

精华

帖子

10

∙ 串个门

∙ 加好友

∙ 打招呼

∙ 发消息 电梯直达 1# 发表于 2010-8-22 12:23:24 |只看该作者 |倒序浏览 0 来源于:/?p=32 1. 前言 RAID (Redundant Array of Independant Disks ,独立冗余磁盘阵列),已经火了二十来年,在存储领域一直是速度和可靠性的代名词。专业的存储,没有看见谁不用RAID 的。RAID 提供了很多级别,常用的有0,1,5,6,10等。其中,兼顾性能(数据并发访问)和可靠性(利用冗余来提升)的RAID5,6,10是在实际应用中利用得最多的,尤其是RAID5,几乎成了考察磁盘阵列性能的首选测试级别。除了专业存储的设备(NAS,SAN 等),普通操作系统对RAID 也有很好的支持,比如Linux 内核中的md 模块就是用软件来实现RAID 的,同时在用户态有一个管理程序mdadm 能够对RAID 进行复杂的配置。 本文以分析RAID5为主,来谈谈云时代RAID 技术所遇到的一些情况。 RAID5能够容忍任意一块磁盘出错,保证在出错的时候磁盘仍能顺利读写。在大多数人看来,两块磁盘同时出错的概率并不是很高,所以一般认为RAID5也就足够用了。且现在的磁盘阵列都提供热备盘,只要有盘出错,就会自动把空闲盘加入RAID5中,利用剩下的好盘重建数据,把计算出来的数据写入新盘。当数据重建完成之后,该设备就完好如初了,又能容忍任意一块盘再出错。

看上去似乎很不错。

假设一个RAID5设备由n 块磁盘组成,则实际存放数据的磁盘有n-1块,另外一块盘用来存放Parity (校验码,RAID5的校验盘是分散在每个磁盘中的,合计共用一块盘),则数据的有效利用率是(n-1)/n ,这是一个比较高的值,尤其是当n 比较大的时候,它的利用率就越高;该设备能够并发访问(n-1)个盘的数据,理论上也可以达到单盘速度的(n-1)倍,这也是很高的一个值。看来,RAID5在速度,空间利用率,容错性上都得到了很好的平衡,理所当然地成为许多人的首选了。

事实果真如此吗?RAID 是在1987年提出的,那个时代,硬盘还是非常昂贵的设备,RAID 的优势在于能够在控制整体成本的基础上兼顾性能和容错。如今,磁盘越来越廉价,数据本身越来越重要,时过境迁,一些应用模式也发生了根本的变化。如今,Google 的文件系统,Hadoop 的HDFS 等分布式文件系统大行其道,它们有一个共同的特点,都是利用简单地把一组数据复制到多个计算节点的方法来实现冗余的,单机并不做RAID (最多做不损失容量不提供冗余的RAID0),已经抛弃了传统的RAID 概念。这样看似成本会高不少——在传统的RAID 中,提供数据冗余可靠只需要多用一两块磁盘就可以了,但现在却得多好几倍的磁盘数(一般情况下冗余度至少为3,也就是说至少要用3倍于原始数目的磁盘),还得采购更多的计算节点,这,成本不是高那么一点点吧?下面我会从可靠性,性能和成本三个方面对RAID 加以分析。

2. 可靠性

云计算,可靠性是用户担心的首要问题。要达到宣传中所提及的99.99%的

1.1 硬盘的高坏盘率

RAID5只能提供一块磁盘的容错率。但是,硬盘的坏盘率其实是很高的,尤其是在服务器上,硬盘始终在工作,很少有休息的时候。据Google的论文(labs.google.co m/papers/disk_failures.pdf)报告,硬盘的年坏盘率为

1.7%-8.6%。显然,在一小段时间内,两块或者更多的磁盘坏掉的可能性并不是那么小。也许可以不选择RAID5,而采用RAID6。的确,仍使用RAID的许多高可靠性系统中,也有不少是采用RAID6的。RAID6能够提供任意两块盘的容错率,但是由于要生成两组校验码,所耗费的资源也比RAID5大不少。

1.2 RAID的长时间重建(rebuilding)

当有盘坏掉的时候,会加入热备盘来重建数据。现在的磁盘容量都很大,以使用得最多的SATA盘和典型容量1TB为例,一般来说,单盘速度可以到

100MB/s,假设重建数据的过程全速运行,则这个过程也需要耗时将近3个小时(事实上很多时候实际重建速度达不到这么快)。在这3个小时内,RAID5是没有数据保护功能的,如果再有一块盘出问题——哎呀,那后果就比较严重了。事实上,在RAID5重建数据的过程再有盘出错是比较容易见到的。因此总是出现很多企业为如何恢复数据而焦头烂额。磁盘速度的提升远没有容量的提升快,因此未来重建数据花费的时间可能更长,这个问题更突出。

1.3 RAID对硬盘外的错误无法处理

RAID还有一个天生的缺陷,它只能对付磁盘本身的出错,不能对付非磁盘因素造成的问题。比如,Oops了,内存坏掉了,主板烧掉了,网络断掉了,电源挂掉了,机房被炸了……诸如此类,RAID完全无能为力。冗余度再高的RAID,也不能让用户恢复对系统的访问。实际情况中,软件出问题的可能性也非常大,其他硬件出问题的概率同样不小。可靠性是对用户的全面保证,不能只盯着磁盘出错来看。很多控制器架构的存储产品提供HA(High Availability,高可用性)功能,在同一套系统中有两个控制器(每个控制器有CPU内存等硬件,可以看成一台独立的计算机),当一个控制器坏掉之后,另一个控制器能够马上接管坏掉控制器的工作。同时也提供冗余的电源等部件。但是,这些硬件的冗余度一般只有2,很难再提高,同样不能应付整个机房断电等意外情况。另外的问题是,这种双控系统中,两个控制器之间的耦合度是很高的(通过内部电路和软件来提高耦合度),很容易出现一个控制器出问题,另外一个控制器也不能正常工作。

1.4 单个RAID设备的磁盘总数控制

由于单盘出错率比较高,一般也不建议用户在一个RAID设备中加入太多的磁盘。可以替代现有RAID5的一种方法是RAID50,它是把几个RAID5设备再用RAID0组合起来。每个RAID5内部能容忍一块盘出错,但是对于整个

RAID50来说,可以有条件地容忍多块盘出错,在提高了可靠性的同时,也扩

相关文档
最新文档