【IT168 技术】RAID还是比较常用的,于是我研究了一下Cache RAID,在这里拿出来和大家分享一下,希望对大家有用。磁盘阵列读操作的关键更多的体现在Cache的命中率上。所以,RAID5和RAID10在读数据上面,他们基本是没有差别的,除非是读的数据能影响Cache命中率,导致命中率不一样。
连续写方面的性能差异
连续写的过程,一般表示写入连续的大批量的数据,如媒体数据流,很大的文件等等。连续写操作大多数产生于医疗PACS系统、高教图书馆系统、视频编辑系统等等应用环境下。
根据我本人的经验,在连续写操作过程,如果有写Cache存在,并且算法没有问题的话,RAID5比RAID10甚至会更好一些,虽然也许并没有太大的差别。(这里要假定存储有一定大小足够的写Cache,而且计算校验的cpu不会出现瓶颈)。
因为这个时候的RAID校验是在Cache中完成,如4块盘的RAID5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而RAID10只能同时写入2个数据+2个镜相。
4块盘的RAID5可以在同时间写入1、2、3到Cache,并且在Cache计算好校验之后,我这里假定是6(实际的校验计算并不是这样的,我这里仅仅是假设),同时把三个数据写到磁盘。而4块盘的RAID10不管Cache是否存在,写的时候,都是同时写2个数据与2个镜相。
根据我前面对缓存原理的介绍,写Cache是可以缓存写操作的,等到缓存写数据积累到一定时期再写到磁盘。但是,写到磁盘阵列的过程是迟早也要发生的,所以RAID5与RAID10在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大。
离散写方面的性能差异
这里可能会较难理解,但是,这一部分也是最重要的部分。企业中的绝大部分数据库应用,如ERP系统等等在数据写入的时候其实都是离散写。
例如oracle 数据库每次写一个数据块的数据,如8K;由于每次写入的量不是很大,而且写入的次数非常频繁,因此联机日志看起来会像是连续写。但是因为不保证能够添满RAID5的一个条带(保证每张盘都能写入),所以很多时候更加偏向于离散写入。
这里我忽略了RAID5在那两个读操作的时候,可能会发生读命中操作的情况。也就是说,如果需要读取的数据已经在Cache中,可能是不需要4个 io的。这也证明了Cache RAID5 的重要性,不仅仅是计算校验需要,而且对性能的提升尤为重要。我本人曾经测试过,在RAID5的阵列中,如果关闭写Cache RAID5的性能将差很多倍。
当然,我并不是说Cache RAID10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,不过的是,RAID10对Cache的依赖性没有RAID5那么明显而已。
到这里,大家应当也大致明白了RAID5与RAID10的原理与差别了,一般来说,象小io的数据库类型操作,建议采用RAID10,而大型文件存储,数据仓库,则从空间利用的角度,可以采用RAID5。