RAID(Redundant Arrays of Inexpensive Disk)。RAID可以透过一个技术,将多个磁盘整合为一个比较大的磁盘,还可以备份数据确保数据的安全性。硬件无价,数据有价,所以RAID很重要。然而RAID也有不同的level,整合后的硬盘就具有不同的功能。


RAID-0(等量模式stripe条带)

wKiom1MbyZ6xDVXyAAEPJ1uAMj4637.jpg(以下图片来自google)

   在组成RAID-0的时候,Disk1和Disk2都会被先分成一个个小区块(chunk)。当有数据写入RAID的时候,数据会被切割成与chunk一样大小的数据块,依次写进Disk1和Disk2(如图示,第一块数据A先写进Disk1,第二块数据B写进Disk)。这样不但提高了磁盘的容量,还提高了数据的读写性能。不过要注意的是如果有一块磁盘坏了,里面的所有数据都报废。

   例如有100M的数据写进磁盘,每一个块磁盘分别写入50M,且两块磁盘的容量要一致性能为佳。



RAID-1(镜像模式mirror)完整备份

wKiom1MbzGTD74TuAAESIzRBvns140.jpg

   当有数据写进磁盘的时候,RAID-1会自动复制一份数据,分别写进Disk1和Disk2,所以Disk1和Disk2的数据是一模一样的,就像mirror一样。这样的好处是,数据有冗余能力,即使有一块磁盘坏了数据都不会被抹掉。这样也有不好的地方,就是写入的性能下降,空间的利用率少



RAID 0+1, RAID 1+0

   既然RAID-0数据不安全,RAID-1效能不佳,那我们可以把它们整合起来组成一个RAID.

wKioL1Mbz0-zxFnMAAFHXjHcXkw178.jpg

   RAID 1+0)

      先把Disk 0和Disk 1组成第一组RAID 1, 再把Disk 2和Disk 3组成第二组RAID 1, 最后把这两组RAID 1组合成一组RAID 0。这样一来磁盘的读写性能都有提高,而且数据也有冗余备份,空间的利用率为1/2.

  RAID 0+1)

       和 RAID 0+1)差不多,只是组合次序不一样。同样可以提高磁盘的读写性能和数据的安全性问题。



RAID 5: 效能与数据备份的均衡考虑

wKioL1Mb06_zDLe4AAFbsdfXBNU501.jpg

   RAID 5至少要三个磁盘以上才能组成这种类型的磁盘阵列。每次有数据写入时,都会有部分的同位检查码(parity)被记录起来,并且记录的同位检测码每次都记录在不同的磁盘。当有一颗磁盘坏掉的时候,可以藉由其余磁盘的检查码来重建原本磁盘内的数据。RAID 5对于数据的读取的性能有提高,可是对于写入的性能不太显著,因为还要计算parity。空间的利用率为(n-1)/n。



software, hardware RAID

   hardware RAID是透过磁盘阵列卡来达成组合,磁盘列阵卡上面有一块专门的芯片在处理RAID的任务, 例如计算RAID 5的parity的时候不用消耗I/O总线和CPU的计算。由于hardware RAID性能好,所有一个磁盘阵列卡的价格也不低。因此就有software RAID来仿真磁盘阵列的功能。

   CentOS提供的software RAID为mdadm这套软件,这套软件会以partition或disk为磁盘的单位。所以有两个以上的的partition就能设计磁盘阵列了

   下面的链接很详细的讲解了sofeware RAID和hardware RAID

   http://www.ha97.com/4753.html

         


软件磁盘阵列的设定

   因为软件磁盘阵列是系统仿真的,因此使用的的装备文件名是系统的装配文件,文件名为/dev/md{0,1,2...}

   创建模式:

               -C, --create

                   专用选项:

                               -n, --raid-devices= 设备的个数

                               -x, --spare-devices=指定空闲盘的个数  

                               -c, --chunk=chunk的大小,2^n,默认为64k

                               -l, --level=级别

                               -a, --auto={yes,no..}=是否为其自动创建设备文件

   管理模式:

               --manage:

                               -a ,--add: add listd devices to a live array。把列出的设备加入阵列

                               -r, --remove: remove listed devices.列出的设备一定不能actibe。他们应该要是failed或者是spare 的设备

                               -f, --fail: make listed devices as faulty    

   查看RAID阵列的详细信息:

               # mdadm -D /dev/md#

   停止阵列:

               # mdadm -S /dev/md#

  题目一:利用4个1GB的partition组成RAID 5,利用一个1GB的partition设定为spare disk,并挂载在/mnt目录下

       1)先创建5个1GB的partition

       wKioL1Mb7HTz8aGWAAF_MWvq-2Q983.jpg

           分区完以后记得要partprobe

       2)以mdadm创建RAID

           # mdadm -C --auto=yes /dev/md0 -n=4 -x=1 -l=5 /dev/hda{7,8,9,10}  

       3)格式化和挂载使用RAID

           # mkfs -t ext3 /dev/md0

           # mount /dev/md0 /mnt


   题目二:仿真RAID错误的救援模式,fail /dev/hda8,然后让spare disk 自动开始重建系统  

       1)设定磁盘/dev/hda8为fail

           # mdadm --manage /dev/md0 -f /dev/hda8

           这个时候可以查看一下阵列/dev/md0的情况,可以发现fail devices这一项有数字

               # mdadm -D /dev/md0

       2)一段时间后,藉由spare disk重建完毕RAID 5

           # mdadm -D /dev/md0 查看已经修复好

       3)移除出出错的disk并加入新磁盘

           # fdisk /dev/hda1 (创建新partition /dev/hda11)

           # mdadm --manage /dev/md0 --remove /dev/hda8 (移除出错的disk)

           # mdadm --manage /dev/md0 --add /dev/hda11 (加入新的disk /dev/hda11)

       

    注意使用完RAID之后,一定要关闭

           # umount /dev/md0

           # mdadm --stop /dev/md0