想把好多硬盘组在一起使用的基本方式为:连接所有硬盘,先向第一个硬盘中写数据,满了之后,再向第二个硬盘上写数据,如此只是简单的连通了多个硬盘。
再此基础上发展了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. 在Visual Stdio 2012中编译执行JM18.6的方法

    JM是H.264编码的官方实现,与X264开源实现相比,JM的实现比較完整,代码更加规范.并且同一时候提供了编码和解码过程.便于对照分析.可是JM的最大缺点是效率比X264低.因此.非常多应用都基于X ...

  2. 5 -- Hibernate的基本用法 --1 2 基本映射方式

    ORM工具提供了持久化类和数据表之间的映射关系.实际上,所有的ORM工具大致上都遵循相同的映射思路,ORM基本映射有如下几条映射关系: ⊙ 数据表映射类 : 持久化类被映射到一个数据表.程序使用这个持 ...

  3. 利用广播实现ip拨号——示例

    1.创建activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi ...

  4. RF-获取上个月份

    验证1: case ${NowDate} set variable 20170103 ${year} set variable ${NowDate[0:4]} ${month} set variabl ...

  5. The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make s

    我出现这个问题是引用资源文件问题 helper.getView(R.id.in_pic).setBackgroundResource(item.getResourceId()); //错的helper ...

  6. Python内置性能分析模块timeit

    timeit模块 timeit模块可以用来测试一小段Python代码的执行速度. class timeit.Timer(stmt='pass', setup='pass', timer=<tim ...

  7. thinkjs2.2中的定时任务

    暂且先讨论定时任务的其中两种实现方法: 1.setInterval() setInterval()可按照指定的周期(毫秒数计)来调用函数或者计算表达式: setInterval()方法会不停的调用该函 ...

  8. 如何创建圆角 UITextField 与内阴影

    本文转自http://www.itstrike.cn/Question/9309fbd6-ef5d-4392-b361-a60fd0a3b18e.html 主要学习如何创建内阴影 我自定义 UITex ...

  9. Lua中的控制结构

    Lua提供了一组传统的.小巧的控制结构,包括用于条件执行的if,用于迭代的while.repeat和for.所有的控制结构都有意个显式的终止符:if.for和while以end作为结尾,repeat以 ...

  10. angular-file-upload+struts的使用

    参考帖子 http://www.cnblogs.com/wangzun/p/6099884.html http://www.cnblogs.com/highriver/archive/2011/06/ ...