1. RAID 简介
RAID是英文Redundant Array of Inexpensive Disks的缩写,中文名字为磁盘冗余阵列,顾名思义它是由磁盘组成阵列而成的。
简 单地说,RAID就是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来的一个硬盘组(逻辑硬盘),提供比单个硬盘更高的存储性能和数据冗余的技术,既 保证了存取数据的快捷方便和管理客户端的简捷,也解决了存储海量数据的问题,同时提供了容错性(Fault Tolerant)。它可以在不须停机的情况下自动检测故障硬盘、进行硬盘替换,还可以扩充硬盘容量、重建故障硬盘上的数据。
目前最流行的是RAID 0,RAID 1,RAID 5。其中RAID1和RAID 5过多的用于保证数据的安全,最大程度的防止磁盘意外坏掉而丢失数据情况的发生。
RAID0 : 是最早的RAID。Level 0即RAID 0级,通常称为带区,是利用带区数据映射技巧的特定性能。也就是说,当数据写入磁盘组的时候,被分成带区,交错写入磁盘组的磁盘中。这带来了高I/O性 能,低开销,但不提供任何冗余。磁盘组的存储量等于总的各磁盘容量之和。
特征:并行读写数据,性能高,但没有数据冗余,阵列中任何一个硬盘坏掉,意味着所有数据丢失
容量:所有硬盘容量之和
条件:至少两块硬盘,做为RAID的分区大小必须是几乎相同的.
RAID1: Level 1即RAID 1级,它就是常常提到的镜像RAID,相比其它各级别RAID来说,这个级别使用的时间较长。RAID 1通过把同样的数据写到磁盘组的每一个磁盘上,将"镜像"复制到每个磁盘上,来提供数据冗余。镜像由于它的简单实现和数据的高可信度而一直很受欢迎。 1级在读数据操作时,并行处理2个或更多的磁盘,因此数据传输速率高, 但是其它的操作时无法提供高速的I/O传输速率。1级提供了非常好的数据的高可信度,并且改善了读数据操作的性能,但是耗费很大。要求组成磁盘组的各磁盘 规格相同,而组成后磁盘组的容量仅仅等于一块磁盘的容量。
特征:数据冗余,可靠性强。任何一块硬盘坏掉,不会丢失数据。写入慢,读取快。
容量:所有硬盘容量之和/2。(冗余度 50%)
条件:至少两块硬盘,做为RAID的分区大小必须是几乎相同的.
RAID5: 服务器最常用的RAID级别,该级别的RAID是通过把奇偶校验分布到磁盘组中的一些或所有磁盘上,5级常使用缓冲技术来降低性能的不对称性。如果组成磁盘组的各磁盘规格相同,磁盘组容量等于磁盘的总容量,减去一块磁盘的容量。
如果出现两个以上硬盘出现问题时,数据是不能得到有效的保护的。也就是说RAID 5只能在其中一块硬盘出问题时保证数据完好。
特征:采用奇偶效验,可靠性强。只有当两块硬盘坏掉时才会丢失数据。并行读写数据,性能也很高。
容量:所有硬盘容量-1个硬盘容量
条件:至少三块硬盘,做为RAID的分区大小必须是几乎相同的。
RAID 0+1: RAID 0和RAID 1的组合
特征:数据冗余,可靠性强。任何一块硬盘坏掉,不会丢失数据。写入慢,读取快。
容量:所有硬盘容量之和/2。(冗余度 50%)
条件:至少四块硬盘,做为RAID的分区大小必须是几乎相同的.
2. 准备RAID磁盘分区
① 在做RAID磁盘阵列时必须要有mdadm软件的支持。Mdadm软件一般是默认安装的,如果没有就在RHEL5光盘中找:
[root@server Server]# rpm -ivh mdadm-
warning: mdadm-
Preparing... ########################################### [100%]
② 为Linux服务器添加4块
[root@server Server]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +
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
Disk /dev/sdb: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 318 2554303+ fd Linux raid autodetect
③ 创建好分区好之后执行“partprobe”重新检测分区表,验证分区类型和容量信息。
[root@server ~]# partprobe
[root@server ~]# fdisk -l /dev/sd[b-e] | grep "^/dev/sd"
/dev/sdb1 1 318 2554303+ fd Linux raid autodetect
/dev/sdc1 1 318 2554303+ fd Linux raid autodetect
/dev/sdd1 1 318 2554303+ fd Linux raid autodetect
/dev/sde1 1 318 2554303+ fd Linux raid autodetect
3. 创建RAID磁盘设备
①使用mdadm工具组合多个RAID分区成一个磁盘阵列
[root@server ~]# mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[b-e]1
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 2554176K
mdadm: array /dev/md0 started.
②查看RAID磁盘阵列
[root@server ~]# ls -l /dev/md0
brw-r----- 1 root disk 9, 0 06-26 14:54 /dev/md0
[root@server ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[3] sdd1[2] sdc1[1] sdb1[0]
7662528 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>
③在RAID设备上建立文件系统
[root@server ~]# mkfs -t ext3 /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
959104 inodes, 1915632 blocks
95781 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1962934272
59 block groups
32768 blocks per group, 32768 fragments per group
16256 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
④挂载RAID设备文件系统
[root@server /]# mount /dev/md0 /liujian
[root@server /]# df -T | grep "md0"
/dev/md0 ext3 7542096 148044 7010928 3% /liujian
如果想重启后还挂载
[root@server /]# vim /etc/fstab
/dev/md0 /liujian /ext3 defaults 1 1
4. RAID阵列的管理
①扫描RAID阵列的磁盘信息
[root@server /]# mdadm -vDs /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Sat Jun 26 15:14:19 2010
Raid Level : raid5
Array Size : 7662528 (7.31 GiB 7.85 GB)
Used Dev Size : 2554176 (2.44 GiB 2.62 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat Jun 26 15:25:26 2010
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
UUID : fdf
Events : 0.2
Number Major Minor
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
②启动/停止RAID阵列
停止
[root@server /]# mdadm -S /dev/md0
mdadm: fail to stop array /dev/md0: Device or resource busy
Perhaps a running process, mounted filesystem or active volume group?
启动
[root@server /]# mdadm –A /dev/md0