Linux下用mdadm组建RAID方法

在Linux下可以通过软件来实现硬件的RAID功能,这样既节省了投资,又能达到很好的效果。今天就由我为大家先容如何在网络环境中实现带有一块Spare-disk的软RAID1(数据镜像)阵列。
  小提示:什么是RAID1(数据镜像)?RAID 1是比较可靠的数据存储方式,每一个磁盘都具有一个对应的镜像盘。对任何磁盘的数据写进都会被复制镜像盘中;系统可以从一组镜像盘中的任何一个磁盘读取数据,也就是说同一个数据会被重复写进两次,这样的磁盘镜像肯定会进步系统本钱。由于我们所能使用的空间只是所有磁盘容量总和的一半。
  由于本文中会使用mdadm软件,而该软件一般情况下都会集成在Redhat linux中,所以可以直接使用。假如系统中没有安装可以到http://www.cse.unsw.edu.au/~neilb/source/mdadm来下载mdadm-1.8.1.tgz进行编译安装,也可以到http://www.cse.unsw.edu.au/~neilb/source/mdadm/rpm下载mdadm-1.8.1-1.i386.rpm直接安装。 作为一个面向服务器的网络型操纵系统,Linux对数据的安全和存取速度给予了高度重视,从2.4版内核开始Linux就实现了对软件RAID 的支持,这让我们可以不必购买昂贵的硬件RAID设备,就能享受到增强的磁盘I/O性能和可靠性,进一步降低了系统的总体拥有本钱。下面就让我们看一个 Redhat Linux AS 4下的软件RAID配置实例吧。
  ● 操纵系统为RedHat Linux AS 4;
  ● 内核版本为2.6.9-5.EL;
  ● 支持RAID0、RAID1、RAID4、RAID5、RAID6;
  ● 五块36GB SCSI接口的磁盘,其中RedHat AS 4安装在第一块磁盘,其它四块组成RAID 5用来存放Oracle数据库。
  在RedHat AS 4下实现软件RAID是通过mdadm工具实现的,其版本为1.6.0,它是一个单一的程序,创建、治理RAID都非常方便,而且也很稳定。而在早期 Linux下使用的raidtools,由于维护起来很困难,而且其性能有限,在RedHat AS 4下已经不支持了。
  实现过程
  -:配置RAID1
  第一步:以root用户登录系统,对磁盘进行分区。
  #fdisk /dev/sdb
  将设备/dev/sdb上的全部磁盘空间划分给一个主分区,建立/dev/sdb1分区,并修改分区的类型标识为fd(linux raid aut淘宝首页o),然后对剩余的磁盘做同样的操纵。创/dev/sdb1,/dev/sdc1,/dev/sdd1三个平价美白产品分区。
  第二步:创建RAID阵列
  #mdadm -Cv /dev/md0 -l1 -n2 -x1 /dev/sd{b,c,d}1
  # mdadm –create –verbose /dev/md0 –level=1 –raid-devices=2 \
  /dev/hda1 /dev/hdc1
  小提示:-C参数为创建阵列模式。/dev/md0为阵列的设备名称。-l1为阵列模式,可以选择0,1,4,5等多种不同的阵列模式,分别对应 RAID0,RAID1,RAID4,RAID5。-n2为阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该即是阵列中总的磁盘数目。-x1为阵列中备用磁盘的数目,由于我们是RAID1所以设置当前阵列中含有一块备用磁盘。/dev/sd{b,c,d}1为参与创建阵列的磁盘名称,阵列由三块磁盘组成,其中两块为镜象的活动磁盘,一块备用磁盘提供故障后的替换。
  第三步:查看RAID阵列情况
  创建RAID过程需要很长时间,由于磁盘要进行同步化操纵,查看/proc/mdstat文件,该文件显示RAID确当前状态和同步完成所需要的时间。
  #cat /proc/mdstat
  系统会显示——
  personalities:[raid1]
  read_ahead 1024 sectors
  event:1
  md0:active raid1 sdb1[0] sdc1[1] sdd1[2]
   blocks [2/2] [UU]
  unused devices:
  出现上面的提示后就表示创建的RAID1已经可以使用了。
  第四步:编辑阵列的配置文件
  mdadm的配置文件主要提供人们日常治理,编辑这个文件可以让RAID更好的为我们工作,当然这个步骤不是必须的。不经过编辑配置文件也可以让RAID工作。
  首先扫描系统中的全部阵列
  #mdadm –detail -scan
  扫描结果将显示阵列的名称,模式和磁盘名称,并且列出阵列的UUID号,UUID也同时存在于阵列的每个磁盘中,缺少该号码的磁盘是不能够参与阵列的组成的。
  接下来编辑阵列的配置文件/etc/mdadm.conf文件,将扫描的显示结果按照文件规定的格式修改后添加到文件的末尾。
  #vi /etc/mdadm.conf
  添加以下内容到mdadm.conf文件中
  device /dev/sdb1 /dev/sdc1 /dev/sdd1
  array /dev/md0 level=raid1 num-devices=2 uuid=2ed2ba37:dc:a5a9c282:a51b48da spare-group=group1
  在配置文件中定义了阵列的名称和模式,还有阵列中活动磁盘的数目与名称,另外也定义了一个备用的磁盘组group1。
  第五步:启动停止RAID1阵列
  启动和停止RAID1阵列的命令非常简单。启动直接执行“mdadm -as /dev/md0”即可。执行mdadm -s /dev/md0将停止RAID1阵列。另外在rc.sysinit启动脚本文件中加进命令mdadm -as /dev/md0后将设置为阵列随系统启动而启动。
  总结:配置RAID1的步骤相对RAID5来说不是很烦琐,不过在使用mdadm时应该留意就是不要在一块硬盘上划分多个分区,再将多个分区组成阵列,这种方式不但不能进步硬盘的访问速度,反而会降低整体系统的性能。正确的方法是将一块硬盘分成一个或多个分区,然后将多块不同硬盘的分区组成阵列。另外系统目录如/usr最好不要放在阵列中,由于一旦阵列出现题目系统将无法正常运行。
  二:配置RAID 5
  1.创建分区
  五块SCSI磁盘分别对应/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde。其中第一块磁盘/dev/sda分两个区,用于安装RedHat AS 4和做交换分区,其他四块磁盘每块只分一个主分区,分别为/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1,并且将分区类型指定为“fd”,这将使Linux内核能将它们识别为RAID分区,且在每次引导时自动被检测并启动。创建分区使用fdisk命令。
  # fdisk /dev/sdb
  进进fdisk命令行后,使用命令n创建分区,命令t改变分区类型,命令w保存分区表并退出,命令m为帮助。
  2.创建RAID 5
  这里使用了/dev/sdb1、/de销售最好的美白产品v/sdc1、/dev/sdd1、/dev/sde1四个设备创建RAID 5,其中/dev/sde1作为备份设备,其他为活动设备。备份设备主要起备用作用,一旦某一设备损坏可以立即用备份设备替换,当然也可以不使用备份设备。命令格式如下:
  # mdadm -Cv /dev/md0 -l5 -n3 -x1 -c128 /dev/sd[b,c,d,e]1
  #mdadm –create –verbose /dev/md5 –level=raid5 –raid-devices=3 –chunk=32 /dev/hda3 /dev/hdb3 /dev/hdc3
  parity-algorithm left-symmetric
  parity-algorithm表示raid5的奇偶效验的运算法则,可用选择有:
  left-symmetric left-asymmetric right-symmetric right-asymmetric
  最佳性能的是:left-symmetric
  命令中各参数分别表示如下作用:“-C”指创建一个新的阵列;“/dev/md0”表示阵列设备名称;“-l5”表示设置阵列模式,可以选择0、1、4、 5、6,它们分别对应于RAID0、RAID1、RAID4、RAID5、RAID6,这里设为RAID5模式;“-n3”指设置阵列中活动设备的数目,该数目加上备用设备的数目应即是阵列中的总设备数;“-x1”设置阵列中备份设备的数目,当前阵列中含有1个备份设备;“-c128”指设置块的尺寸为128KB,缺省为64KB;“/dev/sd[b, c,d,e]1”指当前阵列中包含的所有设备标识符,也可以分开来写,中间用空格分开,其中最后一个为备份设备。
  3.查看阵列状态
  当创建一个新阵列或者阵列重构时,设备需要进行同步操纵,这一过程需要一定时间,可以通过查看/proc/mdstat文件,来显示阵列确当前状态以及同步进度、所需时间等。
  # more /proc/mdstat
  Personalities : [raid5]
  md0 : active raid5 sdd1[3] sde1[4] sdc1[1] sdb1[0]
   blocks level 5, 128k chunk, algorithm 2 [3/2] [UU_]
  [>………………..] recovery = 4.3% (/) finish=1.0min speed=K/sec
  unused devices:
  当新建或重构完成后,再次查看/proc/mdstat文件:
  # more /proc/mdstat
  Personalities : [raid5]
  md0 : active raid5 sdd1[2] sde1[3] sdc1[1] sdb1[0]
   blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]
  unused devices:
  通过以上内容,可以很清楚地看出当前阵列的状态,各部分所代表的意思如下:“[3/3]”中的第一位数表示阵列所包含的设备数,第二位数表示活动的设备数,假如有一个设备损坏,则第二位数将减1;“[UUU]”标记当前阵列可以正常使用的设备情况,现假设/dev/sdb1出现故障,则该标记将变成 [_UU],这时的阵列以降级模式运行,即该阵列仍然可用,但是不再具有任何冗余;“sdd1[2]”指阵列所包含的设备数为n,若方括号内的数值小于 n,则表示该设备为活动设备,若数值大于即是n,则该设备为备份设备,当一个设备出现故障的时候,相应设备的方括号后将被标以(F)。
  4.天生配置文件
  mdadm的缺省配置文件为/etc/mdadm.conf,它主要是为了方便阵列的日常治理而设置的,对于阵列而言不是必须的,但是为了减少日后治理中不必要的麻烦,还是应该坚持把这一步做完。
  在mdadm.conf文件中要包含两种类型的行:一种是以DEVICE开头的行,它指明在阵列中的设备列表;另一种是以ARRAY开头的行,它具体地说明了阵列的名称、模式、阵列中活动设备的数目以及设备的UUID号。格式如下:
  DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  ARRAY /dev/md0 level=raid5 num-devices=3 UUID=8f:715a42df: baece2a8: a5b878e0
  以上的这些信息可以通过扫描系统的阵列来获取,命令为:
  # mdadm -Ds
  ARRAY /dev/md0 level=raid5 num-devices=3 UUID=8f:715a42df: baece2a8: a5b878e0
  devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1
  使用vi命令,按照规定的格式编辑修改/etc/mdadm.conf文件
  # vi /etc/mdadm.conf
  5.创建文件系统并挂接(mount)使用
  RAID5已经启动并处于运行状态,现在要做的就是在其上创建一个文件系统,这里使用mkfs命令,文件系统类型为ext3。命令如下:
  # mkfs -t ext3 /dev/md0
  当新的文件系统天生之后,就可以将/dev/md0挂接到指定的目录了。命令如下:
  # mount /dev/md0 /mnt/raid
  为了让系统在启动时自动将/dev/md0挂接到/mnt/raid,还需要修改/etc/fstab文件,添加如下内容:
  /dev/md0 /mnt/raid ext3 defaults 0 0
  故障模拟
  上面的实例,让我们对Redhat Linux AS 4的软件RAID功能有了一定的熟悉,并且通过具体的步骤说明了如何创建RAID5。有了RAID做保障,电脑里的数据看起来似乎已经很安全了,然而现有的情况还是不能让我们高枕无忧,想一想,万一磁盘出现故障怎么办?下****颐悄D庖桓龈RAID55故障磁盘的完整过程,希看以此丰富大家处RAID555故障的经验,进步治理和维护水平 。

发表评论

电子邮件地址不会被公开。 必填项已用*标注