两极人生,八度空间

Fight for my CISSP and PMP

首页 新随笔 联系 聚合 管理
  156 Posts :: 22 Stories :: 67 Comments :: 0 Trackbacks
通常情况下人们在服务器端采用各种冗余磁盘阵列(RAID)技术来保护数据,中高档的服务器一般都提供了昂贵的硬件RAID控制器。对于资金实力有限的中小企业来讲,在Linux下通过软件来实现硬件的RAID功能,这样既节省了投资,又能达到很好的效果。何乐而不为呢?

  作为一个面向服务器的网络型操作系统,Linux对数据的安全和存取速度给予了高度重视,从2.4版内核开始Linux就实现了对软件RAID的支持(关于RAID的背景知识请见附文),这让我们可以不必购买昂贵的硬件RAID设备,就能享受到增强的磁盘I/O性能和可靠性,进一步降低了系统的总体拥有成本。下面就让我们看一个Redhat Linux AS 4下的软件RAID配置实例吧。

  系统配置情况

  假设某单位新上了一套使用Oracle数据库的能量采集系统,该系统数据量极大并且读写非常频繁,实时性要求高,高峰时有近40名用户在线,对数据库服务器的磁盘子系统提出了很高的要求。由于预算比较紧张,经过多方比较,最终选择了采用Linux系统做软件RAID5的方案。

  其配置情况如下:

  ● 操作系统为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下已经不支持了。

  实现过程

  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、/dev/sdc1、/dev/sdd1、/dev/sde1四个设备创建RAID 5,其中/dev/sde1作为备份设备,其他为活动设备。备份设备主要起备用作用,一旦某一设备损坏可以立即用备份设备替换,当然也可以不使用备份设备。命令格式如下:

  # mdadm -Cv /dev/md0 -l5 -n3 -x1 -c128 /dev/sd[b,c,d,e]1

  命令中各参数分别表示如下作用:“-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]

  75469842 blocks level 5, 128k chunk, algorithm 2 [3/2] [UU_]

  [>....................] recovery = 4.3% (1622601/37734912) finish=1.0min speed=15146K/sec

  unused devices:

  # more /proc/mdstat

  Personalities : [raid5]
经过几分钟后,再次查看当前阵列状态。

  # more /proc/mdstat

  Personalities : [raid5]

  md0 : active raid5 sdd1[2] sde1[0] sdc1[1] sdb1[3](F)

  75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]

  unused devices:

  此时阵列重构已经完成,数据恢复完毕,原有的备份设备sde1成为了活动设备。

  2.移除损坏的设备

  # mdadm /dev/md0 -r /dev/sdb1

  查看当前阵列的状态:

  # more /proc/mdstat

  Personalities : [raid5]

  md0 : active raid5 sdd1[2] sde1[0] sdc1[1]

  75469842 blocks level 5, 128k chunk, algorithm 2 [3/3] [UUU]

  unused devices:

  损坏的sdb1已经从阵列中移掉。

  3.将新设备添加到阵列中

  因为是模拟操作,可以通过下面的命令再次将/dev/sdb1添加到阵列中。如果是实际操作则要注意两点:一是在添加之前要对新磁盘进行正确的分区;二是添加时要用所添加设备的设备名替换/dev/sdb1。

  # mdadm /dev/md0 -a /dev
posted on 2007-01-26 15:37 Jerome 阅读(798) 评论(1)  编辑 收藏 引用 所属分类: Redhat Linux

Feedback

# re: 在Redhat Linux AS 4下实现软件RAID 2007-01-26 23:01 调研报告
look..  回复  更多评论
  

只有注册用户登录后才能发表评论。