什么是RAID(Redundant Arrays of Independent Disks,RAID,磁盘阵列)?

    磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

为什么使用RAID技术?

  因为CPU得提升速度远大于磁盘空间的提升速度,而为了平衡计算机的处理性能,便需要使用昂贵的大磁盘来平衡,而这往往是不经济和不实用的。

为了满足生产需要并节约成本提高稳定性,则可以考虑使用RAID技术

RAID技术级别:

    RAID 0: 

  • 没有奇偶校验的条带


      RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。

      由多块硬盘并行构建,形成一个类似大磁盘。

      将数据流拆分,按规律分别存储到各个硬盘中,提升了I/O能力,但其中任何一个磁盘损坏则数据损坏无法恢复,安全性为1/N

wKiom1XipXyyXj7HAAJtoHy1c6E525.gif

    RAID 1:

  • 独立磁盘冗余阵列


  RAID 1通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

wKiom1Xipo-iXY-YAAB18Io9w3I776.gif

  RAID 2:

   带海明码校验陈列

  RAID 2是RAID 0的改良版,以汉明码(Hamming Code)的方式将数据进行编码后分割为独立的位元,并将数据分别写入硬盘中。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些。

wKiom1XipXyyXj7HAAJtoHy1c6E525.gif

 RAID 3:

 

  • 带奇偶验证码的并行传送  (按位存储)

    RAID 3是把数据分成多个“块”,按照一定的容错算法,存放在N+1个硬盘上,实际数据占用的有效空间为N个硬盘的空间总和,而第N+1个硬盘上存储的数据是校 验容错信息,当这N+1个硬盘中的其中一个硬盘出现故障时,从其它N个硬盘中的数据也可以恢复原始数据,这样,仅使用这N个硬盘也可以带伤继续工作(如采 集和回放素材),当更换一个新硬盘后,系统可以重新恢复完整的校验容错信息。由于在一个硬盘阵列中,多于一个硬盘同时出现故障率的几率很小,所以一般情况 下,使用RAID3,安全性是可以得到保障的。



RAID  4:

  带奇偶校验码的独立磁盘结构

     RAID4和RAID3很象,数据都是依次存储在多个硬盘之上,奇偶校验码存放在独立的奇偶校验盘上,唯一不同的是,在数据分割上RAID3对数据的访问是按位进行的,RAID4是以数据块为单位

     wKiom1Xiqt6gWJnJAADdTL9VhI0069.jpg


RAID 5:

  分布式奇偶校验的独立磁盘结构
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是目前运用较多的一种解决方案。

wKiom1XirPfD4UzLAACsrtR8yRU636.gif

RAID 6:

   两种存储的奇偶校验码的磁盘结构

  RAID-6 是在RAID-5基础上把校验信息由一位增加到两位的raid 级别。

   RAID-6和RAID-5一样对逻辑盘进行条带化然后存储数据和校验位,只是对每一位数据又增加了一位校验位。这样在使用RAID-6时会有两块硬盘用 来存储校验位,增强了容错功能,同时必然会减少硬盘的实际使用容量。以前的raid级别一般只允许一块硬盘坏掉,而RAID-6可以允许坏掉两块硬盘,因 此,RAID-6 要求至少4块硬盘。

wKiom1XisMXRMwGPAAGJzP3jIjo763.jpg


RAID 7:

 RAID 7全称叫“Optimized Asynchrony for High I/O Rates as well as high Data Transfer Rates(最优化的异步高I/O速率和高数据传输率)”,它与以前我们见到RAID级别具有明显的区别。RAID 7完全可以理解为一个独立存储计算机,它自身带有操作系统和管理工具,完全可以独立运行

wKiom1XisU-DkV1IAAD9SCjrXGw764.jpg


RAID 10:

  • 镜象阵列条带

Raid 10是一个Raid 0与Raid1的组合体,它是利用奇偶校验实现条带集镜像,所以它继承了Raid0的快速和Raid1的安全。我们知道,RAID 1在这里就是一个冗余的备份阵列,而RAID 0则负责数据的读写阵列。其实,图6只是一种RAID 10方式,更多的情况是从主通路分出两路,做Striping操作,即把数据分割,而这分出来的每一路则再分两路,做Mirroring操作,即互做镜像。

wKiom1XisnqC04pJAAB42ZIRnb4923.jpg



 CentOS 6上的软件RAID的实现:
                结合内核中的md(multi devices)

                mdadm:模式化的工具
                    命令的语法格式:mdadm [mode] <raiddevice> [options] <component-devices>
                        支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;

                    模式:
                        创建:-C
                        装配: -A
                        监控: -F
                        管理:-f, -r, -a

                    <raiddevice>: /dev/md#
                    <component-devices>: 任意块设备


                    -C: 创建模式
                        -n #: 使用#个块设备来创建此RAID;
                        -l #:指明要创建的RAID的级别;
                        -a {yes|no}:自动创建目标RAID设备的设备文件;
                        -c CHUNK_SIZE: 指明块大小;
                        -x #: 指明空闲盘的个数;

                        例如:创建一个10G可用空间的RAID5;

                    -D:显示raid的详细信息;
                        mdadm -D /dev/md#

                    管理模式:
                        -f: 标记指定磁盘为损坏;
                        -a: 添加磁盘
                        -r: 移除磁盘

                    观察md的状态:
                        cat /proc/mdstat

                    停止md设备:
                        mdadm -S /dev/md#

watch命令:
      -n #: 刷新间隔,单位是秒;
       watch -n# 'COMMAND'