RAID 概述
RAID即廉价冗余磁盘阵列(RedundantArray of Inexpensive Disk)的简称,通过该技术可以将多个磁盘组成一个阵列整体,而应用时可以作为单个磁盘使用。RAID 磁盘阵列根据其使用的技术不同,可用于提高数据读写效率、提高数据冗余(备份),当阵列中的一个磁盘发生故障时,可以通过校验数据从其他磁盘中进行恢复,大大增强了应用系统数据的读写性能及可靠性。
较常见的 RAID技术包括如下几个级别:
RAID 0:最基本的一种阵列方式,通过简单的将多个磁盘(最少2 块)组成到一起,作为一个大磁盘使用。存取数据时,通过将数据分段同时写入到不同的磁盘中,大大提高了效率。但是这种方式没有数据冗余,其中任何一个磁盘坏了以后,都可能导致数据丢失。
RAID 1:即磁盘镜像技术,需要最少2 块磁盘(磁盘利用率:1/n)。这种方式将数据同时写入到阵列中的多块磁盘中,不同磁盘中的数据互为镜像。因此,其中任何一个磁盘坏了以后,数据不会丢失。
RAID 5:通过引入数据校验技术来保证数据的安全,需要最少 3 块磁盘(磁盘利用率: n-1)。
这种方式并不使用固定的某块磁盘存放校验数据,而是分段存储在各个磁盘中。因此,其中任何一个磁盘坏了以后,也可以根据其他磁盘中的校验数据进行恢复。
由于 RAID5 阵列技术既通过数据冗余增强了可靠性,又通过多块磁盘同时写入数据提高了效率,一直以来受到广泛的应用。
未使用硬件磁盘卡方式实现的 RAID 技术,通常称为软 RAID 技术。本文将在 RHEL5 系统中,使用不同磁盘中的多个分区,配置实现 RAID 5磁盘阵列。
9.2 构建使用软 RAID磁盘阵列
在 RHEL5 系统中,配置软 RAID 阵列可以通过安装 mdadm 软件包实现。该软件包一般为系统默认安装,若检查没有安装的话,从 RHEL5 系统光盘中查找安装即可。
[root@localhost ~]# mount /dev/cdrom/media/cdrom/
mount: block device /dev/cdrom iswrite-protected, mounting read-only
[root@localhost ~]# rpm -ivh /media/cdrom/Server/mdadm-2.5.4-3.el5.i386.rpm
Preparing... ########################################### [100%]
1:mdadm ########################################### [100%]
[root@localhost ~]# rpm -qi mdadm | grep"Summary"
Summary : mdadm 控制 Linux md 设备 (软件 RAID 阵列)
下面将以 RAID5磁盘阵列为例,讲解软磁盘阵列的配置使用方法。
准备用于 RAID阵列的分区
用于组成 RAID阵列的各个分区应该位于不同的磁盘设备中,否则实用价值不大。各分区的容量最好也相同,必要时可以将整个硬盘划分为一个分区。
为 Linux服务器添加 4块 SCSI 硬盘,并使用 fdisk 工具各划分出一块 2GB 的分区,依次为:
/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1。分区前请注意确保没有别的程序正在使用对应的磁盘。下一小节中将以这 4 个分区为例(RAID 5需要至少 3 块磁盘或分区)讲解 RAID5 磁盘阵列的创建方法。
对于上述分区还应该将其类型 ID更改为“fd”,对应为“Linux raid autodetect”,表示支持用于 RAID磁盘阵列。
[root@localhost ~]# fdisk /dev/sdb
……
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-522, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK(1-522, default 522): +2048M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd(Linux raid autodetect)
Command (m for help): p
……
Device Boot Start End Blocks Id System
/dev/sdb1 1 250 2008093+ fd Linux raid autodetect
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]#