聊聊RAID
by 吴朱华
at 2011-01-01 00:25:51
original http://peopleyun.com/?p=1020
上次在ITalk做演讲的时候,弯曲论坛的Billy同学提到了YunTable和RAID之间协作的问题,当时我的回答是“现在想法是首先通过软件来控制存储,不假设底层的硬件平台”,当然在会后,为了深入,我还是稍微对RAID进行学习,而本文是我的总结。 RAID的概念 关于RAID,具体知识就不在重复了,可以看一下Wiki上的文章。下面将聊聊我的看法和一些不错的资料。虽然现在RAID的模式多达十几种,但实际常用的主要有四种,RAID0、RAID1、RAID5和RAID10。 RAID0 它将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,在存放数据时,其将数据按磁盘的个数来进行分段(Striping),然后同时将这些数据写进这些盘中。 RAID0的优点是由于I/O的并行的,所以读写速度快,它的不足是没有冗余功能,如果一个磁盘损坏,则所有的数据都会丢失。 RAID1 是由两组以上的N个磁盘相互作镜像(Mirroring),在一些多线程操作系统中能有很好的读取速度,另外写入速度有微小的降低。除非拥有相同数据的主磁盘与镜像同时损坏,否则只要一个磁盘正常即可维持运作,可靠性最高,其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。它的优点是架构简单,安全性非常好,Linode也是选用RAID0作为存储,它的不足是磁盘利用率最低。 RAID5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5 至少需要三颗硬盘,它不对存储的数据进行单独的备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 RAID 5可以理解为是RAID 0和RAID 1的折衷方案。它的优点是在性能上接近RAID0,具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度相当的慢,若使用“回写高速缓存”可以让效能改善不少。它的优点是由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜,而且性能还可以,它的不足是需要大量的CPU来完成奇偶校验的计算,特别是在使用软件RAID的情况下。 RAID10 也就是“RAID 1+0”,先镜射(Mirroring)再分区(Striping)数据。是将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。RAID 1+0有着不错的读取速度,而且拥有比RAID 0更高的数据保护性。RAID 10的优点是巧妙的利用了RAID 0的速度以及RAID 1的保护数据两种特性,它的不足是需要的硬盘数较多,因为至少必须拥有四个以上的偶数硬盘才能使用,同时对一些场景不是很适用,具体可以看这篇文章。 速查表 为了方便大家,下面有一张速查表图,它是前面几张图一样都是来自于CSDN MKing的“磁盘RAID简介及性能分析”这篇文章,虽然这张图的数据不是非常精确,但是非常简单明了,可以作为参考。 在云计算时代的RAID 在过去,由于RAID技术能保证数据的安全性(当然指的不是RAID0),而且性能也有提升,所以在企业的数据中心中,无论是直接使用磁盘,还是使用专业的存储,比如SAN,都使用到RAID技术,那么在云计算时代,RAID技术还会盛行吗?我觉得主要有两个疑问,首先,SSD是否适用于RAID,答案当然是Yes,因为SSD现在的稳定性和持久性和硬盘相比有一定的差距,需要使用类似的RAID的技术来确保数据的安全,其次,在大规模集群管理方面,RAID技术是否吸引人,我觉得通过软件来保证数据的安全性更方便,成本也更低,但是现在还不成熟。 我个人的推断是在云计算时代的初期,RAID技术还应该像现在那样适用,但是随着分布式系统的不断成熟,通过软件来保证数据的安全性将会更方便。