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)
上一篇 2016-12-13 07:56
下一篇 2016-12-13 10:12

相关推荐

  • Linux的自动化安装实现

    在介绍自动化安装系统之前让我们来回顾一下系统的启动流程,系统的启动大概分为一下几个步骤:加电自检 boot sequence(mbr)— boot loader –>kernel(initramfs)—>rootfs  /sbin/init大概就是这么几个过程了,接下来来介绍系统的安装,安装系统虽然看起来简单,普…

    系统运维 2016-09-19
  • python之psutil模块

    python 安装psutil 来实现获取系统信息  # yum -y install python*pip # yum -y groupinstall “Development Tools # yum -y install python34-devel.x86_64 # pip3 install –upgrade pip # pip3 inst…

    Linux干货 2017-03-08
  • raid各级别特性

      简介 RAID是一个我们经常能见到的名词。但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握。本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念。 RAID全称为独立磁盘冗余阵列(Rdeundant Array of Independent Disks),基本思想就是把 多个相对便宜的硬盘组合起来,成为一个硬盘阵列组…

    Linux干货 2016-01-19
  • Shell脚本编程基础中() (()) [ ] [[ ]] 的使用

    Shell脚本编程基础中() (()) [ ] [[ ]] 的使用 () 生成子进程,括号内的命令将会在子进程中运行,父进程不能够读取在子进程中创建的变量 例: 新建个脚本文件,写入 则执行结果为 $()相当于 ` `  ,返回括号内命令执行结果 (( )) 用作四则运算和逻辑运算,并且支持多个表达式 例: 当 (( )) 加$,则是将获得表达式值,赋值给左…

    2017-11-26
  • N25-第16周博客作业

    1、源码编译安装LNMP架构环境;     安装nginx:      1)安装依赖包 ]# yum groupinstall “Development Tools” “Development Libraries” -y ]# yum install wget openssl-devel ncurses-de…

    2017-05-21

评论列表(1条)

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

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