RAID5和RAID10的比较

 存储是目前IT产业发展的一大热点,而RAID技术是构造高性能、海量存储的基础技术,也是构建网络存储的基础技术。专家认为,磁盘阵列的性能优点得益于磁盘运行的并行性,提升设备运行并行度能够提升磁盘的性能和数据安全性。算法

20年来,RAID 推出了一系列级别,包括RAID 0RAID 1RAID 2RAID 3RAID4RAID 5,以及各类组合如 RAID 0 1 等。其中最普遍的包括RAID5RAID10.可是一直以来,关于RAID5RAID10的性能优劣的争端仍是很是多的,甚至不少人包括不少公司都那拿出了测试数据。而这些测试数据复杂难懂相互矛盾,更加让用户感到迷惑,不知道怎么选择。 数据库

在这里,我将就这两种RAID的内部运行原理来分析一下,看看咱们在什么状况下应当适合选哪种RAID方式。根据个人经验与分析:象小io的数据库类型操做,如ERP等等应用,建议采用RAID10,而大型文件存储,数据仓库,如医疗PACS系统、视频编辑系统则从空间利用的角度,建议采用RAID5.下面请看具体的性能对比: 缓存

为了方便对比,我这里拿一样多驱动器的磁盘来作对比,RAID5选择3D 1PRAID方案,RAID10选择2D 2DRaid方案,分别如图:
安全

那么,咱们分析以下三个过程:读,连续写,随机写,可是,在介绍这三个过程以前,我须要介绍另一个磁盘阵列中的重要概念:cache. 网络

磁盘读写速度的要害之一:Cache oracle

cache技术最近几年,在磁盘存储技术上,发展的很是迅速,做为高端存储,cache已是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的RAID卡,通常都包含有几十,甚至几百兆的RAID cache. ide

cache的主要做用是什么呢?做为缓存,cache的做用具体体如今读与写两个不一样的方面:做为写,通常存储阵列只要求数据写到cache就算完成了写操做,当写cache的数据积累到必定程度,阵列才把数据刷到磁盘,能够实现批量的写入。因此,阵列的写是很是快速的。至于cache数据的保护,通常都依靠于镜相与电池(或者是UPS)。 性能

cache在读数据方面的做用同样不可忽视,由于假如所须要读取的数据能在cache中命中的话,将大大下降磁盘寻道所须要的时间。由于磁盘从开始寻道到找到数据,通常都在6ms以上,而这个时间,对于那些密集型I/O的应用可能不是太理想。可是,假如能在cache保存的数据中命中,通常响应时间则能够缩短在1ms之内。 测试

不要迷信存储厂商的IOPS(每秒的io数)数据,他们可能所有在cache命中的基础上作到的,可是实际上,你的cache命中率可能只有10%. spa

介绍完cache,咱们就能够解释RAID5RAID10在不一样的模式下,工做效率问题了,那么咱们来分别分析读操做、连续写和离散写三方面的问题。

读操做方面的性能差别

如我上文的介绍,磁盘阵列读操做的要害更多的体如今cache的命中率上。因此,RAID5RAID10在读数据上面,他们基本是没有差异的,除非是读的数据能影响cache命中率,致使命中率不同。

连续写方面的性能差别

连续写的过程,通常表示写入连续的大批量的数据,如媒体数据流,很大的文件等等。连续写操做大部分产生于医疗PACS系统、高教图书馆系统、视频编辑系统等等应用环境下。

根据我本人的经验,在连续写操做过程,假若有写cache存在,而且算法没有问题的话,RAID5RAID10甚至会更好一些,虽然也许并无太大的差异。(这里要假定存储有必定大小足够的写cache,并且计算校验的cpu不会出现瓶颈)。

由于这个时候的RAID校验是在cache中完成,如4块盘的RAID5,能够先在内存中计算好校验,同时写入3个数据 1个校验。而RAID10只能同时写入2个数据 2个镜相。

如上图所示,4块盘的RAID5能够在同时间写入123cache,而且在cache计算好校验以后,我这里假定是6(实际的校验计算并非这样的,我这里仅仅是假设),同时把三个数据写到磁盘。而4块盘的RAID10无论cache是否存在,写的时候,都是同时写2个数据与2个镜相。

根据我前面对缓存原理的介绍,写cache是能够缓存写操做的,等到缓存写数据积累到必定时期再写到磁盘。可是,写到磁盘阵列的过程是早晚也要发生的,因此RAID5RAID10在连续写的状况下,从缓存到磁盘的写操做速度会有较小的区别。不过,假如不是连续性的强连续写,只要不达到磁盘的写极限,差异并非太大。

离散写方面的性能差别

这里可能会较难理解,可是,这一部分也是最重要的部分。企业中的绝大部分数据库应用,如ERP系统等等在数据写入的时候其实都是离散写。

例如oracle 数据库每次写一个数据块的数据,如8K;因为每次写入的量不是很大,并且写入的次数很是频繁,所以联机日志看起来会像是连续写。可是由于不保证可以添满RAID5的一个条带(保证每张盘都能写入),因此不少时候更加偏向于离散写入。

咱们从上图看一下离散写的时候,RAID5RAID10工做方式有什么不一样。如上图:咱们假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4io:先读出2与校验6,可能发生读命中而后在cache中计算新的校验写入新的数字4与新的校验8

如上图咱们能够看到:对于RAID10,一样的单个操做,最终RAID10只须要2io,而RAID5须要4io.

这里我忽略了RAID5在那两个读操做的时候,可能会发生读命中操做的状况。也就是说,假如须要读取的数据已经在cache中,多是不须要4io的。这也证明了cacheRAID5 的重要性,不只仅是计算校验须要,并且对性能的提升尤其重要。我本人曾经测试过,在RAID5的阵列中,假如关闭写cacheRAID5的性能将差不少倍。

固然,我并非说cacheRAID10就不重要了,由于写缓冲,读命中等,都是提升速度的要害所在,不过的是,RAID10cache的依靠性没有RAID5那么明显而已。

到这里,你们应当也大体明白了RAID5RAID10的原理与差异了,通常来讲,象小io的数据库类型操做,建议采用RAID10,而大型文件存储,数据仓库,则从空间利用的角度,能够采用RAID5.

相关文章
相关标签/搜索