Raid

Raid简介:

    Raid技术是将多个磁盘合成一个“阵列”来提供更好的性能、冗余、或者两者都提供。

Raid优点:

1、提高IO性能:磁盘并行读写。
2、提高耐用性:磁盘冗余来实现

Raid实现的方式:

    外接式磁盘阵列:通过扩展卡提供适配能力。
    内接式Raid:主板集成Raid控制器,安装OS前在BIOS里面配置。
    软件Raid:通过OS来实现。

Raid常用组合方式简介

    1、RAID0:  读写性能提升,可用空间为单块硬盘的N倍(N为磁盘数量),无容错能力,最少磁盘数为2.
    2、RAID1: 读性能提升、写性能略有下降,可用空间为所有硬盘容量的一半,最少磁盘数为2.
    3、RAID5: 读写性能提升,可用空间为所有硬盘中损失一块硬盘呢的容量,有容错能力且允许最多损坏一块硬盘,最少磁盘数为3.
    4、RAID10:多块磁盘先实现RAID1再实现RAID0, 读写性能提升,可用空间为所有磁盘容量的一半,有容错能力且每组镜像最多允许损坏一个磁盘。做少磁盘数4.容错能力强于RAID01
    5、RAID01: 多块磁盘先实现RAID0再实现RAID1,。
    6、JBOD: 将多块磁盘的空间合并成一个大的连续空间使用。可用空间为所有磁盘数量之和。

软件RAID实现之实现工具介绍:

    mdadm:模式化工具
    命令的语法格式:

1
mdadm [mode] <raiddevice> [options] <component-devices>

    支持的raid级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
mode:
        创建:-C
        装配:-A
        监控:-F
        管理:-f,-r,-a
        < raid device>:/dev/md#
        < component-device>:任意块设备
    -C:创建模式
        -n#:使用#个块设备来创建此RAID
        -l#:指明要创建的RAID级别
        -a{yes|no}:自动创建目标RAID设备的设备文件
        -c CHUNK_SIZE:指明块大小,单位K
        -x#:指明空闲盘(备用)的个数
    -D:显示raid的详细信息
        mdadm -D /dev/md#
    管理模式:
        -f:标记指定磁盘为损坏
        -a:添加磁盘
        -r:移除磁盘
    观察md的状态:cat /proc/mdstat

实验案例:软RAID0配置示例:

    1、在虚拟机新增四块容量为10G的虚拟磁盘用于实验。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
```
&ensp;&ensp;&ensp;&ensp;2、在磁盘sdb和sdc分别创建一个1G大小的分区。
```bash
[root@node01 ~]#fdisk -l /dev/sdb

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x757003e5

Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 fd Linux raid autodetect
[root@node01 ~]#fdisk -l /dev/sdc

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x757003e5

Device Boot Start End Blocks Id System
/dev/sdc1 2048 2099199 1048576 fd Linux raid autodetect
```
&ensp;&ensp;&ensp;&ensp;3、使用mdadm命令创建raid0磁盘阵列。
mdadm -C /dev/md0 -n 2 -l 0 /dev/sd{b,c}1
1
&ensp;&ensp;&ensp;&ensp;4、格式化刚才创建的raid0磁盘阵列。
mkfs.xfs /dev/md0
1
&ensp;&ensp;&ensp;&ensp;5、将刚才创建的磁盘阵列挂载到/mnt/raid目录下。(此挂载目录可以自行指定)
mount /dev/md0 /mnt/raid
1
2
3
至此,创建的raid0磁盘阵列已经可以正常使用。  
&ensp;&ensp;&ensp;&ensp;**扩展命令**
&ensp;&ensp;&ensp;&ensp;a、生成配置文件:
mdadm -Ds >> /etc/mdadm.conf
1
b、停止raid设备:
mdadm -S /dev/md0
1
c、激活设备:
mdadm -As /dev/md0
1
d、强制启动:
mdadm -R /dev/md0
1
f、删除raid信息:
mdadm --zero-superblock /dev/sdb1
1
2
3
4

## 实验案例:raid5配置示例
&ensp;&ensp;&ensp;&ensp;1、按上述实现步骤2在4块新增磁盘分别在创建一个容量为1G的分区用于实验。(详细过程不在赘述,参考上一实验相关步骤)
&ensp;&ensp;&ensp;&ensp;2、使用mdadm命令创建raid5磁盘阵列。
mdadm -C -n3 -x1 -l5 /dev/md1 /dev/sd{b2,c2,d1,e1}
1
3、格式化刚才创建的raid5磁盘阵列。
mkfs.xfs /dev/md1
1
2
3
4
5
6
7
8
9
4、将创建







&ensp;&ensp;&ensp;&ensp;a、将raid0磁盘阵列故障模拟
mdadm /dev/md0 -f /dev/sdb1
&ensp;&ensp;&ensp;&ensp;b、移除有故障