存储 频道

深谈RAID 5与RAID 10

  【IT168 技术】在向大家详细介绍RAID 5与RAID 10之前,首先让大家了解下cache,然后全面介绍RAID 5与RAID 10,希望对大家有用。一直以来,看到关于RAID 5与RAID 10的性能之争还是非常多的,甚至很多人那拿出了测试数据,但是,到底谁是谁非。这里,我就这两种RAID 的内部运行原理来分析一下,我们在什么情况下应当适合选哪一种RAID 方式。

  为了方便对比,我这里拿同样多驱动器的磁盘来做对比,RAID 5选择3D+1P的RAID 方案,RAID 10选择2D+2D的RAID 方案。那么,我们分析如下三个过程:读,连续写,随机写,但是,在介绍这三个过程之前,我需要介绍一个特别重要的概念:cache。

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

  cache的主要作用是什么呢?体现在读与写两个不同的方面,如果作为写,一般存储阵列只要求写到cache就算完成了写操作,所以,阵列的写是非常快速的,在写cache的数据积累到一定程度,阵列才把数据刷到磁盘,可以实现批量的写入,至于cache数据的保护,一般都依赖于镜相与电池(或者是UPS)。

  cache的读一样不可忽视,因为如果读能在cache中命中的话,将减少磁盘的寻道,因为磁盘从寻道开始到找到数据,一般都在6ms以上,而这个时间,对于那些密集型io的应用可能不是太理想。但是,如果cache能命中,一般响应时间则可以在1ms以内。

  不要迷信存储厂商的iops(每秒的io数)数据,他们可能全部在cache命中的基础上做到的,但是实际上,你的cache命中率可能只有10%。介绍完cache,我们就可以解释RAID 5与RAID 10在不同的模式下,工作效率问题了,那么我们来分别分析以上三个问题。

  连续写

  连续写的过程,一般表示写入连续的大批量的数据,如媒体数据流,很大的文件等等,这个写操作过程,如果有写 cache存在,并且算法没有问题的话,RAID 5与RAID 10甚至会更好一些(这里要假定存储有一定大小足够的写cache,而且计算校验的cpu不会出现瓶颈)。因为这个时候的校验是在cache中完成,如4块盘的RAID 5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而RAID 10只能同时写入2个数据+2个镜相。

  如,4块盘的RAID 5可以在同时间写入1、2、3到cache,并且在cache计算好校验之后,我这里假定是6(实际的校验计算并不是这样的,我这里仅仅是假设),同时把三个数据写到磁盘。而4块盘的RAID 10不管cache是否存在,写的时候,都是同时写2个数据与2个镜相。

  但是,我前面也说过了,写cache是可以缓存写操作的,等到一定时期再写到磁盘,但是,写操作不比读操作,这个写是迟早也要发生的,也就是说,最后落到磁盘上的写还是避免不了的,不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别都不是太大。

  离散写

  这里可能是最难理解,但是,也是最重要的部分,数据库,如oracle 数据库大部分操作就是离散写,如每次写一个数据块的数据,如8K;联机日志虽然看起来是连续写,但是因为每次写的量不多,不保证能添满RAID 5的一个条带(保证每张盘都能写入),所以很多时候也是离散写入。

0
相关文章