1.什么是RAID?

RAID是容错廉价磁盘阵列,可以将多个小磁盘整合为一个较大的磁盘设备,不仅可以扩大磁盘的容量,还可以实现数据保护。

2.RAID等级

   RAID根据等级的不同,实现的功能和性能也有所不同

   RAID0 至少需要两块磁盘,在写数据前现将数据分为等大小的区块(chunk),然后将数据交叉存放到不同的设备中。优点是数据的读写性能好,缺点是如果有一块磁盘的数据损毁,整个文件就损毁了。

   RAID1 镜像模式,可以实现数据的完整备份,写数据的时候,将同一份数据完整的写到两块不同的磁盘上,磁盘的空间利用率为50%,读性能好,写性能较差。最大的优点是可以实现数据的完整备份。

   RAID 1+0 需要四块磁盘,先用两块磁盘实现RAID1,再用两个RAID1实现RAID0 

   RAID 0+1 需要四块磁盘,先用两块磁盘实现RAID0,再用两个RAID1实现RAID0

   RAID5 至少需要三块以上的磁盘实现,当任何一块磁盘有数据损毁的时候,可以通过同位检查码(parity)将数据恢复。举个例子 1+2=3,3可以看做是parity,当数据1损毁的时候,可以通过3-2=1得到损毁的数据(当然,具体实现肯定要比这复杂)。注意RAID5仅仅支持一块磁盘的损毁情况。

3.RAID的预备磁盘

  为了可以更快的抽换损毁的磁盘,可以准备预备磁盘,该磁盘平时不被RAID使用,当有数据损毁的时候,这块磁盘可以被主动拉入磁盘阵列替换损毁的磁盘。如果支持热插拔,则可以在线替换,不同关机。

4.软件磁盘阵列

  平时生产环境中使用的都是硬件磁盘阵列,磁盘阵列的管理通过磁盘阵列卡中的芯片实现,性能很好,缺点是磁盘阵列卡一般都很贵。

  软件磁盘阵列可以通过软件mdadm实现,但是会消耗较多的系统资源,性能较差。软件磁盘阵列的设备名为/dev/md#,我们可以通过软件磁盘阵列达到学习的目的。

5.软件磁盘阵列的设置

  下面我们通过mdadm来演练一下,达到学习的目的。

   mdadm的格式为

   mdadm --detail /dev/md#  #查看某个RAID设备的详细信息

   mdadm --create --auto=yes /dev/md# --level=N --raid-devices=N 

--spare-devices=N

   具体参数的含义:

   --create #创建RAID设备

   --auto=yes #后面指定软件磁盘阵列设备

   --level=N  #设置级别  建议只是用0 1 5

   --raid-devices=N  #设置几个磁盘设备作为RAID设备

   --spare-devices=N #设置几个磁盘作为预备设备

   下面实际演练一下,不实际操作永远得不到直观的经验,马哥的名言。。。。。。

   mdadm --create --auto=yes /dev/md0 --level=1 --raid-device=2 --spare-devices=1 /dev/sda{9,10,11}

    Linux基础(19)软件磁盘阵列RAID_Linux

     

    mdadm --detail /dev/md0

     Linux基础(19)软件磁盘阵列RAID_RAID_02

    格式化RAID设备并且挂载

    mke2fs -j /dev/md0

    mkdir /mnt/raid

    mount /dev/md0 /mnt/raid

    Linux基础(19)软件磁盘阵列RAID_Linux_03

    df /mnt/raid  #查看一下该设备我们可以看到设备的容量是100M ,因为我们创建的是RAID1设备,另一个100M的分区是作为镜像存在的。

    Linux基础(19)软件磁盘阵列RAID_Linux_04  

   下面我们模拟损毁一块磁盘,来实现热插拔的功能

   mdadm --manage /dev/md0

   --add 设备  #添加设备

   --remove 设备  #删除设备

   --fail  设备  #模拟损毁后面的设备

   mdadm --manage /dev/md0 --fail /dev/sda9  #很显然9换下去了,11换上来了。

   Linux基础(19)软件磁盘阵列RAID_RAID_05

   下面将出错的磁盘移除

   mdadm --manage /dev/md0 --remove /dev/sda9

   Linux基础(19)软件磁盘阵列RAID_Linux_06

6.如何正确的关闭RAID设备

关闭RAID设备不能简单的将其分区删掉,必须按照步骤,否则会是文件系统出错

  umount /mnt/raid  #先卸载

  sed -i "/^\/dev\/md0/d" /mnt/raid   #如果设置了自动挂载,将/mnt/raid哪一行删掉

  mdadm --stop /dev/md0 #关闭raid设备

  cat /proc/mdstat #确实不存在任何的数组设备

  vim /etc/mdadm.conf  #将开头的ARRAY那一行注释掉。

  Linux基础(19)软件磁盘阵列RAID_RAID_07