原创地址:http://www.cnblogs.com/jfzhu/p/3999283.html

转载请注明出处

 

独立硬盘冗余阵列RAID, Redundant Array of Independent Disks),旧称廉价磁盘冗余阵列Redundant Array of Inexpensive Disks),简称硬盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。RAID把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘。RAID常被用在服务器电脑上,并且常使用完全相同的硬盘作为组合。

 

(一)RAID级别

常见的有以下几种

RAID 0 – Disk Striping

RAID 1 – Disk Mirroring

RAID 5 – Disk Striping with Parity

 

 

(1)RAID 0

它将两个以上的磁盘串联起来,成为一个大容量的磁盘。它可以合并的硬盘数量是2-32个硬盘,合并后的硬盘容量即为每个硬盘容量的总和。举个例子,有四块硬盘,每个硬盘容量都是250GB,那么Disk Striping Array的容量就为1TB。

它在向磁盘存放数据时,将数据分段(以位或字节为单位)后分散存储在这些磁盘中。比如要保存一个Excel文档,这个文档的bit 1被写到磁盘1中,bit 2被写到磁盘2中,bit 3被写到磁盘3中,bit 4被写到磁盘4中,然后bit 5又被写到bit 1中,这样循环下去,只到整个文档都被写完。因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失,危险程度很高。

 

 

 

Volume = Sum(S1, S2, S3,…)

 

优点:硬盘利用率高,读写速度快

缺点:没有冗余功能

 

(2) RAID 1

Disk Mirroring 的意思是多块硬盘互为镜像,其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据,当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的,可靠性最高。RAID 1支持热插拔,如果有一块硬盘坏掉,可以把它直接拔下来,然后热插上一块新硬盘,新硬盘会把另一块硬盘内容拷贝过来。在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,但写入速度有微小的降低。另外无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。

 

 

 

 

Volume = min(S1, S2, S3…)

 

优点:冗余功能

缺点:硬盘写速度降低,硬盘利用率低

 

(3) RAID 5

RAID 5可以理解为是RAID 0和RAID 1的折衷方案,它兼顾了储存性能、数据安全和存储成本。RAID 5需要至少3块硬盘,它不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写高速缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。

 

Volume = (N - 1) * min(S1, S2, S3…, SN)

 

 

优点:磁盘容量利用率较高 (RAID 0 > RAID 5 > RAID 1)

        硬盘读速度较快(RAID 0 > RAID 5 > RAID 1)

        冗余功能

 

(4) RAID 10 / 01

RAID 10是先镜像再分割资料,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 01则是跟RAID 10的程序相反,是先分割再将资料镜像到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。

当RAID 10有一个硬盘受损,其余硬盘会继续运作。RAID 01只要有一个硬盘受损,同组RAID 0的所有硬盘都会停止运作,只剩下其他组的硬盘运作,可靠性较低。如果以六个硬盘建RAID 01,镜像再用三个建RAID 0,那么一个硬盘坏便会有三个硬盘离线。因此,RAID 10远较RAID 01常用,零售主机板绝大部份支援RAID 0/1/5/10,但不支援RAID 01。

 

 

 

           

应该说能够与RAID10竞争的只有RAID 5了,两者在不同的场景有大量的使用。在安全性上RAID 10要比RAID 5强,当RAID 5有一块硬盘损坏时,读性能有很大的下降,因为损坏硬盘中的数据要通过其他硬盘中的数据和校验一起才能计算出来,所以在数据库存储时一般选择RAID 10。在磁盘使用率上RAID 5要比RAID 10高很多,所以对安全性要求不是特别高的场合比如文件存储一般大量使用RAID 5。相反,安全性要求很高,不计成本,小数据量频繁写入的系统采用RAID 10的方式比较好。

 

 

(二)Size VS. Volume in RAID

Size >= Volume

RAID对每块硬盘所能使用的容量取决于容量最小的那块硬盘。以下图为例,三块硬盘的容量分别为500GB, 250GB, 100GB, 我们要做一个RAID 5阵列,那么每块硬盘可以使用的容量就为100GB。做出的阵列,Size为300GB, Volume为200GB。

 

 

 

(三)服务器磁盘阵列损坏时注意不要做的事情

当服务器的RAID的磁盘阵列坏掉时,不要break磁盘阵列,不要将一块磁盘拔出来,试图在其他地方进行数据恢复,因为这样可能会破坏磁盘阵列数据的完整性。

 

 

(四)实际应用情况

RAID2、3、4较少实际应用,因为RAID5已经涵盖了所需的功能,因此RAID2、3、4大多只在研究领域有实现,而实际应用上则以RAID 5为主。在数据库等重要领域一般使用RAID 10,所以在实际生产中要么选择RAID5,要么选择RAID10,当然也有少量的RAID6存在。除非特定厂商的产品有比较特殊的特定的选择。虽然RAID技术是一个很伟大的发明,但是除非在大型企业或数据中心中,一般不建议使用RAID。即便使用了RAID技术,做好系统备份与灾难恢复的工作也是十分重要的,比如如果RAID Controller坏掉了,可能厂商会第二天才会过来帮你换一个新的,又或者厂商已经倒闭,没有办法换一个新的RAID Controller,所以相对来讲,可能更为实惠可靠的方法是对数据做好灾备工作。

 

另外参见微软的文档 RAID Levels and SQL Server

RAID 概述的更多相关文章

  1. Linux创建RAID概述

    Linux创建RAID RAID概述 RAID(Redundant Array of Independent Disk)虚拟存储系统 RAID即独立冗余磁盘阵列,其思想是将多块独立的磁盘按不同的方式组 ...

  2. raid概述与CentOS7.4中raid5的搭建与测试

    前言 一.raid的定义与作用 raid(独立冗余磁盘阵列).raid技术通过把多个硬盘设备组合成一个容量更大的,安全性更好的磁盘阵列.把数据切割成许多区段后分别放在不同的物理磁盘上,然后利用分散读写 ...

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

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

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

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

  5. centos6中创建软raid方法

    raid概述: 组建raid阵列命令: mdadm:模式化的工具 /etc/mdadm.conf     -A  Assemble 装配模式     -C  Create 创建模式     -C:专用 ...

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

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

  7. 【Linux】LVM逻辑卷管理和RAID

    LVM概述: 是对磁盘分区进行管理的一种机制 是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不 够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现一种磁盘空 ...

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

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

  9. RAID技术超详细讲解

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

随机推荐

  1. C++字符串格式化库:CPPFormatLibrary

    这个是很久之前写的,去年总结了一下,将其单独提取出来,作为一个开源库放到了GitHub上,然而CPPFormat之类的名字都已经被抢注了,结果只好注册了一个这么蛋疼的名字:CPPFormatLibra ...

  2. Beginning Scala study note(4) Functional Programming in Scala

    1. Functional programming treats computation as the evaluation of mathematical and avoids state and ...

  3. Stack Overflow: The Architecture - 2016 Edition(Translation)

    原文: https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 作者:Nick Cra ...

  4. Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling".错误的解决方法

    问题描述: Eclipse启动时发生An internal error occurred during: "Initializing JavaTooling".错误的解决方法 解决 ...

  5. python 小程序 比较目录间的差异

    比较目录间的差异: I 只按照名称做了比较,如果目录的文件名称相同,但是内容不同脚本认为为相同文件 II 针对目录下面的目录没有循环比较,只是比较了目录的名称 import sys, os def d ...

  6. Keras官方Example里Mnist-cnn的调试运行

    问题:老板让测试运行Keras官网里的Mnist-cnn.py,结果从下载数据就是一路坑-- 当前环境:Ubuntu12.04.python2.7.Keras 1.1.1(不知道这个版本号对不对,在启 ...

  7. 最大流-最小割 MAXFLOW-MINCUT ISAP

    简单的叙述就不必了. 对于一个图,我们要找最大流,对于基于增广路径的算法,首先必须要建立反向边. 反向边的正确性: 我努力查找了许多资料,都没有找到理论上关于反向边正确性的证明. 但事实上,我们不难理 ...

  8. windows系统时间(SYSTEMTIME)

    GetSystemTime函数获得当前的UTC时间,GetLocalTime获得当前的本地时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,是由国际无线电咨询委 ...

  9. CentOS 6.5 Nginx 配置

    1.安装所有 http功能: ./configure --user=www-data --group=www-data --with-http_ssl_module --with-http_reali ...

  10. 统计学习方法 --- 感知机模型原理及c++实现

    参考博客 Liam Q博客 和李航的<统计学习方法> 感知机学习旨在求出将训练数据集进行线性划分的分类超平面,为此,导入了基于误分类的损失函数,然后利用梯度下降法对损失函数进行极小化,从而 ...