[转]RAID基础,RAID10与RAID01比较,RAID10与RAID5比较
原文:http://blog.itpub.net/787018/viewspace-666280/
文档内容3部分:
1、基本的RAID级别介绍
2、RAID10和RAID01的比较
3、RAID10和RAID5的比较
RAID10和RAID01的比较
RAID10是先做镜象,然后再做条带。
RAID01则是先做条带,然后再做镜象。
比如以6个盘为例,RAID10就是先将盘分成3组镜象,然后再对这3个RAID1做条带。RAID01则是先利用3块盘做RAID0,然后将另外3块盘做为RAID0的镜象。
下面以4块盘为例来介绍安全性方面的差别:
1、RAID10的情况
这种情况中,我们假设当DISK0损坏时,在剩下的3块盘中,只有当DISK1一个盘发生故障时,才会导致整个RAID失效,我们可简单计算故障率为1/3。
2、RAID01的情况
这种情况下,我们仍然假设DISK0损坏,这时左边的条带将无法读取。在剩下的3块盘中,只要DISK2,DISK3两个盘中任何一个损坏,都会导致整个RAID失效,我们可简单计算故障率为2/3。
因此RAID10比RAID01在安全性方面要强。
从数据存储的逻辑位置来看,在正常的情况下RAID01和RAID10是完全一样的,而且每一个读写操作所产生的IO数量也是一样的,所以在读写性能上两者没什么区别。而当有磁盘出现故障时,比如前面假设的DISK0损坏时,我们也可以发现,这两种情况下,在读的性能上面也将不同,RAID10的读性能将优于RAID01。
RAID10和RAID5的比较
为了方便对比,这里拿同样多驱动器的磁盘来做对比,RAID5选择3D+1P的RAID方案,RAID10选择2D+2D的RAID方案,如图:
1、安全性方面的比较
其实在安全性方面,勿须质疑,肯定是RAID10的安全性高于RAID5。我们也可以从简单的分析来得出。当盘1损坏时,对于RAID10,只有当盘1对应的镜象盘损坏,才导致RAID失效。但是对于RAID5,剩下的3块盘中,任何一块盘故障,都将导致RAID失效。
在恢复的时候,RAID10恢复的速度也快于RAID5。
2、空间利用率的比较
RAID10的利用率是50%,RAID5的利用率是75%。硬盘数量越多,RAID5的空间利用率越高。
3、读写性能方面的比较
主要分析分析如下三个过程:读,连续写,离散写。
在介绍这三个过程之前,先介绍一个特别重要的概念:cache。
cache已经是整个存储的核心所在,就是中低端存储,也有很大的cache存在,包括最简单的raid卡,一般都包含有几十,甚至几百兆的raid cache。
cache的主要作用是什么呢?体现在读与写两个不同的方面,如果作为写,一般存储阵列只要求写到cache就算完成了写操作,所以,阵列的写是非常快速的,在写cache的数据积累到一定程度,阵列才把数据刷到磁盘,可以实现批量的写入,至于cache数据的保护,一般都依赖于镜相与电池(或者是UPS)。
cache的读一样不可忽视,因为如果读能在cache中命中的话,将减少磁盘的寻道,因为磁盘从寻道开始到找到数据,一般都在6ms以上,而这个时间,对于那些密集型io的应用可能不是太理想。但是,如果cache能命中,一般响应时间则可以在1ms以内。两者应该相差3个数量级(1000倍)。
1)读操作方面的性能差异
RAID10可供读取有效数据的磁盘个数为4,RAID5可供读取有效数据的磁盘个数也为4个(校验信息分布在所有的盘上),所以两者的读的性能应该是基本一致的。
2)连续写方面的性能差异
在连续写操作过程,如果有写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在连续写的情况下,从缓存到磁盘的写操作速度会有较小的区别。不过,如果不是连续性的强连续写,只要不达到磁盘的写极限,差别并不是太大。
3)离散写方面的性能差异
例如oracle 数据库每次写一个数据块的数据,如8K;由于每次写入的量不是很大,而且写入的次数非常频繁,因此联机日志看起来会像是连续写。但是因为不保证能够添满RAID5的一个条带,比如32K(保证每张盘都能写入),所以很多时候更加偏向于离散写入(写入到已存在数据的条带中)。
我们从上图看一下离散写的时候,RAID5与RAID10工作方式有什么不同。如上图:我们假定要把一个数字2变成数字4,那么对于RAID5,实际发生了4次io:先读出2与校验6,可能发生读命中然后在cache中计算新的校验写入新的数字4与新的校验8。
如上图我们可以看到:对于RAID10,同样的单个操作,最终RAID10只需要2个io,而RAID5需要4个io.
这里我忽略了RAID5在那两个读操作的时候,可能会发生读命中操作的情况。也就是说,如果需要读取的数据已经在cache中,可能是不需要4个io的。这也证明了cache对RAID5 的重要性,不仅仅是计算校验需要,而且对性能的提升尤为重要。
当然,并不是说cache对RAID10就不重要了,因为写缓冲,读命中等,都是提高速度的关键所在,只不过RAID10对cache的依赖性没有RAID5那么明显而已。
4)磁盘的IOPS对比
假定一个case,业务的iops是10000,读cache命中率是30%,读iops为60%,写iops为40%,磁盘个数为120,那么分别计算在raid5与raid10的情况下,每个磁盘的iops为多少。
raid5:
单块盘的iops = (10000*(1-0.3)*0.6 + 4 * (10000*0.4))/120
= (4200 + 16000)/120
= 168
这里的10000*(1-0.3)*0.6表示是读的iops,比例是0.6,除掉cache命中,实际只有4200个iops。
4 * (10000*0.4) 表示写的iops,因为每一个写,在raid5中,实际发生了4个io,所以写的iops为16000个
为了考虑raid5在写操作的时候,那2个读操作也可能发生命中,所以更精确的计算为:
单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4)*(1-0.3) + 2 * (10000*0.4))/120
= (4200 + 5600 + 8000)/120
= 148
计算出来单个盘的iops为148个,基本达到磁盘极限
raid10
单块盘的iops = (10000*(1-0.3)*0.6 + 2 * (10000*0.4))/120
= (4200 + 8000)/120
= 102
可以看到,因为raid10对于一个写操作,只发生2次io,所以,同样的压力,同样的磁盘,每个盘的iops只有102个,还远远低于磁盘的极限iops。
4、小结
所以要求较高的空间利用率,对安全性要求不是特别高、大文件存储的系统采用RAID5比较好。
相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID10的方式比较好。
[转]RAID基础,RAID10与RAID01比较,RAID10与RAID5比较的更多相关文章
- 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID10
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
- RAID10与RAID01比较,RAID10与RAID5比较
RAID10和RAID01的比较RAID10是先做镜象,然后再做条带. RAID01则是先做条带,然后再做镜象. 比如以6个盘为例,RAID10就是先将盘分成3组镜象,然后再对这3个RAID1做 ...
- RAID基础
磁盘类型 类型 IDE Integrated Drive Electronics SATA Srial ATA SCSI Small Computer System Interface FC Fibe ...
- 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...
- 3.raid基础应用
raid分为软备份和硬备份 软备份主要用来实验 应备份用于生产环境 raid0(带区卷) 具有很高的数据传输率,没有数据的冗余 1块磁盘 raid1(镜像卷) 提供数据冗余,利用率低 2块 ...
- [svc]raid基础知识-冷知识
参阅:磁盘接口与RAID Dell 服务器做Raid 1,raid形象理解(饮水机模型) http://dingyichao.blog.51cto.com/442449/698762 2,raid利用 ...
- 服务器RAID配置全程与RAID基础知识
服务器RAID配置全程 一.RAID介绍 RAID是Redundent Array of Inexpensive Disks的缩写,直译为“廉价冗余磁盘阵列”,也简称为“磁盘阵列”.后来RAID中的字 ...
- RAID基础知识总结
1.RAID RAID:Redundant Arrays of Inexpensive(Independent)Disks,即独立磁盘冗余阵列,简称磁盘阵列.简单地说就是把多个独立的硬盘组合起来,从而 ...
- hdu1151 Air Raid 基础匈牙利
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ...
随机推荐
- MYSQL实现主从复制
mysql主(称master)从(称slave)复制的原理: (1).master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做 ...
- django--models操作
1.models的功能 操作数据库 提交验证 在django的admin中,使用的是modelForms所以在验证的时候,尽管在models后有error_ message参数也不会根据此来提示.具体 ...
- An error occurred while processing an SVN command
今天在使用SmartSVN的时候,遇到这个问题,反复几次,也没有得到解决,而且进入了死循环,一直在提示这个消息,即使在cleanup之后. 百度了一番之后,找到了解决办法: 把出错的文件在本地删除掉, ...
- 快速将一个表的数据生成SQL插入语句
将一个表中的数据生成SQL插入语句,方便系统快速初始化,在数据库中执行创建以下过程就可以了. ) Drop Procedure GenerateData go CREATE PROCEDURE Gen ...
- https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU
https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU
- PHP发送和接收POST数据
1. 发送post数据 $data = '{ "id": "17999030", "method": "sayHello" ...
- (转载)spring mvc DispatcherServlet详解之一---处理请求深入解析
要深入理解spring mvc的工作流程,就需要先了解spring mvc的架构: 从上图可以看到 前端控制器DispatcherServlet在其中起着主导作用,理解了DispatcherServl ...
- Ubuntu 下安装 Mysql
这里讲用Ubuntu下安装MySql ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get ...
- iOS 如何在Label中显示html的文本
if (self.messageModel) { NSString * htmlString = self.messageModel.contentText; NSAttributedString * ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...