Linux 下采用软件实现RAID---薛启康
时间:2006-03-05 来源:cnscn2008
500)this.width=500;" border="0">
一.raid的安装环境:
两块相同型号的磁盘,都以主盘/从盘安装在机器上。
二.raid的安装设置:
在你创建 RAID 设备之前,你必须首先创建 RAID 分区,然后遵循以下步骤:
1.在安装操作系统「磁盘分区设置」屏幕上,选择「用 Disk Druid 手工分区」。
2. 在 Disk Druid 中,分别选择hda,hdc「新建」来创建新分区。你不能输入一个挂载点,创建的分区类型为“software RAID”。你可以根据你的情况创建分区,我是先分别在hda和hdc上创建100M,512M和3484M类型为“software RAID”的分区,我的磁盘是同型号40G的磁盘。
3.创建软件raid,输入挂载点。先输入挂载点为/或者是/boot等,选择 “文件系统类型是ext3或者是swap”,raid级别是raid1,选择raid成员。我的raid1是两块磁盘,在2步创建的分区也是一一对应的, hda1,hdc1大小都为100M,在这里我创建raid设备时的挂载点是/boot,hda2,hdc2大小都为512M,挂载点是swap, hda3,hdc3大小都为3484M,挂载点是/。
4.创建的分区用fdisk -l看如图“raid分区”。
5.创建完分区后,继续安装操作系统,和我们平时安装linux的方法一样。
三.数据恢复方案:
我测试的结果是使用该方法安装的raid1只可以使用一块磁盘正常引导,例如hda磁盘破坏后,不可以使用hdc正常引导机器。如果您有更好的解决方案,可以与我进行交流。下面我将分别讲述hda/hdb磁盘破坏后数据的恢复方法。
1.hdc磁盘破坏,hda工作正常,系统可以正常引导:
(1)关闭计算机。
(2)替换掉hdc磁盘,开机。
(3)开机重新启动机器。
(4)以root身份登陆计算机,执行以下命令:
shell> sfdisk -d /dev/hda > partitions.sdb //导出hda磁盘的分区信息
shell> sfdisk /dev/hdc < partitions.sdb //使用hda的磁盘分析信息在hdc上建立分区
(5)使用raidhotadd /dev/mdX /dev/hdX建立新的磁盘镜像,这个操作需要一段时间,你可以休息一下,喝杯咖啡了。
(6)重新启动机器,一切已经恢复正常。
2.hda磁盘破坏,系统不能正常引导:
这 中情况恢复比较麻烦一点。摘掉hda磁盘,使用redhat9.0光盘以挽救模式引导机器,建议在引导时加载网络设备,引导成功后,系统应该没有加载 hdb的数据信息,你需要使用(mount /dev/hdcX /mnt/***/)将磁盘数据mount到系统,然后使用tar命令将你需要备份的数据打包,可以将数据copy到另外一块硬盘,也可以使用网络协议, 例如ftp等,将你备份的数据copy到另一个主机。最后替换掉已经破坏的hda磁盘,使用该文档重新建立raid,恢复数据。
====================================================================
首先,Linux系统内核是可以支持RAID的。第一部要做的就是购买两块相同的硬盘,然后分成同样大小的分区。之后你可以下载mdadm工具,以便创建和管理RAID阵列。
执行以下命令,可以在磁盘上创建你的第一个阵列:
# modprobe md
# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hde1
以上命令创建了阵列(/dev/md0),并将其映射到两个物理磁盘上(/dev/hda1 和/dev/hde1)。这种RAID阵列被称为RAID1,即直接镜像模式。当建立好后,你可以对其格式化,并像操作其它分区一样操作它。
RAID不需要什么配置文件。当系统启动时,RAID阵列会立即生效。因此你可以像处理其它物理分区一样对RAID设备进行任何操作。
====================================================================
数据的安全性是人们在使用计算机中最重要的问题之一。通常情况下,人们会在服务器环境中采用硬盘镜像技术,
以达到数据的双重备份。同样在Linux环境下,我们可以采用这种技术。在Linux环境下,我们可以采用Raidtool
工具,不仅可以将两个硬盘进行镜像。还可以制作软RAID0、RAID4、RAID5。说是软RAID,是因为通常情况下,
RAID盘是通过专用的RAID卡进行的。而在Linux 环境下,我们可以利用软件raidtool达到RAID功能。
所以称为软RAID。建立并使用RAID盘有以下几种方法:
第一种方法:
自行下载并编译raidtools软件包,较早版本的raidtool软件包名为md,现在已正式更名为raidtool。下载地址:
中国自由软件库,通过搜索引擎查找下载。
如果你已经从网上下载了raidtools-0.41.tar.gz软件包。解开后,自行编译,步骤如下:
$gunzip -d raidtools-0.41.tar.gz
$tar -xvf raidtools-0.4.1.tar
在使用raidtools之前,首先要知道目前正在使用的核心是否支持md。如果你正在使用的核心是2.0.x,并且不是
自己编译过的话,大多数情况下是支持软RAID的。如果不能确定,则应自己编译核心。在配置时,应选择对md的支持。
确定了正在使用的核心支持RAID。则编译raidtools软件包如下:
$cd raidtools-0.41
$./configure
$ make
$make install ##make install在/dev下产生md0-md3共4个设备。
OK, 安装完成。
在使用raidtool前,首先决定自己要使用的RAID的种类。目前使用raidtool可以作RAID0,RAID1,RAID5。
由于只有两块硬盘而无法使用RAID5,除了RAID5外,还可以选择作linear模式或RAID0。笔者选择了作RAID0。
以下为制作过程:
首先,关机,将两块小硬盘分别加到第一个IDE控制器的slave接口上。将第二块硬盘接到第二个IDE控制器上的slave
接口上(笔者这台机器上的CDROM接在第二个IDE控制器的master上)。
加电启动系统,以root登录,运行以下命令对硬盘进行分区:
#fdisk /dev/hdb
将全部硬盘划分给一个主分区,建立一个/dev/hdb1分区。
#fdisk /dev/hdd
同样将全部硬盘划分给一个主分区,建立一个/dev/hdd1分区。
之后:
#/sbin/mdcreate raid0 -c4k /dev/md0 /dev/hdb1 /dev/hdd1
当然,为了提高访问速度,你可以将硬盘进行比较细致的划分,尽可能将分区合理分布在不同的硬盘上。然后再用
mdcreate将它们组合成一个mdx(x:1,2,3)
为了使用新建立的RAID设备,首先应启动它:
#/sbin/mdadd -ar
之后,查看/proc/mdstats文件的内容,以检查RAID0的状态。
#cat /proc/mdstats
系统显示:
personalities : [1 linear] [2 raid0]
read_ahead not 8092 sectors
md0 : active raid0 hdb1 hdd1 xxxx blocks 8k chunks
md1 :inactive
md2 :inactive
md3 :inactive
这表示,新建的RAID0已经可以正常运行了。为了使用新RAID盘,还应在新盘上建立新的文件系统,建立过程如下:
#mke2fs /dev/md0 ##注:在新的存储设备上建立ext2文件系统
建立了新的文件系统,再将它mount到根下的某个目录上,就可以正式使用了。安装方法如下:
#mount /dev/md0 /opt ##注:/opt为笔者在根分区建的一个mount点
当然,如果有必要的话,你还可以用raidtools建立raid5。以提高数据的可靠性。
最后,将RAID0的加载及文件系统的加挂全加入到init.sysinit文件中,这样,只要系统一启动,首先就执行RAID,
用户就不必再手工安装了。
用户应将以下两个命令加入到init.syinit文件中。
/sbin/mdrun -ar
mount /dev/md0 /opt
当然,如果你不觉得麻烦,也可以手工运行以上命令,以手动方式启动软RAID盘。
第二种方式:如果你安装的Linux发行版较新,其中已经带有raidtool工具,那么就不必再下载软件并自己编译了。
使用时可以这样处理:
首先建立一个文件/etc/raidtab(以制作raid0为例),文件内容如下:
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/hdb1
raid-disk 0
device /dev/hdd1
raid-disk 1
然后,运行以下命令:
#mkraid /dev/md0
这样就可以生成一个新的设备:/dev/md0。
启用软raid方法:
#raidstart /dev/md0
其余操作同上。
如果你正在使用的发行版很新,可能以下两种情况都不不适用于你,那么,你可以采用以下方式使用软RAID。
笔者的一台PC上安装了Red hat Linux 6.1,自行编译raidtool0.42,0.50beta2时,先是找不到所要的头
文件,经笔者将所需头文件复制后,编译仍然通不过。原来,由于新的发行版采用了一系列新的函数,情况稍有
一点不同。不过,新的发行版中,提供了raidtools,在/sbin目录中,有raidtools的一系列工具,其中有
mkraid,raid0run,raidstop,raidstart等一组工具。如果你想自己编译,可以从中国自由软件库中查找到
了最新版为0.9的raidtool。自行编译了0.9版的raidtool。编译正常通过。
新版的raidtool稍有一点不同,笔者使用系统自带的raidtool,制作软RAID方法如下:
1、 首先建立文件/etc/raidtab,2、 文件内容如下:
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 0
chunk-size 8
device /dev/hdb1
raid-disk 0
device /dev/hdd1
raid-disk 1
3、 生成软raid设备4、 ,5、 运行以下命令:
# mkraid -c /etc/raidtab /dev/md0
之后,运行以下命令,以查看目前RAID的运行状态。
[root@rh61 /proc]# cat mdstat
如果系统显示如下:
Personalities : [raid0]
read_ahead 1024 sectors
md0 : active raid0 hdd1[1] hdb1[0] 2202416 blocks 8k chunks
unused devices:
表示,你的RAID0已正常运行了。
3、建立新的文件系统
现在,为了使用新生的设备,我们应在新的RAID盘上建ext2文件系统,建立新的文件系统的命令如下:
[root@rh61 /sbin]# mkfs.ext2 /dev/md0
经过大约两三分钟,新的文件系统正确生成。现在就可以开始使用它了。使用方法如下:
[root@rh61 /sbin]# mount -t ext2 /dev/md0 /opt
将/dev/md0设备加挂(mount)到/opt安装点上。
此后,笔者在此软RAID盘上安装了Sybase 11.0.3.3,经过测试,发现整个RAID0系统的性能还不错。
最后,在使用Raidtools时应注意:采用raidtool制作软RAID,最好不要在一块硬盘上分多个分区,再将这
些分区同raidtool制作成RAID。因为这样做不但不会提高硬盘的访问速度,反而会降低整修系统的性能。要
使用软RAID盘,最好是将一个硬盘分成多个分区,再将不同硬盘的分区制作成软RAID盘。再有,用户最好不
要将/usr目录放置到RAID盘上。如果RAID盘出错,那你可就完了。系统的交换分区最好也不要放到RAID盘上,
尽管有人认为这样可以提高访问速度,但是,笔者担心,万一你在使用系统时,交换分区上有交换了很多系统时,
这时忽然RAID盘出错了,那可就完了。
===================================================================
数据在现今企业中占有重要的地位,数据存储的安全性有而是人们使用计算机要注意的重要问题之 一。通常情况下人们在服务器端采用各种冗余磁盘阵列RAID技术来保护数据,中高档的服务器一般都提供了昂贵的硬件RAID控制器,但是很多中小企业没有 足够的经费承受这笔开销。我们有没有方法可以通过软件来实现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直接安装。
第一步:以root用户登录系统,对磁盘进行分区。
#fdisk /dev/sdb
将设备/dev/sdb上的全部磁盘空间划分给一个主分区,建立/dev/sdb1分区,并修改分区的类型标识为fd(linux raid auto),然后对剩余的磁盘做同样的操作。创/dev/sdb1,/dev/sdc1,/dev/sdd1三个分区。
第二步:创建RAID阵列
#madam -cv /dev/md0 -l1 -n2 -x1 /dev/sd{b,c,d}1
小提示:-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的当前状态和同步完成所需要的时间。
[B]#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:[/B]
出现上面的提示后就表示创建的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:d952280c: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最好不要放在阵列中,因为一旦阵列出现问题系统将无法正常运行。
=================================================================cn/u/1295/showart.php?id=44886
由 于系统安全性的需求,对SUN Enterprise 220R Server(2*18.2GB Dsik)做一个在Solarsi8下使的RAID1。在网上找过很多文章做指导,但是有些出入和错误的地方,有的也不一定说的出所以然来,只是做通了, 写下来供大家参考。
抛砖引玉,转载请写明出处和作者,谢谢!
由 于系统安全性的需求,对SUN Enterprise 220R Server(2*18.2GB Dsik)做一个在Solarsi8下使的RAID1。在网上找过很多文章做指导,但是有些出入和错误的地方,有的也不一定说的出所以然来,只是做通了, 写下来供大家参考。
抛砖引玉,转载请写明出处和作者,谢谢!
一、Disk分布情况:
0:c0t0d0
1:c0t1d0
注:0,1做镜像,即Raid1;
系统盘(c0t0d0)分区及镜像盘(c0t1d0)情况:
c0t0d0s0(d10) d0 c0t1d0s0(d20) / 9534M
c0t0d0s1(d11) d1 c0t1d0s1(d21) swap 2049M
c0t0d0s2 c0t1d0s2 overlap 整个盘
c0t0d0s3(d13) d3 c0t1d0s3(d23) /usr 3584M
c0t0d0s6(d16) d6 c0t1d0s6(d26) /metadb 50M
c0t0d0s7(d17) d7 c0t1d0s7(d27) /export/home 2048M
二、安装DiskSuite套件:
系统安装完成后,使用Solarsi8 software 2 of 2安装DiskSuite_4.2.1软件,安装路径:/cdrom/cdrom0/Solaris_8/EA/installer & 选择默认安装就可以。
三、镜像(root用户下进行):
1、调整第二块硬盘(c0t1d0)的文件分区表调整为和引导盘一致
#prtvtoc /dev/rdsk/c0t0d0s2|fmthard –s – /dev/rdsk/c0t1d0s2
fmthard:New volume table of contents now in place
2、准备DiskSuite使用的metadb空间
#umount /metadb **50MB小空间的用处,类似于交换空间
#rm –r /metadb
#vi /etc/vfstab
将下面这行注释掉或删除,如下:
#/dev/dsk/c0t0d0s6 /dev/rdsk/c0t0d0s6 /metadb ufs 1 yes –
3、制作Mirror
①先生成replicas,供DiskSuite内部用
#metadb –a –f –c 3 c0t0d0s6 c0t1d0s6
#metadb
②Creating a mirror from /
#metainit -f d10 1 1 c0t0d0s0
#metainit -f d20 1 1 c0t1d0s0
#metainit d0 -m d10
#metaroot d0
③Creating a mirror from swap
#metainit -f d11 1 1 c0t0d0s1
#metainit -f d21 1 1 c0t1d0s1
#metainit d1 -m d11
④Creating a mirror from /var
#metainit -f d13 1 1 c0t0d0s3
#metainit -f d23 1 1 c0t1d0s3
#metainit d3 -m d13
⑤Creating a mirror from /export/home
#metainit -f d17 1 1 c0t0d0s7
#metainit -f d27 1 1 c0t1d0s7
#metainit d7 -m d17
⑥编辑 /etc/vfstab 文件
/dev/dsk/c0t0d0s1 - - swap - no -
/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 / ufs 1 no -
/dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /var ufs 1 no -
/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /export/home ufs 2 yes -
swap - /tmp tmpfs - yes -
更改为:
/dev/md/dsk/d1 - - swap - no -
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no -
/dev/md/dsk/d3 /dev/md/rdsk/d3 /var ufs 1 no -
/dev/md/dsk/d7 /dev/md/rdsk/d7 /export/home ufs 2 yes -
swap - /tmp tmpfs - yes -
⑦文件系统激活
#lockfs –fa
#reboot
⑧文件系统关联
#metattach d0 d20
#metattach d1 d21
#metattach d3 d23
#metattach d7 d27
⑨查看同步状态
#metastat d0
#metastat d1
#metastat d3
#metastat d7
也可以通过DiskSuite的图形化工具查看:
#metatool
100%后,每个文件系统Status:OK,就算镜像完成。
注意:⑧步骤中的每步千万不可拆分到前面几步中分别执行,那样,在执行完一个文件系统后,后续的文件系统就不能metainit,系统提示资源被占用。
四、镜像盘的boot引导:
①启动信息
#installboot /usr/platform/`uname –i`/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0
②修改EEPROM
推荐进入OK模式修改
#ls –l /dev/dsk/c0t0d0s0 **获得启动参数
lrwxrwxrwx 1 root root 41 Jun 14 11:08 /dev/dsk/c0t0d0s0 -> ../../devices/pci@1f,4000/scsi@3/sd@0,0:a
#init 0
ok devalias (察看启动设备)
ok nvalias rootdisk /pci@1f,4000/scsi@3/disk@0,0
ok nvalias mirrdisk /pci@1f,4000/scsi@3/disk@1,0
ok setenv boot-device rootdisk mirrdisk disk:a
③测试
ok boot rootdisk **系统正常启动,找到启动文件
ok boot mirrdisk **系统正常启动,找到启动文件
注意:配置nvalias的时候,后面的‘disk@*,0’处,有些文档写的是‘sd@*,0’,但是经过测试,是不能正常启动的。