文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux 下软件 RAID 的实现

Linux 下软件 RAID 的实现

时间:2009-03-27  来源:dtlchm

 Q:Linux 下软件 RAID 的实现
  A:数据在现代企业中占有重要的地位,数 据存储的安全性也是人们使用计算机要注意的重要问题之一。通常情况下人们在服务器端采用各种RAID(冗余磁盘阵列)技术来保护数据,中高档的服务器一般 都提供了昂贵的硬件RAID控制器,但很多小企业无力承受这笔开销。而在Linux下可以通过软件来实现硬件的RAID功能,既节省了投资,又能达到很好 的效果。下面我们在一个典型的环境中实现带有一块Spare-Disk(备用磁盘)的软RAID1(数据镜像)阵列。

    一、系统环境

  操作系统:RedHat Linux AS 3
  硬盘:四块18G SCSI磁盘,第一块磁盘上安装Linux系统,其余三块组成阵列。
   软件:mdadm软件(该软件已经集成在RedHat Linux AS 3中,若系统没有提供,可以在替换 www.cse.unsw.edu.au/~neilb/source/mdadm/下载mdadm-1.8.1.tgz编译安装, 或在替换 www.cse.unsw.edu.au/~neilb/source/mdadm/RPM/下载mdadm-1.8.1-1.i386.rpm安装), 具体的安装过程这里就不叙述了。

    二、创建过程

  1、 以root用户登录,对磁盘分区

  # fdisk /dev/sdb

  将设备/dev/sdb上的全部磁盘空间划分给一个主分区,建立/dev/sdb1分区,并修改分区的类型标示为fd(Linux raid auto)。对剩余的磁盘做同样的操作。创建/dev/sdb1、/dev/sdc1、/dev/sdd1三个分区。

  2、 创建RAID0阵列

  (1) # mdadm -Cv /dev/md0 -l1 -n2 -x1 /dev/sd{b,c,d}1

  -C 该参数为创建阵列模式。
  /dev/md0 阵列的设备名称。
  -l1 阵列模式,可以选择0、1、4、5等不同的阵列模式。设置为RAID1模式。
  -n2阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目。
  -x1 阵列中备用磁盘的数目。设置当前阵列中含有一块备用磁盘。
  /dev/sd{b,c,d}1 参与创建阵列的磁盘名称。阵列由三块磁盘组成,其中两块为镜像的活动磁盘,一块备用磁盘提供故障后的替换。
  (2)这一过程需要一定时间,因为磁盘要进行同步化操作,查看/proc/mdstat文件,该文件显示RAID的当前状态和同步完成所需要的时间。

  # cat /proc/mdstat

  系统显示:
  Personalities : [raid1]
  read_ahead 1024 sectors
  Event: 1
  md0 : active raid1 sdb1[0] sdc1[1] sdd1[2]
  18432000 blocks [2/2] [UU]
  unused devices:
  这表示新创建的RAID1已经可以使用了。

  (3)编辑阵列的配置文件
  mdadm的配置文件主要提供人们日常管理的方便,并不是阵列必须的。

  首先扫描系统中的全部阵列

  # mdadm -detail -scan

  ARRAY /dev/md0 level=raid1 num-devices=2 UUID=2ed2ba37:d952280c:a5a9c282:a51b48da
  devices=/dev/sdb1,/dev/sdc1,/dev/sdd1
  扫描结果显示阵列的名称、模式和磁盘名称,并且列出了阵列的UUID号。UUID也同时存在于阵列的每个磁盘中,缺少UUID号码的磁盘不能参与阵列的组成。
  接下来编辑阵列的配置文件/etc/mdadm.conf文件,将扫描显示的结果按照文件规定的格式修改后,添加到文件的末尾。

  # vi /etc/mdadm.conf

  添加以下内容:

  DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
  ARRAY /dev/md0 level=raid1 num-devices=2 uuid=2ed2ba37:d952280c:a5a9c282:a51b48da spare-group=group1

  在配置文件中定义了阵列的名称、模式、阵列中活动磁盘的数目及名称,还定义了一个备用的磁盘组group1。

  (4)启动和停止阵列
  启动阵列:

  # mdadm -As /dev/md0

  停止阵列:

  # mdadm -S /dev/md0

  在rc.sysinit启动脚本文件中加入命令mdadm -As /dev/md0,这样只要系统一启动就自动加载阵列。

  3、 在阵列上建立新的文件系统

  # mkfs.ext3 /dev/md0

  经过几分钟后新的文件系统生成,现在就可以使用了,将/dev/md0挂接在/opt安装点。

  # mount /dev/md0 /opt

  修改/etc/fstab文件,添加如下项目,这样系统启动后就会自动挂接设备到/opt安装点。

  /dev/md0 /opt ext3 defaults 0 0

    三、阵列管理

  显示当前阵列的各项参数和同步状态:

  # mdadm -detail /dev/md0

  显示当前阵列中磁盘的各项参数和状态:

  # mdadm -E /dev/sdb1

  当阵列中的磁盘失败时,从阵列中移去失败的磁盘:

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

  当新的磁盘替换了失败的磁盘后,在阵列中添加新磁盘:

  # mdadm /dev/md0 -add /dev/sdb1

  定期监视阵列:

  # nohup mdadm -monitor -scan -mail=sysadmin -delay=120 /dev/md0 &

  该命令每间隔120秒就检查一次阵列,当发现阵列中出现硬盘失败时,若阵列定义有备用磁盘组,就移去失败的磁盘,并启用备用磁盘,给管理员发送通知。使用nohup保持命令一直在后台运行。

   最后,在使用mdadm时应该注意,不要在一块硬盘上划分多个分区,再将多个分区组成阵列,这种方式不但不能提高硬盘的访问速度,反而会降低整体系统的 性能。正确的方法是将一块硬盘分成一个或多个分区,然后将多块不同硬盘的分区组成阵列。另外系统的目录如/usr最好不要放在阵列上,一旦阵列出现问题, 系统将无法正常运行。
相关阅读 更多 +
排行榜 更多 +
房间毁灭模拟器最新版

房间毁灭模拟器最新版

休闲益智 下载
街头追逐者最新版

街头追逐者最新版

休闲益智 下载
弓箭手2内置作弊菜单

弓箭手2内置作弊菜单

休闲益智 下载