磁盘阵列 RAID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘阵列 RAID相关的知识,希望对你有一定的参考价值。

简介

Redundant Arrays of Inexpensive Disks   :廉价冗余磁盘阵列
Redundant Arrays of Independent Disks   :独立冗余磁盘阵列

Berkeley: A case for Redundent Arrays of Inexpensive Disks RAID

提高IO能力:
    磁盘并行读写;
提高耐用性;
    磁盘冗余来实现

级别:多块磁盘组织在一起的工作方式有所不同;
RAID实现的方式:
    外接式磁盘阵列:通过PCI扩展卡提供适配能力
    内接式RAID:主板集成RAID控制器
    Software RAID:软件RAID

级别:level

RAID-0:0, 条带卷,strip; 
RAID-1: 1, 镜像卷,mirror;
RAID-2
..
RAID-5:
RAID-6
RAID10
RAID01

RAID-0: 
    读、写性能提升;
    可用空间:N*min(S1,S2,...),按最小一块磁盘容量的n倍
    无容错能力
    最少磁盘数:2, 2+
    降低了耐用性;非关键数据,中间的过程数据,丢了没关系

RAID-1:
    读性能提升、写性能略有下降;
    可用空间:1*min(S1,S2,...);最小一块磁盘容量就是RAID后的大小,
    有冗余能力
    最少磁盘数:2, 2+

RAID-4:
    最少3块磁盘;其中一块盘存储校验码,其它存储数据
    允许其中任意块盘坏掉,降级模式,
    1101, 0110, 1011
                异或(数字相同则为0,数字不同则为1)
    坏了一块,换新盘重做好RAID4之前不允许再坏;
    校验盘访问压力大,很容易造成性能瓶颈;

RAID-5:
    每块盘分出一部分做校验盘;轮流做校验盘,一般用左对称
    读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)
    有容错能力:1块磁盘,降级使用
    最少磁盘数:3, 3+

RAID-6:
    两块盘做校验盘,校验码存两次,
    读、写性能提升
    可用空间:(N-2)*min(S1,S2,...)
    有容错能力:2块磁盘
    最少磁盘数:4, 4+

混合类型
    RAID-10:
        先两两做成RAID1,再做RAID0;底层1,上层0,
        每一组RAID1镜像只能坏一个。
        读、写性能提升
        可用空间:N*min(S1,S2,...)/2;空间利用率50%
        有容错能力:每组镜像最多只能坏一块;
        最少磁盘数:4, 4+

    RAID-01:不推荐
        先分成两组,每组做RAID0,再两组做RAID1;
        只能允许一侧坏,
        空间利用率50%

    RAID-50:不推荐,冗余比RAID5还差;对性能要求高,数据不重要,
    RAID7:独有技术,性能好,价格贵,文件存储技术;

    JBOD:Just a Bunch Of Disks
        功能:将多块磁盘的空间合并一个大的连续空间使用;不同于RAID0,
        可用空间:sum(S1,S2,...)

常用级别:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD

软件RAID实现方式

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;

            创建四块分区的RAID0:
                # mdadm -Cv /dev/md0  -a yes -n 4 -l 0   /dev/sdb /dev/sdc /dev/sdd /dev/sde

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

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

例:

    # fdisk /dev/sda    #针对/dev/sda硬盘
    p           #查看 
    n           #创建 
    +10G
    n           #创建 
    +10G
    n           #创建
    +10G
    n           #创建
    +10G
    l           #查看,选fd Linux raid auto 
    t           #改格式
    7           #针对第七块盘
    fd          #选择 fd Linux raid auto 才可以测试软raid
    t
    8
    fd
    t
    9
    fd
    t
    10
    fd
    w           #保存退出

    # partx -a /dev/sda #刷新磁盘分区;重新加载
    # partx -a /dev/sda 直到全部识别

    创建RAID5
    # mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda{7,8,9,10}

    观察md的状态:
        # cat /proc/mdstat
        # ll /dev | grep "md"

    格式化:
        # mke2fs -t ext4 /dev/md0

    挂载 
        # mkdir /mydata 
        # mount /dev/md0 /mydata

    查看是否挂载完成
        # mount

    开机自启动
        # blkid /dev/md0    #查看UUID编号
        # vim /etc/fstab
        `UUID编号`  /mydata  ext4  defaults,acl   0 0

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

        搞坏一个:
            # mdadm /dev/md0 -f /dev/sda7       #标记损坏

        观察md的状态:会发现重新做同步,
            # watch -n1 ‘cat /proc/mdstat‘

        显示raid的详细信息:发现同步已完成,数据已修改
            # mdadm -D /dev/md0                 

        可以再坏一块盘,成降级使用
            # cp /etc/fstab /mydata
            # cat /mydata/fstab
            # mdadm /dev/md0 -f /dev/sda8   #此时sda7和sda8已损坏

        显示raid的详细信息:da7和sda8已损坏
            # mdadm -D /dev/md0 

        把坏的盘移除:
            # mdadm /dev/md0 -r /dev/sda7
            # mdadm /dev/md0 -r /dev/sda8

        显示raid的详细信息:发现只剩下sda9和sda10
            # mdadm -D /dev/md0

            ~]# mdadm -D /dev/md0
                /dev/md0:
                     Version : 1.2
               Creation Time : Fri May 8 09:20:35 2017
                  Raid Level : raid5
                  Array Size : 41909248 (39.97 GiB 42.92 GB)
               Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
                Raid Devices : 3
               Total Devices : 2
                 Persistence : Superblock is persistent

                 Update Time : Fri May 8 09:23:51 2017
                       State : clean, degraded(降级)
              Active Devices : 2
             Working Devices : 2
              Failed Devices : 0
               Spare Devices : 0

                      Layout : left-symmetric   #:左对称
                  Chunk Size : 512K
              Rebuild Status : 0% complete

                        Name : linuxprobe.com:0 (local to host linuxprobe.com)
                        UUID : 44b1a152:3f1809d3:1d234916:4ac70481
                      Events : 49

            Number  Major  Minor  RaidDevice  State
              3      8      10      0         active sync /dev/sda10
              2      0      0       2         removed
              4      8      9       2         active sync /dev/sda9

        再把第七块盘加进去
            # mdadm /dev/md0 -a /dev/sda7

        显示raid的详细信息:发现
            # mdadm -D /dev/md0

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

练习:

1:CentOS 6安装xfs格式的分区
    CentOS 6安装xfs格式的分区需要安装
        # yum install xfsprogs      # xfs格式化工具;
        # yum install xfsdump       # 备份和恢复xfs文件系统,可不用

    创建RAID0:(/dev/sdb /dev/sdc /dev/sdd /dev/sde)
        # mdadm -Cv /dev/md0 -a yes -n 4 -l 0 /dev/sdb /dev/sdc /dev/sdd /dev/sde

    格式化分区:mkfs.xfs deiver
        # mkfs.xfs /dev/md0

    挂载:
        # mkdir /data
        # mount /dev/md0 /data/

    开机自动挂载:
        # blkid /dev/md0    #查看UUID编号
         /dev/md0: UUID="e6db3bb2-3b4c-42fc-b213-f57518cedc08" TYPE="xfs"
        # vim /etc/fstab
         UUID=e6db3bb2-3b4c-42fc-b213-f57518cedc08 /data     xfs    defaults,acl   0 0    

2:创建一个可用空间为10G的RAID1设备,要求其chunk大小为128k,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录;

3:创建一个可用空间为10G的RAID10设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录。


本文出自 “毛虫小臭臭” 博客,请务必保留此出处http://moerjinrong.blog.51cto.com/11124564/1969411

以上是关于磁盘阵列 RAID的主要内容,如果未能解决你的问题,请参考以下文章

RAID 磁盘阵列详解,RAID分类及优缺点

linux基础-磁盘阵列(RAID)实例详解

RAID磁盘阵列详解之RAID 10的配置,集RAID 1的安全与RAID 0的快速于一体的磁盘阵列

raid磁盘阵列

RAID 磁盘阵列详解,RAID分类及优缺点

RAID 磁盘阵列详解,RAID分类及优缺点