对于RAID,一直都知道个概念,但是对于细节没有去仔细的研究过。正好昨天Training的时候, 老师讲解了RAID的内容,所以顺便就整理一下。很多内容都是参考了ISMv2这本书。

RAID中用到的技术主要有

1. Striping

2. Mirroring

3. Parity

Striping(条带化): 就是将一块连续的数据分成很多小部分并把他们并行的存储到不同磁盘上去。其中涉及到几个术语 Strip,Stripe,Strip size,Stripe size。Strip就是在每个磁盘上预先定义好的一定数量的连续的Block。在RAID中所有磁盘上的Strip一起叫做一个Stripe。Strip size (Stripe depth)指的是一个strip中的最大数据大小即block number* block size。Stripe size指的就是stripe的大小即disk number * strip size。

Mirroring (镜像):就是将同一数据存储在两块不同的硬盘上,从而产生该数据的两个copy。当其中一块faulted,替换了新disk之后,Controller会自动将好的磁盘中的数据copy到新的磁盘中。

Parity(奇偶校验):主要是来为Striped RAID提供数据保护功能。利用位异或(XOR)的算法,将产生的校验值额外进行保存在磁盘上。可以是额外的一块磁盘,也可以分布在所有磁盘上。注意在ISM书中P56的例子是错误的。异或并非例子中的加减操作。关于Parity的计算可以参考:RAID 5 Parity. What is it, and how does it work? 。 写的很好理解。

对于这Striping,Mirroring,Parity有了基本的理解之后。下面就是RAID类型的介绍。RAID主要有这几种类型RAID 0, 1, 3, 5, 6, 10, 01。

RAID 0

直接采用Striping的技术,过程如下图所示。

读:对于每一个文件的读操作,RAID controller会去读取这个文件所有的strip,是一个并发的I/O,所以读性能比较好的。Disk数量越多,读性能越好。

写:和读操作类似,RAID Controller会分成多个strip写到各个disk中,所以写的性能比较好。

性能:读写性能比较好。适合高I/O的情景。

优点:I/O性能好。

缺点:没有数据保护。

RAID 1

采用mirroring技术,能够提够数据容错能力(fault tolerance)。这个也很好理解。过程如下图所示。

RAID 10

也叫做striped mirror。Disk 先做mirror,然后对这三个RAID1做striping。

RAID 01

是先将其中一半disk做RAID 0, 然后再做mirroring。

两者之间的性能和可用空间是一样的,在容错方面RAID 10 要优于RAID 01,在数据rebuild时候RAID 10 也是有优势的,所以RAID 01 很少见到。

1. 容错方面:由于RAID 10 是先做mirror.是多组RAID,可以允许最多一半的disk损害,前提是不在一个RAID1中。而RAID 01中,如果一块disk fault,那么这个RAID 0就fault。另外的一个RAID 0 无法容忍disk fault的情况,否则就是DL。

2. Rebuild过程: RAID 01 中,假设其中一块disk fault,如果要recovery。那么需要另外一个RAID 0 来做Mirror,将整个stripe的数据copy到对应的disk中,而对于RAID 10 来说,只需要去copy一个disk就可以了。

RAID 3

RAID 3 和RAID 5 类似,只是Parity 信息都写到一个disk中,由于每个写操作,会产生2 Reading+ 2 Writing的操作。并且其中的一个R ,W都是在这个Parity 的disk上,所以很容易造成这个disk的fault。实际中用的也不多。

RAID 5

RAID 5的Parity信息是写在各个disk中的,所以没有RAID 3 的单个disk瓶颈。

RAID 6

RAID 6中有两个Parity的信息,是写在各个disk中的,可以容忍两块disk的fault。具体算法牵扯到线性代数中的矩阵,大学的学的基本忘干净了。可以参考 这篇文章:RAID6算法解析

关于不同RAID Level的比较可以参考下图:

References:

1. RAID 5 Parity. What is it, and how does it work?

2. Data_striping

3. RAID-5 Volumes

4. 存储入门必读-存储基础知识

https://tonglol.wordpress.com/2014/01/16/%E5%AD%98%E5%82%A8%E5%85%A5%E9%97%A8-raid%E6%8A%80%E6%9C%AF/

存储入门 – RAID技术(大图解释)的更多相关文章

  1. 1 RAID技术入门

    序   RAID一页通整理所有RAID技术.原理并配合相应RAID图解,给所有存储新人提供一个迅速学习.理解RAID技术的网上资源库,本文将持续更新,欢迎大家补充及投稿.中国存储网一如既往为广大存储界 ...

  2. 大话存储 3 - 七种磁盘RAID技术

    RAID技术 Redundant Array of Independent Disks 由独立的磁盘组成的具有冗余特性的阵列. 有两个特性: 阵列:需要很多磁盘来组成 冗余:允许某块磁盘损坏之后,数据 ...

  3. 存储系列之 RAID技术原理简介

    引言:RAID技术是现代大规模存储的基础,“基础(技术)是拿来革命的”.我查raid相关资料时,查布尔运算,竟然一路查到“香农原理”,这不是有个视频中HW的任总提到的吗,多基础的东西,任总却毫不含糊, ...

  4. 【转】RAID 技术发展综述

    原文地址:https://blog.csdn.net/liuaigui/article/details/4581970   摘要 :现代企业信息化水平不断提高,数据已经取代计算成为了信息计算的中心.这 ...

  5. RAID技术介绍

    RAID技术介绍 简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAI ...

  6. 双机相关知识(原理、LVM、Raid技术)

    1        双机知识 1.1         预备知识 1.1.1     基本概念 双机热备:双机热备双机管理软件可以根据心跳自动检测环境运行情况,如果发现一个节点挂掉了,会自动切换到另外一个 ...

  7. [转]RAID技术介绍和总结

    以下内容转自伯乐在线:http://blog.jobbole.com/83808/ 原文出处: 涯余(@若东临于沧海) ---------------------------------------- ...

  8. RAID技术介绍和总结

    简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAID全称为独立磁盘冗 ...

  9. 高速掌握sinox2014激动人心的ZFS和RAID技术

    Sinox2014引入激动人心的zfs系统以及其支持的RAID,让用户高速打造便宜的高可靠性文件server. ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统( ...

随机推荐

  1. FPGA保留信号的语句

    (*synthesis,keep*) (*synthesis,probe_port,keep *) 例:(*synthesis,probe_port,keep *) wire e; 可用于wire型和 ...

  2. Liferay IDE3.1 M1的一些新功能

    定于11月发布的Liferay IDE提供了一些让人期许的功能 1. code upgrade tools 这个工具将会帮助你把liferay 6.2的项目升级为7.0的项目.下面列举其主要功能 1. ...

  3. 向Array中添加冒泡排序

    冒泡排序思想 通过在无序区的相邻元素的比较和替换,使较小的元素浮到最上面. 冒泡排序实现 Function.prototype.method = function(name, func){ this. ...

  4. android 开发 system/app目录下面有多个重复包名的apk,会不会冲突

    环境:已经拥有了root权限的android系统,我们的apk是开机启动 测试:将2个相同的版本拷贝到系统system/app目录下面 adb root #获取root权限,前提是已经开放了root权 ...

  5. SASS学习笔记_01

      scss两种格式 sass    大括号 scss   css写法   Arguments:  --no-cache –style compressed --update $FileName$:c ...

  6. 【转载】Oracle的方案(Schema)和用户(User)的区别

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:立正_敬礼_喊志哥     原文地址:http://my.oschina.ne ...

  7. 【Python】可变对象和不可变对象

    Python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string,flo ...

  8. 【POJ】【1821】Fence

    DP/单调队列优化 题意:k个人粉刷总长为n的墙壁(或者说栅栏?),每个人有一个必刷点s[i](这个人也可以一点也不刷,如果刷就必须刷这个点),最大粉刷长度l[i](必须是连续粉刷一段),和粉刷一格的 ...

  9. 通过HTTP访问网络资源

    添加访问网络的权限:<uses-permission android:name="android.permission.INTERNET"/> package com. ...

  10. html5离线存储

    为了提升Web应用的用户体验,我们在做网站或者webapp的时候,经常需要保存一些内容到本地.例如,用户登录token,或者一些不经常变动的数据. 随着HTML5的到来,出现了诸如AppCache.l ...