RAID
1.RAID概述
Raid是一种将多块磁盘组成一个阵列整体的技术,我们可以把它当成单个磁盘使用。Raid磁盘阵列根据其使用的技术不同,可用于提高数据读写效率、提高数据冗余(备份),当阵列中一个磁盘发生故障时,可以通过校验数据从其它磁盘中进行恢复,大大增强了应用系统数据的读写性能及可靠性。RAID一般是在SCSI磁盘上实现的,因为IDE磁盘的性能较慢,而且IDE通道最多只能接4个磁盘。
2.RAID的分类
Ø       硬件RAID硬件RAID是通过RAID 卡来实现的,通过RAID卡把若干同等容量大小的硬盘,根据使用方向的不同,聚合起来成为一个大的虚拟RAID设备(RAID0RAID1,RAID5RAID10……),如果每个硬盘容量不一致,以最小容量的硬盘为基础。它的成员是整个硬盘。在企业级应用领域,大部份都是硬件RAID
Ø       RAID通过软件来实现的,把若干同等容量大小的硬盘或分区,根据使用方向的不同,聚合起来成为一个大的虚拟RAID设备(RAID0RAID1,RAID5RAID10……),如果每个硬盘或分区容量不一致,以最小容量的硬盘或分区为基础。软RAID的成员是整个硬盘或分区。软件RAID由于性价比高,大多被中小型企业所采用。
3.常见的软RAID技术包括以下几种
Ø       RAID 0: 是一种最基本的阵列方式,n(磁盘数)>=2,实际容量=n x 单块磁盘(分区)容量。存取数据时,通过将数据分段同时写入到不同的磁盘中,大大提高了读写速度。但没有数据冗余,其中任何一块磁盘损坏,都可能导致数据丢失。所以RAID0常被用于对存储效率要求较高,但对数据安全性要求不高的应用解决方案中。
Ø       RAID 1:磁盘镜像技术,n>=2(磁盘利用率:1/n),实际容量=单块磁盘(分区)容量。.这种方式将数据同时写入到阵列中的多块磁盘上,不同磁盘中的数据完全相同。因此,任何一块磁盘损坏,数据都不会丢失。一般用于安全性要求比较高的应用中。
Ø       RAID 5:通过引入数据校验技术来保证数据的安全,n>=3(磁盘利用率:n-1/n),每块磁盘必须提供相同的磁盘空间,实际容量=(n-1)x单块磁盘容量。这种方式并不使用固定的某块磁盘来存放校验数据,而是分段存储在各个磁盘中。因此,任何一块磁盘损坏,都可以根据其它磁盘中的校验数据进行恢复。但如果是2块或者更多的磁盘损坏,那么将不能恢复。因其性价比比较高,所以被大范围内采用。
Ø       RAID10也是冗余安全阵列,是RAID0+RAID1的集成,n>=4(磁盘利用率:n/2),并且n必须是偶数,实际容量=n/2 x单个硬盘(分区)容量 RAID10RAID1的镜像特点,还有RAID0的速度。可以这么理解RAID10,比如有四个硬盘做成的RAID10,过程是先把每两个硬盘做成RAID1,然后再两个RAID1的基础上再做成RAID0。从理论上来说,RAID10应该继承RAID0的速度和RAID1的冗余安全。但经过我在软RAID0RAID1RAID5RAID10的测试过程中发现RAID10的写入速度是最慢的。
磁盘读写速度:RAID0> 不做RAID>RAID1>RAID5>RAID10
4.创建RAID5
RHEL5 系统中,配置软 RAID 阵列可以通过安装 mdadm 软件包实现。该软件包一般为系统默认安装,若检查没有安装的话,从 RHEL5 系统光盘中查找安装即可。
Shell
# mount /dev/cdrom /media
# rpm -ivh /media/Server/mdadm-2.5.4-3.el5.i386.rpm
4.1准备用于 RAID 阵列的分区
添加了320GSCSI硬盘,并给每块硬盘划一个分区,将20G全部给该分区,依次为:/dev/sdb1/dev/sdc1/dev/sdd1。注意在建分区时,要将其类型ID改为“fd,对应为“Linux raid autodetect”,表示支持用于RAID磁盘阵列。创建分区后,执行partprobe命令重新探测分区表(或重启系统),验证分区类型和容量等信息。
 Shell
     # partprobe
     # fdisk -l /dev/sd[b-d] | grep "^/dev/sd"
/dev/sdb1               1        2610    20964793+  fd  Linux raid autodetect
/dev/sdc1               1        2610    20964793+  fd  Linux raid autodetect
/dev/sdd1               1        2610    20964793+  fd  Linux raid autodetect
4.2创建 RAID 设备
使用mdadm工具可以组合多个    RAID 分区作为一个磁盘阵列,阵列设备文件名习惯上使用/dev/mdxx0开始0,1,2……
Shell
 # mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[b-d]1
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 20964672K
mdadm: array /dev/md0 started.
在上述命令操作中,/dev/md0为新建的 RAID 阵列设备文件名,/dev/sd[bcd]1表示此阵列将使用/dev/sdb1/dev/sdc1/dev/sdd1 这三个分区。其他各部分选项、参数的含义如下:
u     -C,等同于 --create:创建一个新的阵列设备。
u     -v,等同于 --verbose:执行过程中输出细节信息。
u     -a,等同于 --auto=:指定参数为 yes 时,表示若对应的设备文件不存在则自动创建。
u     -n,等同于 --raid-devices=:用于组成阵列的分区设备个数,-n3
表示为 3 个。
u     -l,等同于 --level=:使用的 RAID 级别,-l5表示为 RAID 5关于 mdadm 命令更多选项的使用,请参考man mdadm帮助信息。
创建好 md0 阵列设备后,将自动被激活,执cat/proc/mdstat可以观察阵列设备的运行状态。
Shell
      # cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
      41929344 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
其中,[3/3部分中的第一个3表示成员设备个数,后边的3表示当前的活动设备个数,UUU对应为成员设备的状态。例如,若出现[3/2][UU_]的信息时,则表示第 3 个成员设备(/dev/sdd1)出现故障了。