RAID的全称是Redundant Array of Independent Disks,即独立磁盘冗余阵列(以前叫:Redundant Array of Inexpensive Disks,即廉价磁盘冗余阵列)。RAID的基本思想是将多个便宜的硬盘组合起来,成为一个硬盘阵列组,使性能能和那些价格昂贵,容量大的高性能硬盘媲美。

    而RAID是怎么识别多个硬盘呢?RAID是把多个硬盘组合成成一个逻辑磁区,故操作系统会把它当作一个硬盘来使用。RAID常用于那些大型的服务器上,通过硬盘阵列,在一定程度上实现数据存放的安全性和快速的数据读写。

    RAID的有七个级别,但有时候我们也可以把两个级别合在一起用,下面是我们常用的RAID的级别及各自的特点:

    RAID 0:它是把多块硬盘当作一块硬盘,然后进行分区来使用。它的原理是把要写入的一块数据分成多个chunk存在多个磁盘上,多个chunk同时写入多个磁盘,这就增加了写入的速度;而当读数据的时候可以从这多个磁盘中读取存放的相应数据的多个chunk,这就提高了读出的速度;虽然,它大大提高了磁盘的性能,但是无冗余能力,因为数据是分chunk存放在多个磁盘中的,只要有一块磁盘坏掉,数据就不能用了。

    RAID 1:通常组合2,4,6...块磁盘来使用,其中一半的磁盘用于存放数据,而另一半的磁盘用于做镜像,也就是备份存放数据的那一半磁盘。它的原理是:写入的时候一块数据分成多个chunk,此时并不是多个chunk同时写入多个磁盘,而是一个chunk一个chunk的写入,每个chunk不仅要写入存放数据的一块磁盘,而且还要写入用于做镜像的一块磁盘,这样写入的速度就会不变,但读出数据时,则是从数据磁盘和镜像磁盘一起读,读出的速度快。这个级别,增加了磁盘的读取性能,而且提供了冗余功能,保证了数据一定程度的安全性。

    RAID 4:至少组合3块磁盘,其中有一块盘来用作校验盘。当存放数据的时候,校验盘用于存放数据的校验码,而数据本身分成多个chunk存放在多个磁盘上,读写性能都很高。由于有一个校验盘,如果有一块磁盘坏掉,可以利用校验盘和其它磁盘对数据进行恢复,这就增强了数据的安全性。而由于只有一块校验盘,每次操作都要计算校验码,会给校验盘带来很大的压力,校验盘容易坏掉。

    RAID 5:与RAID 4不同的是,但是数据的校验码会轮流存放在多个磁盘中,减小了校验盘的压力。

    RAID 6:至少需要组合4块磁盘,和RAID 5不同的是,校验码要存放两次,这样就可以允许坏掉两块磁盘。

    RAID 10:是RAID O和RAID 1的组合,至少需要4块磁盘,其中一半的磁盘用于存放数据,而另一半的磁盘用于做镜像,也就是备份存放数据的那一半磁盘。它的原理是:写入的时候一块数据也是分成多个chunk,此时并不是多个chunk同时写入多个磁盘,而是多个chunk不仅同时写入存放数据的的一半的磁盘,而且还要同时写入用于做镜像的另一半磁盘,这样写入的速度还是相当快的;读出数据时,则是从多个磁盘中一起读取数据的多个chunk,读出的速度更快,要高于写入的速度。这个级别,不仅增加了磁盘的性能,而且提供了冗余功能,保证了数据一定程度的安全性,这个应用比较广泛。

    RAID通常有软RAID和硬RAID之分:

    硬RAID的机制是:服务器上自带的有RAID芯片,或是服务器上有一个插槽,可以插主机适配器。这种机制广泛用于商业环境。RAID设备在系统中一般被识别为:/dev/sd*

    软RAID的机制是:在Linux中存在一个kernel模块,可以实现RAID。随着技术的发展,Linux现在这中应用机制已经比较成熟了。RAID设备在系统中一般被识别为:/dev/md*,并且软RAID还有一个局限是,它是以“磁盘分区”为单位创建RAID的。

    下面我们以在Linux中实现软RAID为例,介绍一下RAID的配置:

    首先,我们先了解一下mdadm命令,它是一个管理程序,用于和kernel模块通信,实现对RAID的管理。

     mdadm有五种模式,分别是:

     Assemble:装配模式,将已经停用的RAID设备重新装配使用

     Create:创建模式,主要建立新的RAID设备

     Follow or Monitor:监控模式,主要用于监控RAID设备的工作

     Grow:增长模式,可以用于给RAID设备增加新硬盘

     Manage:管理模式,用于删除,增加RAID设备。当使用--add,--fail,--remove等选项时,默认工作在管理模式

     mdadm  命令

     -A 指定装配模式

     -C 指定创建模式

     -F 指定监控模式

     -G 指定增长模式

     --add 用于添加磁盘设备

     --fail 用于停掉一块磁盘设备

     --remove 用于移除磁盘设备

     -v 可以显示详细信息

     -s 可以扫描或测试RAID

     -n 指定有几个分区来常见RAID

     -x 用于指定备用的空闲盘的个数

     -c 指定chunk的大小,默认为64K

     -l 创建RAID的级别

     -a 如果创建的设备不存在则自动创建

     -D 查看指定模块的详细信息

     一:要创建一个新的RAID设备,要做以下几步:

     fdisk /dev/sda

     创建磁盘分区,并且修改分区的id为“fd”,保存退出

     partprobe /dev/sda

     使kernel识别我们新分的区

     mdadm -C /dev/md1 -a yes -l 5 -n 3 /dev/sda6 /dev/sda7 /dev/sda8

     创建一个RAID 5设备md1,此设备有3个设备组成sda6,sda7,sda8

     lsmod | grep "dm_mod"

     查看dm_mod这个模块是否已经被kernel加载,如果没有搜索到,说明没有被kernel加载,则需要加载这个模块,使用命令:modprobe dm_mod

      mke2fs -j /dev/md1

      把这个RAID设备格式化为ext3的文件系统

      mkdir /myraid

      vi /etc/fstab

      /dev/md1 /myraid ext3 defaults 0 0

      在这个文件中添加如上行,可以保证这个raid设备在开机时被挂载,当下不生效

      mount /dev/md1 /myraid

      现在挂载这个RAID设备,这样我们现在就可以使用了

      二,查看信息

      mdamd --detail /dev/md1

      mdamd -D /dev/md1

      查看这个模块的详细信息

      三,添加移除,移除RAID设备

      mdadm /dev/md1 --add  /dev/sda9  (这个分区id必须为“fd”)

      增加这个空闲设备,如果其中有一块磁盘设备坏掉的话,它可以自动添加进去,并会自动进行数据同步      

      mdadm /dev/md1 --remove /dev/sda9

      移除这个设备 

      mdadm /dev/md1 --fail  /dev/sda9

      使这个设备标识为失败,这样/dev/sda9就不能用了

      四,停用RAID设备

      umount /myraid

      卸载RAID设备(如果想永久不使用此RAID,修改/etc/fstab,把上面对应的行删掉)

      mdadm -S /dev/md1

      停用这个RAID设备

      五,重新组装设备

      第一种方法:

      mdadm -A /dev/md1 /dev/sda6 /dev/sda7 /dev/sda8

      可以重新组装起这个设备,必须指定创建RAID的那几个分区,否则会失败

      第二种方法:

      mdadm -D -s >> /etc/mdadm.conf 

      如果事先将RAID的信息保存在/etc/mdadm.conf这个文件中,默认mdadm会从/etc/mdadm.conf这个文件中读配置信息

      mdamd -A /dev/md1

      直接就可以组装这个RAID设备         

本文出自 “” 博客,请务必保留此出处http://leejia.blog.51cto.com/4356849/798010