zoukankan      html  css  js  c++  java
  • RAID的理解

    1.简介

    1.什么是RAID

    RAID ——Redundant Arrays of Inexpensive Disks,廉价冗余磁盘阵列,由数颗硬盘组成一个容错阵列系统。服务器或存储,硬盘都需要做RAID进行数据备份。

    2.使用RAID的好处

    1、提供硬盘串接,将所有的硬盘组成一个虚拟的大硬盘

    2、可将资料切割成许多区块,当读取或写入资料时以并行的方式对多颗硬盘进行存取动作,当硬盘颗数愈多时,愈能增加存取速度。

    3、通过镜像或异或校验提供硬盘容错功能。

    3.RAID的实现方式

    外接式磁盘阵列:通过扩展卡提供适配能力
    内接式RAID:主板集成RAID控制器,安装OS前在BIOS里配置
    软件RAID:通过OS实现

    4.RAID的级别概率

    RAID的实现分级别概念,用不同的数字代表,不同的RAID级别,实现不同的RAID特性。具体特性区别下面介绍。

    2.RAID的级别(常见的级别)

    1.RAID-0(生产中不常用)

     实现逻辑:用两块或以上相同容量(这里相同容量指的是几块盘的容量一样,不一样只会去相同部分,大概比方有两个盘,一个是20G,一个30G,它只会用那30G里的20G)的硬盘组成一个整体,读写数据的时候,他会把数据分成一条一条的,分别放到底层的几块磁盘里,如上图所示(一会把第一条数据放到Disk0,一会把第二条数据放到Disk1里面),所以RAID-0又被称为条带卷。

    优点:1.充分利用I/O总线性能使其带宽翻倍,读/写速度翻倍。

    2.磁盘利用率最高

    缺点:(1)不提供数据冗余。
    (2)无数据检验,不能保证数据的正确性。
    (3)存在单点故障。

    应用场景:
    (1)对数据完整性要求不高的场景,如:日志存储,个人娱乐
    (2)要求读写效率高,安全性能要求不高,如图像工作站

    最少磁盘数2, 2+

     2.RAID-1

     实现逻辑:即每个工作盘都有一个镜像盘,每次写数据时必须同时写入镜像盘,读数据时只从工作盘读出,一旦工作盘发生故障立即转入镜像盘,从镜像盘中读出数据。当更换故障盘后,数据可以重构,恢复工作盘正确数据。所以RAID又叫镜像卷,这里还需要注意一点,RAID-1因为是实时同步的,所以他只能防物理性损坏,而不能防止人为删数据。

    优点:数据安全性相对其它RAID级,是最好的。

    缺点:磁盘利用率只有50%,是所有RAID上磁盘利用率最低的一个级别。

    应用场景:

    1、财务

    2、金融

    最少磁盘数:2,2N

    3.RAID-4(一般不常用,是RAID-5的逻辑基础)

     实现原理:通过一个校验盘来记录另外几块硬盘的校验,当数据盘损坏一个的时候,可以通过异步校验算出坏掉硬盘的数据,那么什么是异步校验呢,数学上就相当于a+b=c,a和b任意一个值不知道了,我们都可以通过c-a或者c-b算出其值。

    优点:有冗余性,不过冗余性较低,只能坏一个数据盘。

    缺点:因为校验值,放在一个盘上,如果校验盘坏了,那他的作用就没了(在生产中,经常坏的就是校验盘,所以用的不多)

    最少磁盘数:3,3+

    4.RAID-5(RAID-4的优化版)

     实现原理:RAID-5是RAID-4的优化版,从图中我们看出,RAID-4的校验值,是都放在一块硬盘上,但是RAID-5的校验值是均匀的分配在每个盘上,图中的Ap,Bp,Cp,Dp都是校验值,这样就解决了RAID-4的问题。

    优点:有冗余性,解决了RAID-4的问题,读写性能提升

    缺点:从他的原理和我们看出,只能坏一块盘。异或较验影响存储性能

    磁盘利用率:(n-1)/n

    最少磁盘:3,3+

    5.RAID-6 (生产中用的少)

     实现原理:这里的实现原理是基于二元一次方程,这里的逻辑比较复杂,是基于伽罗华域算法(比较高深),这其中的算法有兴趣可以进行了解,这里我们只要知道这里有两个校验位,可以实现最多两块磁盘的损坏。

    优点:快速的读取性能,更高的容错能力。

    缺点:很慢的写入速度,RAID控制器在设计上更加复杂,成本更高。

    磁盘利用率:(n-2)/n

    最少磁盘:4,4+

    应用场景:在实际应用中RAID6的应用范围并没有其它的RAID模式那么广泛。因为实现这个功能一般需要设计更加复杂、造价更昂贵的RAID控制器,所以它一般也不会集成在主板上。

    6.RAID-10

     实现原理:从图中我们看出Raid-10(这里读一零不读十),是在Raid1的基础上做了一层Raid0。这个实现原理理解起来应该不复杂。

    优点:读写性能提升,有较好的冗余性,最多只能坏两块盘

    缺点:磁盘利用率不高,只能用一半

    最少磁盘:4,4+

    7.RAID-01

     实现原理:从图中我们看出Raid-01,是在Raid0的基础上做了一层Raid1。这个实现原理理解起来应该不复杂。

    优点:读写性能提升,有较好的冗余性,最多只能坏两块盘

    缺点:磁盘利用率不高,只能用一半

    最少磁盘:4,4+

    8.RAID-10和RAID-01的区别

    从上面两张图我们看出,他们除了底层的实现原理不同,什么磁盘利用率什么的都差不多,那他们到底有没有差别呢?有,就是容错性。

     RAID-10在坏掉Disk0盘的情况下,另外3块盘Disk1,2,3, 只怕在坏disk1,如果坏disk1整个系统就完了,所以有1/3系统崩溃的风险。

      RAID-01在坏掉Disk0盘的情况下,另外3块盘Disk1,2,3, 再怕坏disk2或者3,如果坏了一个整个系统就完了,所以有2/3系统崩溃的风险。

    总结:所以生产中RAID-10的安全性比RAID-01的更高,推荐使用RAID-10.

    9.RAID-50

     实现原理:先做RAID5,然后在RAID5的基础上做RAID0,所以他具有RAID5和RAID0的双重特性。

    优点:拥有RAID0和RAID5的双重特性,高可靠性存储、高读取速度、高数据传输性能。磁盘的可允许损坏率唯一,为1/3。

    缺点:上面讲的可损坏率1/3,具有局限性,列如上图所示RAID-50系统,底层有9块磁盘,那么损坏率1/3就代表可以接受3块物理盘损坏,这里的3块盘不是讲9块盘中任意3块盘,他只允许每个RAID5组内有一个磁盘出现故障,这个意思比较明确了吧,意思就是讲如果这3块盘中有两个盘出现在一个RAID5组内,那么整个RAID-50系统也就崩溃了

    最少磁盘:6,6+3n

    应用场景:它最适合需要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事务处理和有许多用户存取小文件的办公应用程序。RAID 50提供了接近RAID 10性能、可用性以及接近RAID 5成本的特性,具有较好的整体性价比优势,所以考虑使用RAID 50替换RAID 10吧

    10.JBOD(其他RAID级别)

     实现原理将多块磁盘的空间合并一个大的连续空间使用 ,写入是一块一块的写,写满第一块,写第二块。

    优点:底层磁盘可以大小不一致,可以充分利用磁盘空间

    缺点:没有冗余性,坏了一块盘,数据也就丢失了。

    应用场景:适合家庭环境使用,可以将买来大小不一致的盘整合到一块使用

  • 相关阅读:
    sfs2x 连接 mongodb
    java websocket
    webstorm 4.0 注册码
    解决 sfs2 admin tool 找不到扩展
    window 注册表五大类
    opengl 学习第二日
    java google Protobuf
    扩展 java sencha touch PhonegapPlugin
    sencha touch2 kryonet socket phonegap 通信 作者:围城
    sencha touch2 layout 笔记
  • 原文地址:https://www.cnblogs.com/qingbaizhinian/p/13205588.html
Copyright © 2011-2022 走看看