一直以来,看到关于raid5与raid10的性能之争还是非常多的,甚至很多人那拿出了测试数据,但是,到底谁是谁非。这里,我就这两种raid的内部运行原理来分析一下,我们在什么情况下应当适合选哪一种raid方式。
为了方便对比,我这里拿同样多驱动器的磁盘来做对比,raid5选择3D+1P的raid方案,raid10选择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,我们就可以解释raid5与raid10在不同的模式下,工作效率问题了,那么我们来分别分析以上三个问题。
1、读操作
因为raid5与raid10的磁盘都可以提供服务,所以,在读上面他们基本是没有差别的,除非是读的数据能影响cache命中率,导致命中率不一样。
2、连续写
连续写的过程,一般表示写入连续的大批量的数据,如媒体数据流,很大的文件等等,这个写操作过程,如果有写cache存在,并且算法没有问题的
话,raid5比raid10甚至会更好一些(这里要假定存储有一定大小足够的写cache,而且计算校验的cpu不会出现瓶颈)。因为这个时候的校验是
在cache中完成,如4块盘的raid5,可以先在内存中计算好校验,同时写入3个数据+1个校验。而raid10只能同时写入2个数据+2个镜相。
但是,我前面也说过了,写cache是可以缓存写操作的,等到一定时期再写到磁盘,但是,写操作不比读操作,这个写是迟早也要发生的,也就是说,最后落到磁盘上的写还是避免不了的,不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别都不是太大。
3、离散写
这里可能是最难理解,但是,也是最重要的部分,数据库,如oracle
数据库大部分操作就是离散写,如每次写一个数据块的数据,如8K;联机日志虽然看起来是连续写,但是因为每次写的量不多,不保证能添满raid5的一个条
带(保证每张盘都能写入),所以很多时候也是离散写入。
我们再接上图,假定要把一个数字2变成数字4,那么对于raid5,实际发生了4次io,
先读出2与校验6,可能发生读命中
然后在cache中计算新的校验
写入新的数字4与新的校验8
对于raid10,我们可以看到,同样的单个操作,最终raid10只需要2个io,而raid5需要4个io。
但是,这里我忽略了raid5在那两个读操作的时候,还可能会发生读命中操作,也就是说,如果需要读取的数据已经在cache中,可能是不需要4个
io的,也证明了cache对raid5
的重要性,不仅仅是计算校验需要,而且对性能的提升由为重要。曾经测试过,在raid5的阵列中,如果关闭写cache,raid5的性能将差很多倍。
这里,并不是说cache对raid10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,不过的是,raid10对cache的依赖性没有raid5那么明显而已。
到这里,大家应当也大致明白了raid5与raid10的原理与差别了,一般来说,象小io的数据库类型操作,建议采用raid10,而大型文件存储,数据仓库,则从空间利用的角度,可以采用raid5。
- 大小: 7 KB
- 大小: 8.2 KB
- 大小: 14.1 KB
- 大小: 12.6 KB
分享到:
相关推荐
在Red Hat Advanced Server上安装Oracle 9i Release 2 (9.2.0.4) Real Application Clusters (RAC)是一项复杂而重要的任务,它...在实施过程中,与社区和专家交流经验,参考最佳实践,可以提高成功部署RAC的可能性。
5. **口令文件**:口令文件存储了数据库管理员(DBA)的权限信息,用于验证管理员身份。 在逻辑层面上,Oracle数据库的架构由多个层次组成,包括实例、内存结构和进程。 1. **实例**:实例是Oracle数据库在内存中...
Swift-PNChart是一个专为iOS应用设计的图表库,它主要服务于Piner和CoinsMan这两个项目,提供了简单而美观的图表展示功能。在Swift编程语言环境下,开发者可以利用PNChart库轻松实现各种图表,如折线图、柱状图、...
- 分析了不同情况下员工与雇主之间的谈判心理; - 提供了具体的沟通建议和注意事项。 - **实用价值**:帮助读者提高薪资谈判的成功率。 ##### 2. **非知名猎头 Henry 和你谈—高薪是怎么跳出来的?(By ...
一个简单而漂亮的图表库,在 iOS 的 Piner 和 CoinsMan 中使用了动画。 PNChart 适用于 iOS 7.0+ 并与 ARC 项目兼容。 如果您需要对 iOS 6 的支持,请使用 PNChart <= 0.8.1。 请注意,0.8.2 仅支持 iOS 8.0+,...
描述中的“PNChart-Swift”是一个图表库,它被设计用来在iOS应用中创建吸引人的图表,如Piner(可能是指Pinterest风格的图表)和CoinsMan(可能是指显示货币或者统计信息的图表)。这种库通常包含各种图表类型,如...
回购全名回购所有者回购说明回购网址今日回购回复 [{"name":"kevinzhow/PNChart","owner":"kevinzhow","description":"A simple and beautiful chart lib used in Piner and CoinsMan for iOS","url":"https://gi