想把好多硬盘组在一起使用的基本方式为:连接所有硬盘,先向第一个硬盘中写数据,满了之后,再向第二个硬盘上写数据,如此只是简单的连通了多个硬盘。
再此基础上发展了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. Android输出日志到电脑磁盘

    使用Eclipse查看Log有时候挺恶心的,有些Log ADB会自动的清除,所有有时候导致抓不到有效的Log,把Log保存到文件,然后通过文本查看器查看,感觉好Happy,下面就是脚本文件: adb ...

  2. 恶劣条件下的apache配置(Linux)

    (本文出自yangjj ^_^)   前提:1.没联网,yum挂.2.至少要有GCC,要不玩个屁. 3.你有充足的咖啡并且有几个小时时间不想打dota. 4.你要做集群. 以上条件不满足其一,看到这里 ...

  3. 【NodeJS】http-server.cmd

    npm install http-server @echo off  start cmd /k "D:\Program Files\nodejs\node_global\http-serve ...

  4. Mysql Bypass小结

    总结一些Bypass的方法, 1. 绕过空格过滤,使用注释/**/来替换 绕过安全狗简单的两个方法: /*'+'*/ /**a*/ 2.使用大小写绕过某些关键字的过滤 SeLeCT * From te ...

  5. 【RF库Collections测试】List Should Not Contain Duplicates

    Name:List Should Not Contain DuplicatesSource:Collections <test library>Arguments:[ list_ | ms ...

  6. SpringBoot(十二)-- 整合Redis

    1.pom依赖 <!-- 添加redis支持 --> <dependency> <groupId>org.springframework.boot</grou ...

  7. ubuntu 手动安装mysql

    申请了一台云主机,需要手动安装所有环境,今天将mysql安装过程记下. 安装mysqla. 下载不了gcc, 需要先运行apt-get updateb. cmake报错,每次要先删除cmakeCach ...

  8. 实现iOS中的链式编程

    谈到链式编程,那Masonry几乎就是最经典的代表.如: make.top.equalTo(self.view).offset() 像这样top.equalTo(self.view).offset(6 ...

  9. 转:git windows中文目录乱码问题解决

    Git的Windows版本Msysgit对中文的支持不够好 当使用时,会出现以下三种情况的中文乱码: 1.ls不能显示中文目录 解决办法:在git/git-completion.bash中增加一行:  ...

  10. mysql 创建merge表方便查询

    SELECT COUNT(*) FROM `comment` SHOW CREATE TABLE `comment` CREATE TABLE `comment1` ( `id` ) NOT NULL ...