<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
RAID磁盘阵列实验小结

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列),主要应用于大型企业和中小企业在数据保护方面。各个公司依靠不同级别的RAID所提供的冗余来保护他们的磁盘驱动器。其应用还是很广泛的。

RAID 还分为硬件RAID 和软件RAID,硬件RAID是通过RAID 卡来实现的,而软件RAID是通过软件来实现的;在企业级应用领域,大部份都是硬件RAID。而软件RAID由于性价比高,大多被中小型企业所采用。

硬件RAID是通过RAID卡把若干同等容量大小的硬盘,根据使用方向的不同,聚合起来成为一个大的虚拟RAID设备(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每个硬盘容量不一致,以最小容量的硬盘为基础;它的成员是整个硬盘。

RAID是软把若干同等容量大小的硬盘或分区,根据使用方向的不同,聚合起来成为一个大的虚拟RAID设备(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每个硬盘或分区容量不一致,以最小容量的硬盘或分区为基础。软RAID的成员是整个硬盘或分区。

由于硬件RAID价格昂贵,因此我们都是基于软件RAID来实验的。

OK,开始今天就说下经常见到的RAID0RAID1RAID5的基本操作。

RAID0 是把两个或两个以上的容量相同的硬盘或分区,通过RAID控制器,合为一个在容量上是RAID0下成员的容量的总和,在写入时,要向每个硬盘或分区同时写入数据。

RAID0 在读写速度上是比较快的,是普通不做RAID的两倍左右(注:实际速度和机器的硬件配置有关),所以RAID0常被用于对存储效率要求较高,但对数据安全性要求不高的应用解决方案中。

安全性:RAID0中有任何一个成员出现故障,整个RAID0就不能被激活。数据不能保障;

在虚拟机下新加三块磁盘,分别为sdbsdcsdd。大小为默认值20G,在sdb上做raid0的实验,在sdc上做raid1的实验,在sdd上做raid5的实验。好了,实验环境已经准备就绪,开始吧?

第一个要做的是RAID0的基本操作。

划分好sdb磁盘之后,要记得把sdb1sdb2的磁盘类型改为fd型,因为只有fd型的磁盘才能设置RAID磁盘阵列。设置好后保存退出。下一步是用partprobe命令对刚刚划分的磁盘进行重新读取。如图所示:     
  
磁盘阵列的命令为mdadm,其主要参数为命令中各参数分别表示如下作用:“-C”指创建一个新的阵列;“/dev/md0”表示阵列设备名称;“-l 0”表示设置阵列模式,可以选择01456,其分别对应RAID0RAID1RAID4RAID5RAID6,这里设为RAID0模式;“-n  2”指设置阵列中活动设备的数目,该数目加上备用设备的数目应等于阵列中的总设备数;“-x1”设置阵列中备份设备的数目,当前阵列中含有1个备份设备(在后面的RAID5的实验中会用到);“-c 64”指设置块的尺寸为64K,缺省为64K“/dev/sd{12}”指当前阵列中包含的设备名称,也可以分开来写,中间用空格分开。

注:在mdadm之前不需要格式化磁盘,直接mdadm即可。

mdadm –V -c –a yes –l 1 –n 2 –c 64 / d e v / s d c { 1 , 2 }

创建完成后,RAID也就立即启动了。会出现如下一行的提示信息:

mdadm: array /dev/md0 started.
 

命令执行完毕后,可以用cat /proc/mdstat命令来查看一下md0阵列的参数。

 
接着格式化/dev/md0,并在root目录下创建raid0文件,之后挂载/dev/md0

 

OKRAID0的实验成功了,先来庆贺一下吧!^_^

接下来的实验是配置RAID1。其配置过程和RAID0实验的实验步骤类似。

RAID1就是把若干相同容量的硬盘或分区,成员与成员之间是镜像关系。在容量上,RAID1设备是单个成员的容量。比如两个80G的硬盘做成RAID1,这个RAID1的设备容量仍是80G

因为RAID1存在镜像冗余,所以磁盘利用效率并不高,或者说是“浪费”。这种方案相对来说性价比并不高,一般很少应用。数据读写效率要比RAID0慢。

安全性:RAID1 中只要有一个成员是健康的,RAID1完全可以激活,而且数据绝对是完整安全的。如果所有的成员有故障,RAID1也就报废了。哈哈,这不是废话吗?

好了,开始吧!

划分sdc磁盘,建立sdc1sdc2两个分区,修改分区类型为fd类型,完成后保存退出,执行partprobe命令,重新读取sdc1sdc2分区。接着执行

mdadm –V-c –a yes –l 1 –n 2 –c64 /dev /sdc {1, 2}

创建完成后,RAID也就立即启动了。会出现如下一行的提示信息:

mdadm: array /dev/md1 started.

命令执行完毕后,可以用cat /proc/mdstat命令来查看一下md1阵列的参数。可以观察一下md0md1各自blocks大小有什么不同之处。这要从RAID0RAID1的磁盘阵列的不同之处来考虑了,想起来有什么不同了吗?

 

发散思维一下,RAID都在运行了,那么该如何停止呢?当然,mdadm命令可以 停止磁盘阵列啦。命令为:mdadm –stop /dev/md1

 

后面的步骤就是格式化md1,在root目录下建立/raid1目录,然后用mount命令将/dev/md1挂载到/raid1即可,至于验证的命令在这里就不赘述了。

接下来的实验是关于RAID5配置。

RAID5也是冗余安全的,RAID5是把至少三个硬盘或分区通过软件虚拟成为一个大的存储设备。在容量上是(n-1)x单个硬盘(分区)容量。如果是四块磁盘分区做RAID5, 那么磁盘利用率就为75%

 


由于RAID5在空间上损失比较小,有冗余安全保障,另外写入速度比较快。具有很高的性价比,所以被很多企业采用。

安全性:当RAID5中的成员中有一个发生故障时,RAID5一样能启动和正常运行,只要n-1(注n>3)块硬盘或分区的不出故障,RAID5上的数据就是安全,对于一个文件存到RAID5设备中,只有成员是n-1(注n>3)无故障时,这份文件才是完整的。 比如上图中RAID5由四个分区做的,当一个硬盘或分区挂掉了,并不影响整个RAID5上数据的完整性和安全性。

划分sdc磁盘,建立主分区sdd1、逻辑分区sdd2、扩展分区sdd6sdd7sdd8四个分区,修改分区类型为fd类型,完成后保存退出,执行partprobe命令,重新读取磁盘分区。接着执行

mdadm –v –C /dev/md2 –a yes –l  5 –n 3 –x 1 /de v/s dd {1, 5 ,6, }

创建完成后,RAID也就立即启动了。会出现如下的一行的提示信息:

mdadm: array /dev/md2 started.

 

命令执行完毕后,可以用mdadm –detail /dev/md2命令来查看一下md2阵列的参数。可以看到,sdd分区处于空闲状态哇,

 

为了验证试验RAID5是否具有容错和恢复数据的功能,我们可以模拟这样的环境:在其中任一个处于工作状态的分区出现故障的情况下,阵列中的数据是否还可以读取,数据是否还能恢复到分区出现故障以前的状态。

具体思路为:首先向raid5中拷贝目录/var/log/和文件/etc/inittab,完成后查看一下,验证是否拷贝成功。

 

使用命令mount /edv/md2 –f /dev/sdd7 可以模拟RAID5中处于工作状态的sdd7分区出现故障。(然后运行mdadm /dev/md2  -r  /dev/sdd7 卸载掉,后面的步骤会用到,这里先不考虑) 

当再次执行mdadm –-mdtail /dev/md2时会发现故障出现之前处于空闲状态的sdd1分区自动转变为工作状态。

此时,为了尽快将数据恢复,我们必须重新加载上一块新磁盘,可以把刚刚卸载掉的sdd7重新加载上(实际上sdd7并没有出现故障,刚才只是用命令模拟出现故障)。执行命令为mdadm /dev/md2 –a /dev/sdd7 ,命令正确执行后,会出现mdadmadded /dev/sdd7 的字符提示。用mdadm –-detail /dev/md2 命令查看一下raid5的状态,可以看到,sdd7此时变成空闲状态。

 

 

 

 

切换到raid5目录下,查看一下数据是否还在。是否还可以正常读取。(其实个人觉得查看数据这个步骤还是在挂载sdd7之前来操作,这样会更有说服力,实际情况就是如此,当卸载掉sdd7后,sdd1很快就会把数据恢复到原来的样子。)

当然喽!我们再次还可以模拟sdd1分区出现故障,然后卸载掉sdd1。重复上面的步骤验证一下喽!