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

类型
工作原理
特性
Raid0
2个或2个以上磁盘的组合,数据分成多个数据块,依次读入不同的磁盘,减少了IO,不过任何一块盘坏了,数据就不完整了
高性能
无容错、冗余能力
利用率100%
磁盘个数>=2
Raid1
又称为镜像磁盘,在一个磁盘中写入数据,另一个磁盘中写入相同的数据,有效的磁盘只有一块,利用率低
高性能
容错能力好
利用率1/n
磁盘个数>=2
Raid4
与前面不同的是,最后一块磁盘中存入的是校验码,有很好的容错能力
高性能
容错能力好
利用率n-1/n
磁盘个数>=3
Raid5
对radi4的改进,所有磁盘轮流做校验盘
性能提升
容错能力好
利用率n-1/n
磁盘个数>=3
Raid6
Raid5的升级,校验盘存了两个盘
性能提升
容错能力好
利用率n-2/n
磁盘个数>=4
Raid10
把raid1 组合成raid0,先做raid1后做raid0
高性能
容错能力好
利用率50%
       认识完raid的各个特性之后,接下来就是如何制作raid了
       raid的制作又分为两类:基于硬件的raid,基于软件的raid。我们主要学习软raid的制作。
 

     因此内核把底层设备识别成/dev/md0  /dev/md1等 格式为:
     mdadm [mode] <raiddevice> [options] <device>
     mode分为:

-A
装配模式
-C
创建模式
-n 指定几块盘
-x 指定有几块空闲盘
-c指定块大小(chunk)
-l指定raid级别
-F
监控模式
-G
增长模式
-D
查看raid的详细信息
-S
停止一个设备
--fail 或者-f
坏掉一个设备
--remove或者-r
移除一个设备
--add或者-a
添加一个设备
 
例1 创建一个6G的raid0
分析:raid0的磁盘块最少为2个,其利用率是100%因此可以创建2个3G的,或者是3个2G的。下面就创建2个3G的
[root@station11 ~]# fdisk –l
 

[root@station11 ~]# fdisk /dev/sda
//以下工作是创建2个3G的分区 分别为sda5 sda6
           n
           
           +3G
             n
            
           +3G
             T
             5
             Fd
             T
             6
             fd
             w
                          
//重新识别/dev/sda磁盘
 [root@station11 ~]# partprobe /dev/sda   
//把sda5 sda6创建为raid0
 [root@station11 ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda5 /dev/sda6 
 //格式化
 [root@station11 ~]# mke2fs -j /dev/md0
//挂载
[root@station11 ~]# mount /dev/md0 /mnt
[root@station11 ~]# cd /mnt
[root@station11 mnt]# ls
lost+found
//创建成功
 
        从上面的例子可以总结出:
           1、首先根据需要,分析应该创建几个多大的分区,并标识为fd;
           2、把对应的分区创建为对应的raid设备;
           3、并格式化而后挂载
 
例2:创建一个有1G空闲盘的raid5,大小为2G
分析:raid5最少是3个盘,其利用率是n-1/n,再加一个空闲盘,所以需要创建4个1G的空闲盘
 
[root@station11 ~]# fdisk /dev/sda
     ……
     ……..
//创建4个1G的表示为fd的分区,分别为sda5 sda6 sda7 sda8
[root@station11 ~]# partprobe /dev/sda
[root@station11 ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 5 /dev/sda{5,6,7,8}
[root@station11 ~]# mdadm -D /dev/md0                      //查看/dev/md0的详细信息
[root@station11 ~]# mke2fs -L DATA -b 2048 -E stride=32 -j /dev/md0
 
//-E stride用于定义一个chunk相当于多少个block
//block 为2048 stride=32相当于是block的32倍
 
[root@station11 ~]# mkdir /data
[root@station11 ~]# vim /etc/fstab
 
//添加最后一行,设置开机自动挂载到/data目录下
 

[root@station11 ~]# mount –a               //挂载
[root@station11 ~]# cd /data
[root@station11 data]# ls
lost+found                                               //OK raid5创建成功
 
//在raid5中可以允许坏掉一块盘,下面模拟/dev/sda5 坏掉了
[root@station11 data]# mdadm --fail /dev/md0 /dev/sda5
//把坏掉的sda5拿走
[root@station11 data]# mdadm --remove /dev/md0 /dev/sda5
//因为还有一个sda8为空闲盘,所以现在/dev/md0依然可以正常使用
//再假设又想把sda5投入使用,先添加进来,再使用增长模式
[root@station11 data]# mdadm –add /dev/md0 /dev/sda5
[root@station11 data]#mdadm –G /dev/md0 –n 4
[root@station11 data]#df -lh
 

//添加了一块磁盘进入/dev/md0仍然为2G,并没有增长,因为物理空间改变了,大师文件系统空间并没有改变则需要重建文件系统大小
//查看重塑的过程,重塑成功结束后,再重建文件系统大小就OK啦
 
[root@station11 data]#watch –n .5 ‘cat /proc/mdstat’
[root@station11 data]# resize2fs /dev/md0
[root@station11 data]#df -lh
 

//可以看到/dev/md0的大小增加了1G ok添加磁盘成功
 
      从上面的实验中应该初步了解了什么是raid以及软raid该如何创建,平时在工作中也会遇到这样的问题。实验一步步做完,写出来的,路过的点评一下 ^^ ^^