我发现周围不少人在学习和理解RAID磁盘阵列的原理时,找了很多专业的资料来看,但是因为动手的机会比较少,因此看完以后还是似懂非懂,真正遇到实际的方案设计的时候,还是拿不定主意。
因此,我结合自己在过去几年中积累的实际项目经验,在这里通过最通俗的方式,来谈一谈我对几种常用的RAID磁盘阵列级别的理解,如有错误与不恰当之处,欢迎拍砖。
 
RAID0 是把两块物理盘组合成一块逻辑盘用,因此容量相当于等于二者之和,IO的读写也提高了(因为可以同时把数据分成两部分各写入两块物理盘中),但是安全性反而降低了,因为一旦其中一块盘坏了,整个逻辑盘就坏了;
总结:在不担心数据安全的情况下,RAID0是最佳的选择。
 
RAID1 是把两块物理盘做成完全相同的镜像,因此逻辑盘的容量仅相当于一块硬盘的大小,但是安全性却很高,任何其中一块盘坏掉,数据都没有影响,冗余程度1/2,找一块新盘换上去数据又可以自动重构,缺点就是牺牲了容量,以及降低了数据写入的IO(因为必须把每一份数据同时都写入到两块硬盘中);
总结:在优先考虑数据安全且不需要保证磁盘性能与容量的情况下,RAID1是最佳选择。
 
RAID5 是把三块物理盘做成一个逻辑盘用,其中有近一块盘的容量用来做奇偶校验,因此容量仅相当于两块硬盘,但支持其中一块硬盘损坏,冗余程度1/3,整体性能相当于介于RAID0与RAID1之间,属于性价比较高的一种RAID;
总结:在经济情况不太充裕的情况下既想保障磁盘性能与容量又想保障数据的安全,RAID5是最佳的选择。
 
RAID10 则由RAID0与RAID1组合构成,因此需要四块物理盘来构成一个逻辑盘,它集合了RAID0和RAID1的优点,既提升了IO的读写速度,又保障了数据的安全,可以有两块物理盘损坏,冗余程度1/2,缺点嘛显而易见,就是成本很高,且牺牲了两块硬盘的容量。
总结:在不差钱的情况下,RAID10是最佳的选择。
 
最后,需要提到的一点是,在超过2-4块硬盘做RAID的时候,其实也是由以上这种基础单元构成的,比如我拿16块硬盘做RAID10,就是由4组4块硬盘所构成的RAID10来实现的。
 
我买100GB的容量,我能用的是多少?我应该做哪一级的RAID?  首先我用一句话来描述各个RAID级别的原理。
         RAID0:将数据切割成块,将块同时写到几个硬盘中。RAID0提高了读写性能,没有容错能力。
         RAID1:将同一份数据同时写到2个硬盘中。写性能降低,读性能提高。有容错。
         RAID3:将数据写到几块硬盘中,一块盘做数据校验盘。有容错。
         RAID5:将数据写到几块硬盘中,一份校验数据分布中各个硬盘中。有容错。
         RAID6:将数据写到几块硬盘中,2份校验数据分布中各个硬盘中。有容错。
 
特征 RAID 0 RAID 1 RAID 5 RAID 6
最小磁盘数 2 2 3 4
数据保护 无保护 一块硬盘故障 一块硬盘故障 两块硬盘故障
读取性能 High High High High
写入性能 High Medium Low Low
读取性能退化 N/A Medium Low Low
写入性能退化 N/A High Low Low
利用率 100% 50% 67% - 94%
n/(n-1)
50% - 88%
n/(n-2)
典型应用 高性能 工作站, 数据计录, 实时翻译, 短暂的数据 运营系统, 交换数据库 数据存储, 网络服务,存档 数据存储, 备份磁盘, 高可用解决方案, 大容量服务器
 
总结:RAID0两块硬盘容量相加,提升性能,但坏一块就全坏,安全没保障;
RAID1两块硬盘同样内容,数据写入一写就两分,容量只有一块硬盘,性能低,但坏了一块没事,而且有保障;
RAID5三块硬盘其中一块做检验盘,容量利用率2/3,性能中等,允许坏一块,性价比最好;
RAID1+0四块硬盘结合0和1优点,性能高,安全有保障,可以坏两块。但利用率最低50%;
RAID6是RAID5升级版,六块硬盘,两块做检验,容量利用率4/6,允许坏两块硬盘,但两块坏了还不换硬盘就没了保障,但支持热备硬盘,出故障的硬盘上的数据会转移到热备硬盘上,并且自动进行重建,虽然成本高,数据写入慢,但有效的硬盘利用率和保障性是大容量存储的首选;
最后,上面是最低硬盘数量,也称基础单元,不能再少。比如我拿16块硬盘做RAID10,就是由4组4块硬盘所构成的RAID10来实现的。

快速理解几种常用的RAID磁盘阵列级别的更多相关文章

  1. 快速理解VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  2. RAID磁盘阵列及CentOS7启动流程

    1. 磁盘阵列 1.1 RAID,磁盘阵列磁盘通过硬件和软件的形式组合成一个容量巨大的磁盘组,提升整个磁盘的系统效能:RAID常见类型: RAID类型 最低磁盘个数 空间利用率 各自的优缺点 级别 说 ...

  3. RAID磁盘阵列介绍

    磁盘阵列 RAID介绍 一.简介: 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 最初是由加利福尼亚 ...

  4. RAID磁盘阵列原理

    磁盘阵列(Redundant Arrays of independent Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意.原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数 ...

  5. RAID磁盘阵列及CentOS7系统启动流程(week2_day3)--技术流ken

    RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便宜的磁盘,以硬件( ...

  6. RAID磁盘阵列及CentOS7系统启动流程

    磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意,,数据读取无影响.将数据切割成许多区段,分别存放在各个硬盘 ...

  7. 末学者笔记--Linux中RAID磁盘阵列及centos7启动过程

    <一>RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便 ...

  8. Linux系统的RAID磁盘阵列

    RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便宜的磁盘,以硬件( ...

  9. 【存储】RAID磁盘阵列选择

    RAID磁盘阵列(Redundant Arrays of Inexpensive Disks) 一个基本思想:将多个容量较小.相对廉价的磁盘进行有机组合,从而以较低的成本获得与昂贵大容量磁盘相当的容量 ...

随机推荐

  1. angular自己最近学的一种筛选方法

    投资状态vm.statusList = [ {name:"项目状态",value:-1}, {name:"上线",value:0}, {name:"投 ...

  2. __new__方法

    __new__:创建对象时调用,返回当前对象的一个实例__init__:创建完对象后调用,对当前对象的实例的一些初始化,无返回值 案例一: >>> class A(object): ...

  3. jquery手写实现单页滚动导航

    效果说明:点击tab导航,页面滑动到下方相应板块.并且当页面通过鼠标滚动下去时,上方的tab也可以自动切换到当前位置的板块上. 代码说明:js中对两个动作分别写,一个是tab点击下滑到相应板块位置:一 ...

  4. java 处理XML(dom4j-1.6.1)

    java 处理XML(dom4j-1.6.1) Java 处理xml有很多框架,今天使用主流框架dom4j-1.6.1 下载地址:http://www.dom4j.org/dom4j-1.6.1/ D ...

  5. .NET LINQ 数据分组

    数据分组      分组指将数据放入组中以便每个组中的元素共享公共特性的操作.   方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 GroupBy 对共享 ...

  6. linux允许80端口通过

    yum重装 http://www.07net01.com/storage_networking/Red_Hat_6_2_64ruheshiyongCentosdeYUMyuangengxinfangf ...

  7. 为何Redis要比Memcached好用(转)

    转载链接:http://blog.csdn.net/renfufei/article/details/40598889 GitHub版本地址: https://github.com/cncounter ...

  8. Linux C编程学习之开发工具1---GCC编译器

    GCC简介 GCC(GNU Compiler Collection)是一套功能强大.性能优越的编程语言编译器,它是GNU计划的代表作品之一.GCC以GPL和LGPL许可证发行,它是类Unix和苹果电脑 ...

  9. 参数max_allowed_packet

    通信信息包是发送至MySQL服务器的单个SQL语句,或发送至客户端的单一行. 当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误 ...

  10. DEV express 对Gridview某行的元素赋值

    1:获取选中的行某列的值 string colValue= this.gridView1.GetRowCellValue(this.gridView1.FocusedRowHandle, this.g ...