Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6843173
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: LINUX

2008-12-29 15:33:38

实现Linux软件RAID的技术研究

1 引言

该应用方案通过使用一台普通的P4级的计算机以及6块移动硬盘,通过LINUX提供的软件RAID方法实现了一个大容量的、具有很强数据冗余能力以及很高数据安全性的数据存储案例,该应用案例在建设完成后,目前已经平稳使用两年,对入门级的数据存储具有很强的现实意义。

2 案例关键技术具体实现方法

2.1双网卡绑定实现负载均衡

采用双网卡绑定技术实现服务器网络连接的高可用性及吞吐量。

1)效果:网卡eth0eth1虚拟成设备bond0,并且向外公布一个虚拟IP地址,并提供两倍的网络带宽。其中一条链路或网卡出现故障时,系统应用不受故障影响。

2)配置方法:使用VI编辑器将标有//的内容添加到/etc/init.d/network中的相应位置。(//不用输入,修改完后需要重启服务器操作系统)mode为网卡工作方式,“1”为互援式工作方式(热备份工作方式,当前工作链路或网卡出现故障时,备份网卡会自动接管网络链路),“0”为集群式工作方式(同时在线提供两倍带宽,一条链路或网卡故障时,网络带宽为工作网卡带宽,不需切换)。示例如下:

//modprobe bonding mode=0 miimon=100 primary=eth0

//ifconfig bond0 inet 192.168.1.59 netmask 255.255.255.0

//route add default gw 192.168.1.1

//ifenslave bond0 eth0

//ifenslave bond0 eth1

//ifconfig bond0 up

;;

stop)

echo Shutting down network interfaces:

echo Shutting down network interfaces:

//ifenslave -d bond0 eth0

//ifenslave -d bond0 eth1

//ifconfig bond0 down

    1. Linux创建软Raid的配置过程(RAID1+0

Linux中使用6块廉价IDE硬盘盒组建一个RAID1+0设备,从而实现数据的良好安全性。操作系统启动正常后,分别依次开启6块廉价IDE硬盘盒电源开关,操作系统会依次加载这些设备,在系统提示符下输入sfdisk –s命令,系统返回如下信息:

/dev/sda: 78156288

/dev/sdb: 78150744

/dev/sdc: 78150744

/dev/sdd: 78150744

/dev/sde: 78150744

/dev/sdf: 78150744

/dev/sdg: 78150744

total: 547060752 blocks

其中/dev/sdb/dev/sdg是系统为6IDE硬盘创建的设备名称。我们将通过这些设备名称来使用该6IDE硬盘创建RAID1+0设备。

第一步:创建新磁盘分区:

root用户执行命令#fdisk /dev/hdb,完成对第二个IDE硬盘的格式化。

Command (m for help):提示下输入n,即创建新的磁盘分区。

Command action

e extended

p primary partition (1-4):提示下输入p,即创建主分区。

Partition number (1-4): 提示下输入1 ,即分区号

First cylinder (1-522, default 1): 提示下按回车,即指定起始柱面(注意:括号中尾柱面数字取决于硬盘的具体型号)

Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): 提示下按回车,即指定尾柱面。

Command (m for help): 提示下输入p ,即查看分区状态,如果看到/dev/sdb1等信息则说明分区成功。

Command (m for help): 提示下输入t,即转换分区类型

Hex code (type L list codes): 提示下输入L,即显示分区编码列表

Hex code (type L list codes): 提示下输入fd,即LinuxRaid分区编码

Command (m for help): 提示下输入w ,即保存退出

重复以上步逐,在其余五块硬盘上创建LinuxRaid分区。完成后需要重新启动Linux主机,以使设置生效。

第二步:创建RAID设备

执行创建RAID1设备命令

[root@localhost /]# mdadm -Cv /dev/md0 -l1 -n2 -c128 /dev/sd[b,c]1

[root@localhost /]# mdadm -Cv /dev/md1 -l1 -n2 -c128 /dev/sd[d,e]1

[root@localhost /]# mdadm -Cv /dev/md2 -l1 -n2 -c128 /dev/sd[f,g]1

命令中各参数的作用如下:

-C”:创建一个新的阵列;“/dev/md0”:表示阵列设备名称;“-l1”表示设置阵列模式,可以选择01456,它们分别对应于RAID0RAID1RAID4RAID5RAID6,这里设为RAID1模式;“-n2”指设置阵列中活动设备的数目, 该数目加上备用设备的数目应等于阵列中的总设备数; “-c128”指设置块的尺寸为128KB,缺省为64KB;“/dev/hd[b, c,]1”指当前阵列中包含的所有设备标识符,也可以分开来写,中间用空格分开。

当创建完成后,查看/proc/mdstat文件:

Personalities : [raid1] [raid0]

md2 : active raid1 sdg1[1] sdf1[0]

78148096 blocks [2/2] [UU]

md1 : active raid1 sde1[1] sdd1[0]

78148096 blocks [2/2] [UU]

md0 : active raid1 sdc1[1] sdb1[0]

78148096 blocks [2/2] [UU]

unused devices:

执行创建RAID0设备命令

[root@localhost etc]# mdadm -Cv /dev/md3 -l0 -n3 -c128 /dev/md0 /dev/md1 /dev/md2

查看/proc/mdstat文件出现如下信息:

Personalities : [raid1] [raid0]

md3 : active raid0 md2[2] md1[1] md0[0]

234443904 blocks 128k chunks

md2 : active raid1 sdg1[1] sdf1[0]

78148096 blocks [2/2] [UU]

md1 : active raid1 sde1[1] sdd1[0]

78148096 blocks [2/2] [UU]

md0 : active raid1 sdc1[1] sdb1[0]

78148096 blocks [2/2] [UU]

unused devices:

至此,RAID10盘阵创建完成。

第三步:配置RAID设备

接下来我们为mdadm生成配置文件, mdadm的缺省配置文件为/etc/mdadm.conf,它主要是为了方便阵列的日常管理而设置的,对于阵列而言不是必须的,但是为了减少日后管理中不必要的麻烦,还是应该坚持把这一步做完。 使用vi命令,按照规定的格式编辑修改/etc/mdadm.conf文件 文件内容如下:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=c4f17506:687b1bd2:9964e709:c0d4630d devices=/dev/sdb1,/dev/sdc1

ARRAY /dev/md1 level=raid1 num-devices=2 UUID=ae52d48a:e65c88c2:0bb4c763:50499806 devices=/dev/sdd1,/dev/sde1

ARRAY /dev/md2 level=raid1 num-devices=2 UUID=4027a9e7:a8fab70b:272f6793:c8a72f12 devices=/dev/sdf1,/dev/sdg1

ARRAY /dev/md3 level=raid0 num-devices=3 UUID=1cdfe4da:d88fe61e:54d2ed07:7aeb9c96 devices=/dev/md0,/dev/md1,/dev/md2

//每行的devices后的内容为添加内容,设备名以盘阵的设备名为准。可以使用命令mdadm –Ds来获得操作系统给出的文件内容信息。

重启服务器后,按照顺序依次打开硬盘盒,执行如下命令:

[root@localhost etc]# mdadm –As

出现如下信息:

mdadm: /dev/md0 has been started with 2 drives.

mdadm: /dev/md1 has been started with 2 drives.

mdadm: /dev/md2 has been started with 2 drives.

mdadm: /dev/md3 has been started with 3 drives.

说明系统已经挂载完成创建好的RAID10阵列。

第四步:生成文件系统

创建文件系统并挂接(mount)使用。RAID10已经启动并处于运行状态,现在要做的就是在其上创建一个文件系统,这里使用mkfs命令,文件系统类型为ext3。命令如下:

# mkfs.ext3 /dev/md3 //ext3文件系统格式化RAID10设备

当新的文件系统生成之后,就可以将/dev/md3挂接到指定的目录了。命令如下:

# mount /dev/md3 /ftp //挂接/dev/md3设备到/ftp目录

2.3 编写统一服务启动和终止脚本

/etc/init.d/中分别建立mdmountvsftpd_startmdmountvsftpd_stop文件。过程如下:

[root@localhost init.d]# vi mdmountvsftpd_stop(终止服务脚本)

Mdmountvsftpd_stop内容如下:

#! /bin/bash

umount /ftp //卸载/ftp挂载设备

mdadm --stop /dev/md3 //停止使用/dev/md3设备

mdadm --stop /dev/md2 //停止使用/dev/md2设备

mdadm --stop /dev/md1 //停止使用/dev/md1设备

mdadm --stop /dev/md0 //停止使用/dev/md0设备

修改mdmountvsftpd_stop文件权限

[root@localhost init.d]# chmod 700 mdmountvsftpd_stop

[root@localhost init.d]# vi mdmountvsftpd_start(启动服务脚本)

Mdmountvsftpd_start内容如下:

#! /bin/bash

mdadm –As //加载/etc/mdadm.conf文件中存在的RAID10设备

mount /dev/md3 /ftp //加载/dev/md3RAID10设备到/ftp目录

修改mdmountvsftpd_start文件权限

[root@localhost init.d]# chmod 700 mdmountvsftpd_start

3 结论与展望

在此我们使用Linux提供的双网卡绑定技术以及软件RAID技术,使用普通的PC机和IDE硬盘盒组成了一个性能良好的存储设备,我们可以将该RAID10设备服务器部署为一般的WEBFTP、文件共享应用案例的存储设备解决方案,也可以将该RAID10设备服务器部署为ISISCSI应用服务器在HA、集群应用等需要共享盘阵的更高级应用部署中作为快速的、有效的、安全的、健壮存储设备来使用,更可以将该设备作为廉价储存区域网(Storage Area Network, 简称 SAN)设备进行部署。

注意(不知道开机如何保证盘序,呵呵,这步只能手动,请高手解决下。):

系统开机顺序:

  1. 启动操作系统

  2. 操作系统正常启动后依次打开硬盘盒电源

  3. 执行/etc/init.d/mdmount_start命令启动RAID10阵列服务,挂载目录/ftp,启动VsftpdFTP服务

关机顺序:

  1. 执行/etc/init.d/mdmount_stop命令终止VsftpdFTP服务,卸载目录ftp,终止RAID10阵列服务

  2. 执行shutdown –h now命令关机

  3. 操作系统正常关闭后依次关闭硬盘盒电源

阅读(2056) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~