RAID0RAID6,不同级别的RAID在性能、冗余、价格等方面做了不同程度的折中。组合不同级别的RAID,目的是扬长避短,产生具有优势特性的混合RAID级别。常用的组合RAID主要有RAID10,RAID01,RAID50RAID05.

RAID10是先做1,再做0;而RAID01则是先做0,在做1RAID50RAID05同理。

 

一、RAID10RAID01

RAID10结合RAID1RAID0,先镜像,再条带化。比如现在有6块硬盘,其中每两块形成一组镜像——RAID1,然后将3组镜像合起来做成RAID0RAID10的磁盘利用率是50%,它允许同组镜像阵列里坏一块,但是如果一组镜像阵列里两块都坏了,那么整个镜像都坏了,进而整个阵列都无法工作了。

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_RAID

RAID10的特性

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_文件系统_02

RAID01则是先将6块磁盘分成两份,形成镜像,每一份中的三块磁盘做成RAID0的形式。它允许一组镜像坏掉,但不能两组镜像都坏。RAID01的风险大于RAID10,因为每组阵列各坏一块磁盘的可能性,要大于一组磁盘镜像里同时坏多块磁盘的情况。因此出于安全性和易用性的考虑,RAID10使用更为广泛。

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_Linux_03

二、RAID50RAID05

RAID50RAID5RAID0的结合,先实现RAID5,再条带化。它和RAID10的情况非常相似,假设也是6块磁盘,每三块做成RAID5,一共是两组,合起来做成RAID0

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_RAID_04

RAID50的特性

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_Linux_05

RAID50的利用率要根据盘的数量来定,比如同样是用12块盘做RAID50,它可以使用的方案有3*44*36*2,而做成RAID5的盘中有一块是冗余的,故可能产生三种不同的冗余数量,这就导致了总共冗余数量可能是432,从而导致了最终的利用率可能是67%75%83%这三种情况。

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_Linux_06

三、常用RAID级别的比较

    常用的RAID级别主要有 RAID0,RAID1,RAID3,RAID5RAID10,它们之间的差异见下表:

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_文件系统_07

RAID级别没有高低上下之分,它们只有专注的特性差异

 

 

四、硬件RAID和软RAID概述

1. 硬件RAID

硬件RAID有专门的RAID控制处理器和I/O处理芯片来处理RAID任务,不需占用主机CPU资源。有些RAID设备还有专门的电池来供电,以防止突然断电造成的数据丢失。正因为有这些附加设备,所以硬件RAID非常昂贵

硬件RAID的组件是在BOIS中完成的,当操作系统安装完成时,RAID也就装好了,计算机会将一组RAID设备当成一个整体,而不是单独的几块硬盘。通常操作系统会将其识别为/dev/sdb/dev/sdc等等,之所以不识别为/dev/sda是因为/dev/sda常被预留为安装操作系统的设备,而RAID设备是用来存数据的。

13.文件系统——组合不同级别的RAID、硬件RAID和软RAID_Linux_08

2. 软件RAID

上面介绍了硬件RAID的结构,如果RAID设备没有RAID芯片,操作系统看到的将不再是一个整体,而是多块单独的磁盘。但是现在希望仍将其视为一个整体,这就需要通过软件来模拟RAID硬件功能。因此在Linux的内核中提供了一个模块,用来将多个硬件设备组合成一个逻辑设备,该设备被称为mdMulti Devices)模块。

比如现在一个操作系统上的硬件有以下三个设备:

/dev/sdb1     /dev/sdc1     /dev/sdd1

现在使用md模块将这三个设备模拟成一个RAID(软RAID),于是就形成了这样的设备:

/dev/md0     /dev/md1        /dev/md2 ......

有多少组RAID阵列,就会出现多少组/dev/md#设备。而这里的012......既不是/dev/sdb1中的1,也不代表RAID级别的编号,它仅代表使用软件模拟出来的RAID设备的编号。

md模块需要配置一些参数才能正常工作。md是内核提供的模块,故这些配置也需要针对内核来完成,和内核进行交互的接口是/proc,故配置md需要修改/proc/sys文件中的参数。但修改这些参数是非常困难的,好在Linux中有专门针对md设定的系统调用,人们通过这些系统调用开发了专门的RAID管理工具——mdadmMulti Device Administrator)。通过mdadm,可以定义多个磁盘设备,将它们组装成一个RAID设备,并指定RAID级别、磁盘个数、冗余磁盘、备份磁盘等等参数。但是要注意的是,真正其作用的是md,而不是mdadm这个命令。