RAID被称为廉价的冗余磁盘阵列,这是由于在早期的磁盘很小,性能差,易损坏。所以RAID主要的做法就是把多个便宜的小磁盘组合到一个磁盘组,使性能和磁盘容量都可以达到相当于昂贵的磁盘性能。

   根据RAID的组合方式不同,RAID又有不同的RAID LEVEL(这个级别仅代表磁盘组合方式不同,没有上下之分),

   raid级别分类:

*  RAID 0:

   也被称为条带模式,一个文件的数据通过控制芯片发向底层芯片存储到磁盘块时,把数据的大小分成每个具有一定大小的单位存储到并行的每个磁盘对应的位置,形成一个类似条带的存储结构。这种模式至少需要2块盘,这种模式充分提高了空间利用率,也提高了数据的存储读写性能,但由于这种模式没有冗余能力,所以如果某块磁盘的数据一旦丢失或损坏,就会导致数据无法复原。

   

* RAID 1:

     被称为镜像模式,一个文件的数据通过控制芯片发向底层芯片存储到磁盘块时,将数据写入磁盘时同时也写入镜像的磁盘中。这种模式的空间利用率只有1/2,并且写性能下降,但是读性能有一定的提高,冗余能力也提高了一倍。至少需要的盘数为2N


*RAID 4:

    被称为RAID检验码,当具有n个盘时,与条带模式相似,但是它是把数据平均分配到n-1的磁盘块中,把剩下的那个磁盘块用来存储前面各个磁盘的检验码。这种模式的磁盘利用率为n-1/n,它提升数据的读写性能,并且允许一个磁盘出错,有一定的冗余能力

linux下的raid及mdadm的命令详解_磁盘


* RAID 5

    在RAID4的基础上,让每一个的磁盘都当做检验磁盘。


* RAID 0+1

     先条带,后镜像,如图:这种模式提升了读写性能,有冗余能力,空间利用率为1/2,但是,如果其中一个条带上的磁盘损坏,就会影响整个的raid磁盘阵列。至少需要4块磁盘。

 linux下的raid及mdadm的命令详解_raid_02


* RAID 1+0

   先镜像,再条带。如图,这种模式也提升了读写数据的性能,有冗余能力,空间利用率为1/2,且如果某个条带中的磁盘损坏,直接调用这个条带中的镜像磁盘来修复,提高了磁盘的修复速度。它也至少需要4块磁盘



    linux下的raid及mdadm的命令详解_linux_03


* jbod:将多个小盘组合成大盘

   无性能表现,无冗余能力,空间利用率百分之百,至少需要2个盘。    

 

RAID

目前 RAID技术大致分为两种:基于硬件的RAID技术和基于软件的RAID技术。其中在Linux下通过自带的软件就能实现RAID功能,这样便可省去购买昂贵的硬件 RAID 控制器和附件就能极大地增强磁盘的 IO 性能和可靠性。由于是用软件去实现的RAID功能,所以它配置灵活、管理方便。同时使用软件RAID,还可以实现将几个物理磁盘合并成一个更大的虚拟设备,从而达到性能改进和数据冗余的目的。当然基于硬件的RAID解决方案比基于软件RAID技术在使用性能和服务性能上稍胜一筹,具体表现在检测和修复多位错误的能力、错误磁盘自动检测和阵列重建等方面。


md:内核模块

    mdadm:(md管理器)将任何设备做成RAID

    模式化命令

             创建模式:

                     -C

                            专用选项:

                                    -l #:级别

                                    -n #:设备个数

                                     -a  {yes|no}:自动为其创建设备文件

                                    -c #M:指定chunk(数据块单位的大小)

                                     -x #:指定空闲的磁盘个数 

               管理模式:

                      --add,--remove(增加移除某个磁盘块),-f(--fail,--set-faulty)(用来模拟损坏磁盘的)

                    mdadm  /dev/md#  --add /dev/sda#

               监控模式:

                      -F

               增长模式:

                      -G

               装配模式:

                     -A

模拟软件  RAID5:

    2G, 加一个空闲盘

1,fdisk /dev/sda  创建4个为1G的逻辑分区来模拟磁盘

2,创建RAID5模式

     mdadm  -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sda5 /dev/sad6 /dev/sda7 /dev/sda8

     cat /proc/mdstat (查看创建的完成情况)

3,格式化

     mke2fs -j /dev/md0

4,挂载

     mount /dev/md0 /mnt

损坏某个磁盘分区

mdadm /dev/md0 -f /dev/sda5
移除损坏或空余的磁盘分区
mdadm /dev/md0 - r /dev/sda5
添加一个空余的磁盘分区进入md0模式中
mdadm /dev/md0 -a /dev/sda8
停止RAID阵列
mdadm -S /dev/md#
重新驱动
mdadm -A /dev/md0 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8