聊聊RAID

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




上次在ITalk做演讲的时候,Billy同学提到了YunTable和RAID之间协作的问题,当时我的回答是“现在想法是首先通过软件来控制存储,不假设底层的硬件平台”,当然在会后,为了深入,我还是稍微对RAID进行学习,下面是我的总结。

 

RAID的概念

关于RAID,具体知识就不在重复了,可以看一下Wiki上的文章。下面将聊聊我的看法和一些不错的资料。虽然现在RAID的模式多达十几种,但实际常用的主要有四种,RAID0、RAID1、RAID5和RAID10。

RAID0

它将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,在存放数据时,其将数据按磁盘的个数来进行分段(Striping),然后同时将这些数据写进这些盘中。 RAID0的优点是由于I/O的并行的,所以读写速度快,它的不足是没有冗余功能,如果一个磁盘损坏,则所有的数据都会丢失。

RAID0

RAID1

是由两组以上的N个磁盘相互作镜像(Mirroring),在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高,其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。它的优点是架构简单,安全性非常好,Linode也是选用RAID0作为存储,它的不足是磁盘利用率最低。

RAID1

RAID5

是一种存储性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5 至少需要三颗硬盘,它不对存储的数据进行单独的备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。它的优点是在性能上接近RAID0,具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写高速缓存”可以让效能改善不少。它的优点是由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜,而且性能还可以,它的不足是需要大量的CPU来完成奇偶校验的计算,特别是在使用软件RAID的情况下。

RAID5

RAID10

也就是“RAID 1+0”,先镜射(Mirroring)再分区(Striping)数据。是将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。RAID 1+0有着不错的读取速度,而且拥有比RAID 0更高的数据保护性。RAID 10的优点是巧妙的利用了RAID 0的速度以及RAID 1的保护数据两种特性,它的不足是需要的硬盘数较多,因为至少必须拥有四个以上的偶数硬盘才能使用,同时对一些场景不是很适用,具体可以看这篇文章

RAID5

 

速查表

为了方便大家,下面有一张速查表图,它是前面几张图一样都是来自于CSDN MKing的“磁盘RAID简介及性能分析”。这篇文章,虽然这张图的数据不是非常精确,但是非常简单明了,可以作为参考。

Summary

 

在云计算时代的RAID

在过去,由于RAID技术能保证数据的安全性(当然指的不是RAID0),而且性能也有提升,所以在企业的数据中心中,无论是直接使用磁盘,还是使用专业的存储,比如SAN,都使用到RAID技术,那么在云计算时代,RAID技术还会盛行吗?我觉得主要有两个疑问,首先,SSD是否适用于RAID,答案当然是Yes,因为SSD现在的稳定性和持久性和硬盘相比有一定的差距,需要使用类似的RAID的技术来确保数据的安全,其次,在大规模集群管理方面,RAID技术是否吸引人,我觉得通过软件来保证数据的安全性更方便,成本也更低,但是现在还不成熟。

我个人的推断是在云计算时代的初期,RAID技术还应该像现在那样适用,但是随着分布式系统的不断成熟,通过软件来保证数据的安全性将会更方便。

(3个打分, 平均:3.33 / 5)

雁过留声

“聊聊RAID”有32个回复

  1. ZC 于 2011-01-09 6:40 下午

    个人感觉,在云架构下,存储层会不会越来越底层化,与实际应用越来越没有关系?

  2. processor 于 2011-01-10 6:30 上午

    能否说说Adaptec的RAID卡的ASIC的架构。

  3. ABC 于 2011-01-10 8:28 上午

    缺一个RAID3吧,一个盘读,一个盘写。之后才有的RAID5,加入校验。

  4. 铁木 于 2011-01-10 2:42 下午

    我有个hp的服务器两个磁盘默认就是raid10, 而不是最少四个

  5. 冬瓜头 于 2011-01-10 9:09 下午

    To 1楼:我也有此感觉。在另一篇文章中已经提出这个观点,云的出现,导致传统存储重新回归大硬盘的角色,而分布式存储则露头了。

    To 4楼:raid几没有关系,所有Raid都至少2个盘。有人问两盘怎么做raid3或者5这种校验型Raid?很简单,大家的数学、代码编程方面都是牛人,2盘的raid5=raid1。当2个盘时,用户数据=校验数据。就这样。2盘的raid10=raid1。就像一个复杂公式,当某变量等于特定值的时候,这个公式得出的结果等价于另一个很简单的公式,也就是各种复杂曲线,在原点都是重合的,这个道理很明白了。

    To 3楼:raid3也有校验。

    另外各位如果真想了解存储底层的东西,建议看一下《大话存储》,不是在做广告,这本书对存储基本概念都总结好了。另外大话存储2也将在3月份出版。

  6. 吴朱华 于 2011-01-10 9:17 下午

    谢谢冬瓜头的回复,这方面他比我专业,我只是抛砖引玉而已:) 关于RAID3,因为它现在不是很常用,所以没介绍,还有Adaptec的RAID卡,这方面我不是很了解。

  7. 冬瓜头 于 2011-01-10 9:31 下午

    感谢老吴的总结。借这贴做了个“疑似”广告,旨在让大家迅速了解存储,别无他意,老吴别误会啊。

  8. tom 于 2011-01-10 9:37 下午

    回4楼,hp的raid10可能不是真正的raid10,真正的raid10就和吴老师介绍的一样

  9. jebtang 于 2011-01-11 6:58 上午

    我觉得主要有两个疑问,首先,SSD是否适用于RAID,答案当然是Yes,因为SSD现在的稳定性和持久性和硬盘相比有一定的差距,需要使用类似的 RAID的技术来确保数据的安全,其次,在大规模集群管理方面,RAID技术是否吸引人,我觉得通过软件来保证数据的安全性更方便,成本也更低,但是现在还不成熟。

    —————————————–
    呵呵,还是对存储不了解。

    1. 对SSD优化的Raid控制器还没有出来,目前Raid上有限的DRAM成为瓶颈,可以随便找一下就可以知道多个SSD在Raid配置下IOPS无法做到先行扩展。

    2.据我所知,不管是Google/Facebook/tencent/baidu,没有一家在他们的大规模存储集群使用存储,因为性能相关的load balance 已经在上层实现了。

    实在看你错的厉害,只好都囊两句了

  10. jebtang 于 2011-01-11 7:05 上午

    2楼的,现在应该已经没有Adaptec的Raid,应该是PMC,大概在SCSI时代,Adaptec的SCSI ASIC是基于MIPS的,LSI是ARM,到了ROC时代,好像Adaptec转到了PowerPC,这个不是特别肯定。

  11. 吴朱华 于 2011-01-11 7:19 上午

    to jebtang:
    谢谢,你关于SSD Raid方面的指正。但关于第二点,我有保留意见,等成熟之后,会和大家聊聊的:)

  12. 冬瓜头 于 2011-01-11 7:23 上午

    9楼,SSD一定要用Raid保护,这一点楼主表述没有错。至于优化与否就是另一码事了。百度肯定是用了ssd的,阿里也要用的。不知道你所指的“后端没用存储”是不是说没用传统的san阵列之类。

  13. 铁木 于 2011-01-11 8:26 上午

    to 8楼,的确是我学艺不精,HP确认后说虽然写了RAID10,但是只放两个硬盘的时候实际是RAID1

  14. kevin 于 2011-01-11 10:13 上午

    确定的小道消息。baidu是用ssd raid

  15. tom 于 2011-01-11 5:49 下午

    不知存储的发展方向会是什么?各路高手能否展开聊下?

  16. 冬瓜头 于 2011-01-11 6:14 下午

    互联网运营商始终代表技术发展最前沿。传统存储在NSP已经处于边缘地位,但是在其他行业依然主流。分布式或者scaleout架构存储将会逐渐成为主流,但是商用存储必须保持强一致性,而NSP内部占大头的都是弱环境,弱一致性为主流。所以商用分布式存储与NSP分布式存储无法融合。但是整个存储形态就是这样统一发展了。个人看法。

  17. Tweets that mention 聊聊RAID : 弯曲评论 -- Topsy.com 于 2011-01-11 10:07 下午

    [...] This post was mentioned on Twitter by Felix Wang | 特变别态老王王, Charlie Epps. Charlie Epps said: RAID简介 http://bit.ly/gDUT8M [...]

  18. jebtang 于 2011-01-11 10:30 下午

    9楼,SSD一定要用Raid保护,这一点楼主表述没有错。至于优化与否就是另一码事了。百度肯定是用了ssd的,阿里也要用的。不知道你所指的“后端没用存储”是不是说没用传统的san阵列之类。

    对的,大部分Web2.0的网站都不在他们的分布式集群中使用SAN,主要成本高,然后扩展性不好,可能成为瓶颈。

    对于SSD的保护问题,目前SSD在Web2.0的应用主要有两个方面,search和数据库,对于search,数据不是很重要,要得是较低的延迟。对于数据库,特别是写为主数据,大家还没有大规模使用,目前比较流行的是使用flashcach,把SSD做cache用,底层还是使用硬盘来实现数据的安全性。

    当然,数据的安全性,特别是数据库的安全性是最主要,但是使用Raid技术来实现SSD的数据安全,基本上是用牛在拉法拉利了。

  19. jebtang 于 2011-01-11 10:34 下午

    To Tom,here is the trend.
    research.microsoft.com/en-us/um/people/gray/talks/Flash_is_Good.ppt

    Tape is Dead Disk is Tape Flash is Disk RAM Locality is King
    —-Jim Gary

  20. jebtang 于 2011-01-11 10:40 下午

    互联网运营商始终代表技术发展最前沿。传统存储在NSP已经处于边缘地位,但是在其他行业依然主流。分布式或者scaleout架构存储将会逐渐成为主流,但是商用存储必须保持强一致性,而NSP内部占大头的都是弱环境,弱一致性为主流。所以商用分布式存储与NSP分布式存储无法融合。但是整个存储形态就是这样统一发展了。个人看法。

    讲的好,赞一个,这个ADIC还是很好衡量标准。所以SNIA的Clould storage 的标准,Web2.0很少响应,主要是那传统的storage的标准来套现在的分布式存储。

  21. 西贝流士 于 2011-01-11 10:40 下午

    以上大部分意见都同意。。

    SSD 在百度的使用情况,刘斌在SAAC2010和InfoQ的技术沙龙上都做了介绍,大家乐意的话可以管窥一番。。。

    另外补充的是,RAID 技术中间最为重要的是XOR技术,XOR运算能够保证效验数据和切片数据的双向可逆计算,例如:
    a XOR b= a’b+ ab’ =c 等式,已知a,b,c的中的两者的情况下,可以计算出第三者的值,并可推广到n个对象。

    RAID 6(或者RADI DP -double parity)只是这一形势的补充,意即两份(同级或者不同级)效验数据且分别存放。

    应用最广的XOR 计算单元是intel 的I960

  22. 冬瓜头 于 2011-01-11 10:44 下午

    互联网企业是个特殊,若一致性。ssd用在传统阵列里,如国只读cahce可以不用raid,读写cache或者tier,与传统hdd没啥两样,都得raid,除了一些尖兵产品,用replica方式保存多余副本之外,在这些新系统上,raid已死。但是耗费空间有浪费,不过随着容量成本降低,用空间换性能逐渐成为主流。

  23. 冬瓜头 于 2011-01-11 10:49 下午

    parity太多的话会耗费更多资源,面对海量数据,rebuild的过程更耗费大量计算和io资源。所以我个人认为triple parity甚至quad parity或更高等级的以将来不可能得到应用。取而代之的是用空间换性能的做法成为主流。尤其是传统hdd容量还在上升而iops和吞吐量上升太缓慢甚至已经达到瓶颈的时期。传统存储架构的演变基本上是追随互联网运营商架构的,因为那里是数据海量集中的地方,存储前沿技术的发展最具代表性。

  24. 西贝流士 于 2011-01-11 11:06 下午

    冬瓜头写的《大话存储》的确是一本好书,有理论,有hands on的经验,也涉及具体产品的分析。。。非常适合对计算存储行业

    SNIA大会每年都是这些storage vendor,乌烟瘴气的,还是互联网行业把握得住自己的选择权。

  25. 冬瓜头 于 2011-01-11 11:11 下午

    非常感谢支持。不过鄙人自感此书还是有些浅薄。所以3月份即将出版的《大话存储2》,将很给力,至少再撑它2年。敬请各位关注。

  26. jebtang 于 2011-01-11 11:14 下午

    同感,觉得parity不适合SSD,parity的意思在于单个硬盘无法在容量和性能上满足时的技术,但在SSD时代,基本上不成立了。SSD的高速和非易失已经使Hard disk +DRAM的架构不够有效了。

    不过传统厂商追随的步伐现在还不明显呀,他们还在忙于storage “network”,没有注意到计算和存储的融合。

  27. ykzj 于 2011-01-12 3:24 上午

    pariry用SSD的话,寿命更短

  28. 吴朱华 于 2011-01-12 3:37 上午

    讨论很热烈啊,想问大家两个问题:1.现在SSD需要RAID吗?2.现在SSD和RAID这两者进行配合有哪些Best Practice?

  29. alex 于 2011-01-12 5:45 上午

    to 朱华
    现在的SSD有一定次数的写入限制,小于10万次,所以必须要做RAID的,一般情况下是做RAID5。

  30. 冬瓜头 于 2011-01-12 5:50 上午

    SSD单个cell,slc寿命10w,mlc寿命1w。不过里面的wear leveling算法可以极大平衡每个cell擦的次数,降低损耗。另外目前随着工艺进步寿命也在加长。 ssd要不要做raid,其实22和23楼已经回答了。

  31. jack 于 2011-01-13 9:47 下午
  32. 吴朱华 于 2011-01-14 1:37 上午

    to jack:
    呵呵,没问题,但这些图片不是我画的,在这里,声明一下。