常见的软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单个硬盘(分区)容量 。RAID10有RAID1的镜像特点,还有RAID0的速度。可以这么理解RAID10,比如有四个硬盘做成的RAID10,过程是先把每两个硬盘做成RAID1,然后再两个RAID1的基础上再做成RAID0。从理论上来说,RAID10应该继承RAID0的速度和RAID1的冗余安全。但经过我在软RAID0、RAID1、RAID5、RAID10的测试过程中发现RAID10的写入速度是最慢的。
磁盘读写速度:RAID0 > 不做RAID > RAID1 > RAID5 > RAID10
创建RAID5
在 RHEL5 系统中,配置软 RAID 阵列可以通过安装 mdadm 软件包实现。该软件包一般为系统默认安装,若检查没有安装的话,从 RHEL5 系统光盘中查找安装即可。
或者用yum install mdadm 命令在线安装
1准备用于 RAID 阵列的分区
添加了3块20G的SCSI硬盘,并给每块硬盘划一个分区,将2G全部给该分区,依次为:/dev/sdb1、/dev/sdc1、/dev/sdd1。注意在建分区时,要将其类型ID改为“fd”,对应为“Linux raid autodetect”,表示支持用于RAID磁盘阵列。创建分区后,执行“partprobe”命令重新探测分区表(或重启系统),验证分区类型和容量等信息。
# 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 |
2创建 RAID 设备
使用mdadm工具可以组合多个 RAID 分区作为一个磁盘阵列,阵列设备文件名习惯上使用“/dev/mdx”,x从0开始0,1,2……。
# 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)出现故障了
3.格式化raid设备并挂载!
[root@clear ~]# mkfs.ext3 /dev/md/md0
............................................
.................................................
在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@clear ~]# mount /dev/md0 /back/ #把md0挂载到back目录下,没格式化之前不能挂载!
[root@clear ~]# vim /etc/fstab #修改fstab文件,使系统启动自动挂载md0设备!!
-------------------------------------------------------------------------------------
软Raid创建的时候出现
# mdadm -C --verbose /dev/md0 -l0 -n11 /dev/sd[bcdefghijkl]
mdadm: super1.x cannot open /dev/sdb: Device or resource busy
mdadm: failed container membership check
mdadm: device /dev/sdb not suitable for any style of array
用一下命令可以解决:
#ls /dev/md*
/dev/md127
然后停止对应的md设备:
#mdadm --stop /dev/md127
意思就是停止Raid,停止先前创建的,停止Raid后不提示就用上面的命令md127是生成Raid重启后有的