RAIDRedundantArrays of InexpensiveIndependent Disk):叫独立磁盘冗余阵列

其实现方式有:硬件实现方式和软件实现方式

 RAID是分级别(level)的,不同的级别代表不同的实现方式以及功能的不同

 RAID-0:一般叫条带卷,strip;分片进行存储,每个硬盘存一部分,没有备份

 RAID-1: 一般叫镜像卷,mirror;每个硬盘里都存一份,有备份

 RAID-2

 ...

 RAID-5

 RAID-6

 RAID10

 RAID01

RAID-0: 是使用两块或两块以上的硬盘,以两块为例,是把数据分成CHUNK(块),然后每个硬盘存一部分数据

      特点:读、写性能提升;

      可用空间:N*min(S1,S2,...)

      无容错能力

       最少磁盘数:2, 2+

RAID-1:是使用两块或两块以上的硬盘,以两块为例,是把数据分别拷贝进每个硬盘存一份,做备份

     特点:读性能提升、写性能略有下降;

        可用空间:1*min(S1,S2,...)

        有冗余能力

        最少磁盘数:2, 2+

RAID-5:使用3块或3块以上的硬盘实现,以3块为例,使用两块来按条带卷的形式存储数据,即每个硬盘存一部分数据,最后一块硬盘做校验盘,如果有一块硬盘坏了,令两块硬盘里的数据按位异或可以得到第三个盘的数据,但校验盘负荷比较大,会容易坏

        特点:读、写性能提升

        可用空间:(N-1)*min(S1,S2,...),有一块硬盘做校验盘,其他做数据盘,

        有容错能力:可以在坏1块磁盘的情况下正常工作,不过此时工作在降级模下

        最少磁盘数:3, 3+

     RAID-6

使用4块或4块以上的硬盘实现,以3块为例,使用两块来按条带卷的形式存储数据,即每个硬盘存一部分数据,最后两块硬盘做校验盘,如果有一块硬盘坏了,令两块硬盘里的数据按位异或可以得到第三个盘的数据

     特点:读、写性能提升

        可用空间:(N-2)*min(S1,S2,...)。有两块校验盘,其他做数据盘

       有容错能力:

       最少磁盘数:4, 4+

   混合类型

RAID-10:就是先RAID1然后在RAID0,先两两一组,作为镜像卷,然后在把所有镜像卷做RAID0,做成条带卷

    特点: 读、写性能提升

        可用空间:N*min(S1,S2,...)/2

       有容错能力:每组镜像最多只能坏一块;

       最少磁盘数:4, 4+

    RAID-01:就是先RAID0然后在RAID1;一般不会用

  常用的RAID级别有RAID0,RAID1,RAID5,RAID10;一般还会用JBOD:将多块磁盘的空间合并一个大的连续空间使用;

下面以CentOS6下实现软件RAID

    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设备的设备文件;

             -cCHUNK_SIZE: 指明块大小;

             -x#: 指明空闲盘的个数;

        D:显示raid的详细信息;

           mdadm -D /dev/md#

         管理模式:

            -f:标记指定磁盘为损坏;

            -a:添加磁盘

            -r:移除磁盘

            例:mdadm/dev/md0 -f /dev/sda6mdadm /dev/md0 -r /dev/sda6

        观察md的状态:

            cat/proc/mdstat

         停止md设备:

             mdadm-S /dev/md#

 

例如:创建一个10G可用空间的RAID53块应用,一块空闲(这样能保证坏两块盘,也能正常工作)

 

         首先要创建四个5G的分区,然后使用t选项修改三个分区的列表编号为fd

         然后使用partx  –a /dev/sda把分区加载到内核上,

然后使用cat  /proc/mdstat查看是否有RAID,没有的话然后创建,如果有名字不好建重复了

         使用mdadm -C/dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda[5,6,7,8]创建,

  [root@localhost~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda[5,6,7,8]

mdadm: /dev/sda5appears to contain an ext2fs file system

      size=5253220K  mtime=Sat Aug 2212:54:38 2015

mdadm: /dev/sda6appears to contain an ext2fs file system

      size=5253220K  mtime=Sat Aug 2212:59:07 2015

mdadm: /dev/sda7appears to contain an ext2fs file system

      size=5253220K  mtime=Thu Jan  1 08:00:00 1970

mdadm: /dev/sda8appears to contain an ext2fs file system

      size=5253220K  mtime=Sat Aug 2220:10:17 2015

Continuecreating array?

Continuecreating array? (y/n) y

mdadm:Defaulting to version 1.2 metadata

mdadm: array/dev/md0 started.

完成后,使用mke2fs -t ext4/dev/md0,对这个创建的md0进行格式化,

[root@localhost~]# mke2fs -t ext4 /dev/md0

mke2fs 1.41.12(17-May-2010)

Filesystemlabel=

OS type: Linux

Block size=4096(log=2)

Fragmentsize=4096 (log=2)

Stride=128blocks, Stripe width=256 blocks

657072 inodes,2624512 blocks

131225 blocks(5.00%) reserved for the super user

First datablock=0

Maximumfilesystem blocks=2688548864

81 block groups

32768 blocks pergroup, 32768 fragments per group

8112 inodes pergroup

Superblockbackups stored on blocks:

         32768, 98304, 163840, 229376, 294912,819200, 884736, 1605632

 

Writing inodetables: done                           

Creating journal(32768 blocks): done

Writingsuperblocks and filesystem accounting information: done

 

This filesystemwill be automatically checked every 30 mounts or

180 days,whichever comes first.  Use tune2fs -c or-i to override.

创建一个mydata目录,然后进行挂载mount  /dev/md0 mydata/,使用mount看是否挂载成功,使用 df –lh 查看创建的RAID的信息

[root@localhost~]# mount  /dev/md0 mydata/

[root@localhost~]# mount

/dev/mapper/vg0-rooton / type ext4 (rw)

proc on /proctype proc (rw)

sysfs on /systype sysfs (rw)

devpts on/dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on/dev/shm type tmpfs (rw)

/dev/sda1 on/boot type ext4 (rw)

/dev/mapper/vg0-usron /usr type ext4 (rw)

/dev/mapper/vg0-varon /var type ext4 (rw)

none on/proc/sys/fs/binfmt_misc type binfmt_misc (rw)

/dev/md0 on/root/mydata type ext4 (rw)

 

[root@localhost~]# df -lh

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/vg0-root   20G 287M   19G   2% /

tmpfs                 935M     0 935M   0% /dev/shm

/dev/sda1             190M   33M 148M  18% /boot

/dev/mapper/vg0-usr   9.8G 1.9G  7.4G  21% /usr

/dev/mapper/vg0-var    20G 195M   19G   2% /var

/dev/md0              9.8G   23M 9.3G   1% /root/mydata

这就算创建成功了,如果要开机自动挂载,需要写入/etc/fstab中,要先使用

blkid  /etc/md0查到UUID,进行编写,因为每次开机的设备名可能不同

[root@localhost~]# blkid /dev/md0

/dev/md0:UUID="ec8d3b6c-4599-4176-88e0-372cfd5b01c5" TYPE="ext4"