RAID磁盘阵列

什么是RAID?

   RIAD(Redundant Array of Independent Disk,独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会受到损坏硬盘的影响。

RAID的实现方式:

  RAID的实现方式有三种:

    1、外接式磁盘阵列:通过扩展卡提供适配能力
    2、内接式RAID:主板集成RAID控制器
    3、利用软件方式实现RAID功能

几种常用的RAID

1、RAID0

    即条带卷,RAID0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁盘的性能和吞吐量。
特点:
    容错能力:                 无 
    数据冗余:                 无
    写 性 能:                提升                             
    读 性 能:                提升
    需要的磁盘数:           2,2+                                    
    可用容量:              总的磁盘的容量
2.png
如图所示条带化有很好的性能。在RAID0(条带化)中数据将使用切片的方式被写入到磁盘。一半的内容放在一个磁盘上,另一半内容将被写入到另一个磁盘。在这种情况下,如果驱动器中的任何一个发生故障,我们就会丢失数据,因为一个盘中只有一半的数据,不能用于重建 RAID。

2、RAID1

    即镜像卷,把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力。
特点:
    容错能力:                   有
    数据冗余:                   有
    写性能:                    下降
    读性能:                    提升
    需要的磁盘数:               2,2+
    可用容量:                  总磁盘容量的50%
3.png
如图所示,镜像可以对我们的数据做一份相同的副本。假设我们有两个2TB的硬盘驱动器,我们总共有4TB,但在镜像中,放在RAID控制器后面的驱动器形成了一个逻辑驱动器,我们只能看到这个逻辑驱动器有2TB。当我们保存数据时,它将同时写入这两个2TB驱动器中。创建RAID1(镜像化)最少需要两个驱动器。如果发生磁盘故障,我们可以通过更换一个新的磁盘恢复RAID。如果在RAID1中任何一个磁盘发生故障,我们可以从另一个磁盘中获取相同的数据,因为另外的磁盘中也有相同的数据。所以是零数据丢失。由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID 1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而镜像盘的磁盘空间利用率低,存储成本高。 RAID1虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。

3、RAID 5

    即分布式奇偶校验,RAID5可以理解为是RAID0和RAID1的折衷方案,但没有完全使用RAID1镜像理念,而是使用了“奇偶校验信息”来作为数据恢复的方式。
特点:
    容错能力:                   有
    数据冗余:                   有
    写性能:                    提升
    读性能:                    提升
    需要的磁盘数:               3,3+
    可用容量:                  (n-1)/n的总磁盘容量(n为磁盘数)
4.png
RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 以四个硬盘组成的RAID5为例,其数据存储方式如图所示:图中,Ap为A1,A2和A3的奇偶校验信息,其它以此类推。由图中可以看出,RAID5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据,但是如果驱动器损坏个数超过1个会导致数据的丢失。RAID5可以为系统提供数据安全保障,但保障程度要比RAID1低而磁盘空间利用率要比RAID1高。RAID5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID5的磁盘空间利用率要比RAID1高,存储成本相对较低。

4、RAID6

    即双分布式奇偶校验,RAID6和RAID5相似但它有两个分布式奇偶校验。
特点:
    容错能力:                   有
    数据冗余:                   有
    写性能:                    提升
    读性能:                    提升
    需要的磁盘数:               4,4+
    可用容量:                  (n-2)/n的总磁盘容量(n为磁盘数)
5.png
RAID6技术是在RAID5基础上,为了进一步加强数据保护而设计的一种RAID方式,实际上是一种扩展RAID5等级。与RAID5的不同之处于除了每个硬盘上都有同级数据XOR校验区外,还有一个针对每个数据块的XOR校验区。当然,当前盘数据块的校验数据不可能存在当前盘而是交错存储的,具体形式见图。这样一来,等于每个数据块有了两个校验保护屏障(一个分层校验,一个是总体校验),因此RAID 6的数据冗余性能相当好,即使有2个驱动器发生故障,依然可以更换新的驱动器后重建数据。但是,由于增加了一个校验,所以写入的效率较RAID 5还差,而且控制系统的设计也更为复杂,第二块的校验区也减少了有效存储空间.

5、RAID10

    RAID10可以被称为1+0或0+1。它将做镜像+条带两个工作。在RAID10中首先做镜像然后做条带。在RAID01上首先做条带,然后做镜像。
特点:
    容错能力:                   有
    数据冗余:                   有
    写性能:                    提升
    读性能:                    提升
    需要的磁盘数:               4,4+
    可用容量:                  总磁盘容量的50%

1481211841889976.jpg          

8.png

                                                            

RAID01和RAID10非常相似,二者在读写性能上没有什么差别。但是在安全性上RAID10要好于 RAID01。如图中所示,假设DISK0损坏,在RAID10中,在剩下的3块盘中,只有当DISK1故障, 整个RAID才会失效。但在RAID01中,DISK0损坏后,左边的条带将无法读取,在剩下的3快盘 中,只要DISK2或DISK3两个盘中任何一个损坏,都会导致RAID失效。

 

软RAID创建示例:

创建一个大小为10G的RAID1,要求有空闲盘,而且CHUNK大小为128k。

第一步:先创建三个大小为10G的分区,分区类型修改为Linux raid autodetect
    [root@localhost ~]# fdisk -l /dev/sdb

    Disk /dev/sdb: 37.6 GB, 37580963840 bytes
    255 heads, 63 sectors/track, 4568 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xfeadeb63

       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1        1306    10490413+  fd  Linux raid autodetect
    /dev/sdb2            1307        2612    10490445   fd  Linux raid autodetect
    /dev/sdb3            2613        3918    10490445   fd  Linux raid autodetect

第二步:创建RAID1并指明CHUNK大小为128KB
    [root@localhost ~]# mdadm -C /dev/md0 -a yes -n 2 -x 1 -l 1 -c 128 /dev/sdb{1,2,3}
        \* -a 是否自动创建目标RAID设备的设备文件
           -n 指明RAID磁盘个数
           -x 指明空闲盘的个数
           -l 指明要创建的RAID级别
           -c 指明CHUNK大小
        */
    [root@localhost ~]# cat /proc/mdstat   \*查询md0状态*\
    Personalities : [raid1] 
    md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]
          10482112 blocks super 1.2 [2/2] [UU]

    unused devices: <none>

 

创建一个大小为4G的RAID5设备,chunk大小为256k,格式化为ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能。

第一步:创建五个大小为1G的分区,分区类型修改为Linux raid autodetect
    [root@localhost ~]# fdisk -l /dev/sdb
        Device Boot      Start         End      Blocks   Id  System
    /dev/sdb5             397         528     1060258+  fd  Linux raid autodetect
    /dev/sdb6             529         660     1060258+  fd  Linux raid autodetect
    /dev/sdb7             661         792     1060258+  fd  Linux raid autodetect
    /dev/sdb8             793         924     1060258+  fd  Linux raid autodetect
    /dev/sdb9             925        1056     1060258+  fd  Linux raid autodetect
第二步:创建RAID5并指明CHUNK大小为256KB
    [root@localhost ~]# mdadm -C /dev/md0 -a yes -n 5 -l 5 -c 256 /dev/sdb{5,6,7,8,9}

    [root@localhost ~]# cat /proc/mdstat 
    Personalities : [raid6] [raid5] [raid4] 
    md0 : active (auto-read-only) raid5 sdb9[5] sdb8[3] sdb7[2] sdb6[1]
          4236288 blocks super 1.2 level 5, 256k chunk, algorithm 2 [5/4] [_UUUU]

    unused devices: <none>
第三步:格式化为ext4文件系统
    [root@localhost ~]# mke2fs -t ext4 -L myraid5 /dev/md0

第四步:设置开机自动挂载
    [root@localhost ~]# echo "UUID=a4ed7b82-223f-bd1c-1b39-316a2c92d2bb /backup  ext4 acl,noatime 0 0" >> /etc/fstab

 

原创文章,作者:641348038@qq.com,如若转载,请注明出处:http://www.178linux.com/63040

(0)
641348038@qq.com641348038@qq.com
上一篇 2016-12-13 07:56
下一篇 2016-12-13 10:12

相关推荐

  • 计算机基础知识点

    说明:(仅仅记录个人认为重要的内容) CPU的相关概念 主频:主频是cpu的时钟频率(cpu clock speed),是cpu运算时的工作频率(1秒内发生的同步脉冲数) 的简称。单位是HZ,一般 来说,主频越高,cpu的速度越快。由于内部结构的不同,并非所有的时钟频率 相同的cpu的性能都一样  外频:系统…

    Linux干货 2017-02-14
  • Linux内核编译过程详解

    前言 Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。 Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订…

    Linux干货 2015-04-01
  • 权限解析

    一、文件权限        用户的创建的每个文件,都有自己特定的属性信息,比如文件类型,文件的权限,文件的所有者和所属组,以及文件的修改日期等属性组成。        文件的权限即是指文件本身赋予了用户什么样的权力,也就…

    2017-05-30
  • Shell脚本编程

    Shell脚本编程

    2017-09-20
  • shell脚本编程入门

    什么是shell脚本,其实,shell脚本就是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与命令(包含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能等这些命令的组合起来,以达到我们所想要的目的。 程序编程风格有两种: 过程式:以指令为中心,数据服务于指令。 对象式:以数据为中心,指令服务于数据。 过程…

    Linux干货 2016-08-18
  • mysql主从架构/模式

    MySQL Replication: Master/Slave Master: write/read Slaves: read 为什么? 冗余:promte(提升为主),异地灾备 人工 工具程序 负载均衡:转移一部分“读”请求; 支援安全的备份操作: … 主/从架构: 异步复制:master只需要完成自己的数据库操作即可。至于slaves是否收到…

    2016-11-27

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 12:28

    赞~能很好的了解各raid模式和使用场景会更好~继续加油~