迷彩 潜伏 隐蔽 伪装
分类: LINUX
2008-12-29 15:33:38
实现Linux软件RAID的技术研究
1 引言
该应用方案通过使用一台普通的P4级的计算机以及6块移动硬盘,通过LINUX提供的软件RAID方法实现了一个大容量的、具有很强数据冗余能力以及很高数据安全性的数据存储案例,该应用案例在建设完成后,目前已经平稳使用两年,对入门级的数据存储具有很强的现实意义。
2 案例关键技术具体实现方法
2.1双网卡绑定实现负载均衡
采用双网卡绑定技术实现服务器网络连接的高可用性及吞吐量。
1)效果:网卡eth0和eth1虚拟成设备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
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是系统为6块IDE硬盘创建的设备名称。我们将通过这些设备名称来使用该6块IDE硬盘创建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”表示设置阵列模式,可以选择0、 1、4、 5、6,它们分别对应于RAID0、RAID1、RAID4、RAID5、RAID6,这里设为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_start和mdmountvsftpd_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设备服务器部署为一般的WEB、FTP、文件共享应用案例的存储设备解决方案,也可以将该RAID10设备服务器部署为ISISCSI应用服务器在HA、集群应用等需要共享盘阵的更高级应用部署中作为快速的、有效的、安全的、健壮存储设备来使用,更可以将该设备作为廉价储存区域网(Storage Area Network, 简称 SAN)设备进行部署。
注意(不知道开机如何保证盘序,呵呵,这步只能手动,请高手解决下。):
系统开机顺序:
启动操作系统
操作系统正常启动后依次打开硬盘盒电源
执行/etc/init.d/mdmount_start命令启动RAID10阵列服务,挂载目录/ftp,启动VsftpdFTP服务
关机顺序:
执行/etc/init.d/mdmount_stop命令终止VsftpdFTP服务,卸载目录ftp,终止RAID10阵列服务
执行shutdown –h now命令关机
操作系统正常关闭后依次关闭硬盘盒电源