想把好多硬盘组在一起使用的基本方式为:连接所有硬盘,先向第一个硬盘中写数据,满了之后,再向第二个硬盘上写数据,如此只是简单的连通了多个硬盘。
再此基础上发展了RAID技术:由独立磁盘组成的具有冗余特性的阵列

1.RAID0技术

假设有4块硬盘,把每块硬盘根据硬盘中的扇区来分割成同样大小的块,因为硬盘中的扇区是真实存在的,块是我们抽象出来的,如此每个硬盘都被分为好几个块
此时存储方式是并行的将数据存入所有磁盘,即将数据同时写入所有磁盘的第一块。然后再同时写入所有磁盘的第二块

方法:数据被分成多块,同时并行的写入多个磁盘,而不是顺序写入
优点:并发IO操作。大大提供的IO速度,阵列的容量是整个磁盘的总和
缺点:只要有一块磁盘坏掉,整个数据就全部丢失

2.RAID1技术

RAID0是并行IO操作,但是有个问题,当整个阵列中有一个硬盘出现了问题,整个阵列就不行再使用了。为了解决这个问题,就有了RDIA1,增加镜像盘

方法:每次写数据,将同样一份数据写入两个硬盘里。其中一个做备份,每次写入都要写成功两块盘才算成功,数据块以位为单位打散在多块磁盘上存储
优点:提供了备份功能,当一个数据出现损坏,可以读取第二份
缺点:短板效应,速度取决于最慢的盘,容量取决于最小的盘,总容量是所有磁盘的1/2

3.RAID2技术

RAID1虽然有了备份,但是写入太慢,以及极大的浪费了硬盘容量。在此基础上通过设置校验盘,以减少冗余盘就有了RAID2

方法:采用汉明码进行数据校验,具有一位校验能力,每次读写之前先进行校验。每次IO的数据被以位为单位平均打散在所有数据盘上。
缺点:校验盘数量太多,开销太大,成本昂贵,比较初期的一种校验方式,现在已经不用了

4.RAID3技术

RAID2使用汉明码校验,造成很大的校验盘浪费,对校验方法进行改进,使用逻辑运算XOR,只需要一块校验盘,就有了RAID3,RAID2是用位计算写入,RAID3使用固定大小IO

方法:使用逻辑运算“亦或XOPR“来进行计算校验。每次IO的大小是4kb,而一个扇区固定大小是512B,这样根据多少盘就可以算出每次IO时对每个硬盘写入多少。一次IO尽量让每块磁盘的都参与
优点:校验效率较高,成本减少
缺点:不支持IO并发,一次IO是4KB,在同次IO下要操作所有的硬盘。对随机小块读写时,一个很小的IO(小于4KB)会占用所有盘

5.RAID4技术

RAID3的原理是每次写4KB,分散到每次磁盘。但是实际应用中的读写数据都要远远小于4KB,这样即使数据很小,但是还是每个磁盘都参与了,一次都能有一个IO操作,就会有很多磁盘闲置了。针对RAID3中IO不能并行的问题进行改善,就有了RAID4

方法:通过增大“条带深度”,如果一次IO操作,这个IO块小于条带深度,那么这次IO就被完全禁锢在一个磁盘上了,此时其他磁盘空闲就可以共存一个IO对空闲的磁盘进行操作
缺点:校验盘是瓶颈,每个IO不管目标在哪个数据盘,但是一定要读写校验盘。此时,虽然数据IO是并发,但是操作校验盘的时候依旧是一个一个来。所以在RAID3的基础上性能并没有提升

6.RAID5技术

RAID4只实现了数据盘上的并行IO操作,但是忘记了每次校验的时候IO都会霸占所有的校验盘。针对校验盘不能实现并行IO的问题,推出了RAID5

方法:把校验盘分割,打散在数据盘上。这样每次磁盘保存的有数据部分和校验部分
优点:实现了并发IO,随机读性能高。
缺点:写的性能差,因为每写一扇区的数据就要产生其校验扇区,一并写入校验盘。这个是有校验功能的通病。连续性不如RAID3

RAID5EE:RAID5使用的校验方法是逻辑XOR运算,只有一个硬盘损坏时,如果是读可以逆运算得到,但是却没办法写入了。此时可以在每个磁盘中分出一部分空间,如果有磁盘损坏,就把损坏磁盘上的数据分开保存在每次磁盘上。提供一个备份盘的作用。

7.RAID6技术

RAID5中还有一个问题就是:当只有一个校验盘时,如果是损坏一块盘还可以算出之前存的数据,但是如果损坏了两块盘就无法得到之前写入的数据了,为了解决这个问题,就有了RAID6

方法:增加校验码,通过组成方程组求解多个未知数
缺点:因为要多读写一个校验数据,写性能更差了

七种RAID技术的更多相关文章

  1. 几种RAID技术比较

    http://book.51cto.com/art/201310/412862.htm RAID(廉价磁盘冗余阵列)技术主要是为了改善磁盘的访问延迟,增强磁盘的可用性和容错能力.目前服务器级别的计算机 ...

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

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

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

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

  4. 1 RAID技术入门

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

  5. 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID10

    RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...

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

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

  7. 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100

    RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转载,写得相当不错,它对 RAID 技术的概念特征.基本原理.关键技术.各种等级和发展现状进 ...

  8. RAID技术全解图解-RAID0、RAID1、RAID5、RAID100【转】

    图文并茂 RAID 技术全解 – RAID0.RAID1.RAID5.RAID100…… RAID 技术相信大家都有接触过,尤其是服务器运维人员,RAID 概念很多,有时候会概念混淆.这篇文章为网络转 ...

  9. RAID技术超详细讲解

    RAID 技术是一种多磁盘技术,面对数据的各方面有着两面性的影响,整体来说优点大于缺点的,下面我将详细介绍一下 RAID ,简称磁盘阵列技术. 一.RAID 概述 1988 年美国加州大学伯克利分校的 ...

随机推荐

  1. 使用gradle 编译生成 apk出现的问题

    首先出现的问题是:  Failed to read key from keystore 是我的Key Alias 填写错了, 还有一种可能就是真的把key放错位置了

  2. /usr/bin/ld: cannot find -lxxx 的解决办法

    /usr/bin/ld: cannot find -lxxx 的解决办法 在软件编译过程中,经常会碰到类似这样的编译错误: /usr/bin/ld: cannot find -lhdf5 这表示找不到 ...

  3. Failed to resolve

    一: 把//classpath 'com.android.tools.build:gradle:2.2.2'改成classpath 'com.android.tools.build:gradle:3. ...

  4. 深入浅出MFC——MFC骨干程序(四)

    1. 熟记MFC类层次结构: 2. AppWizard可以为我们制作出MFC程序骨干: 3. Document/View支撑你的应用程序:Document/View的价值在于,这些MFC类已经把一个应 ...

  5. iOS - 转场时 appear 与 disappear 的调用顺序探索

    不同的转场方式 A.B viewDidDisappear调用的流程不同 在A页面跳转到B页面的过程中 A 的 viewDidDisappear 方法和 B 的 viewDidAppear 谁先调用? ...

  6. python+机器学习 算法用到的知识点总结

    1.浅述python中argsort()函数的用法 (1).先定义一个array数据 1 import numpy as np 2 x=np.array([1,4,3,-1,6,9]) (2).现在我 ...

  7. 浅析TCP字节流与UDP数据报的区别

    转自http://www.linuxidc.com/Linux/2014-11/109545.htm “TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但 ...

  8. margin-left:10px; 不同浏览器距离为什么不一样?

    这是一个ie的bug.. 如果你设置margin对象是浮动的.ie就会把你设置的值双倍处理..可以设置浮动对象的 display:inline 解决

  9. spring基础---->请求与响应的参数(一)

    这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...

  10. python中字符串(str)的常用处理方法

    str='python String function' 生成字符串变量str='python String function' 字符串长度获取:len(str)例:print '%s length= ...