在Linux环境下架设DNS服务器

2005-07-17

DNS的配置

我的需求是架设本地DNS服务器,使用chroot模式架设,增强DNS的安全性。

我的环境是 Redhat Enterprise Linux AS3 update 5。

首先需要如下几个rpm包
bind-9.2.4-7_EL3.i386.rpm
caching-nameserver-7.3-3_EL3.noarch.rpm
bind-chroot-9.2.4-7_EL3.i386.rpm

检查系统是否已经安装:
# rpm -qa | grep bind
# rpm -qa | grep caching-nameserver
如果都有了,那么直接安装bind-chroot就可以了。

在安装系统的时候,如果选上dns服务,那么默认就会安装bind和caching-nameserver这两个了,如果没有,请先安装这两个。
caching-nameserver是一系列的zone文件和named.conf,是已经配置好的。如果不安装这个,在做nameserver的时候还需要自己搞定这些东西,确实很烦的。
安装完这两个东西,其实一个 cache-only 的DNS服务器已经OK了。redhat确实比较省事的。

如果系统的named已经处于运行状态,都不需要去管他的,在安装的过程中系统会自动停掉原来的服务,进行适当的配置修改(主要是讲原来的一些zone文件和conf文件放到chroot目录下面),然后再启动named的。

本着 KISS(Keep it simple and stupid) 原则和“不造轮子”的原则,还有我偷懒的原则,我的 name server 就这样被搞定了。

用softraid做raid1的时候的启动问题

2005-07-12

呵呵,自己随便写写,有点乱,但愿大家能够看明白。

我用的是redhat as 3.5的系统,用两个scsi做系统。

安装的时候使用了softraid,对整个系统做了镜像。希望的效果是任何一个硬盘出问题,系统都可以正常启动工作。虽然现在的softraid做的系统可以对 /boot 分区也做镜像并且可以启动,但实际上启动的时候,redhat仍然是从第一个scsi盘引导的。如果是第二个硬盘宕掉,那么系统是可以启动的,但是如果是第一个硬盘挂掉,系统就没有办法引导了,虽然第二个硬盘里面的数据都还在。

于是我就找了很多相关资料,终于找到一个通过修改grub实现的方法了。

系统做了raid之后,虽然整个系统都是mirror了的,但是实际上grub的引导仍然是从第一硬盘,也就是sda开始的。因为软raid设备 /dev/md0 是在系统起来之后才出现的。为了让系统可以从raid1的两个盘中的任意一个引导,就要修改grub的设置,让他可以随便找一个OK的盘,从它里面的引导分区,也就是 /boot 分区中找到引导信息。

首先编辑 grub.conf

# vi /boot/grub/grub.conf
default=0
timeout=10
#splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Enterprise Linux AS (2.4.21-32.EL)
# root (hd0,0)
kernel /boot/vmlinuz-2.4.21-32.EL ro root=/dev/md0 hdc=ide-scsi
initrd /boot/initrd-2.4.21-32.EL.img

这个文件里面的 hd0 就是我的第一个scsi硬盘。可以查看/boot/grub/device.map 知道详细。
# cat /boot/grub/device.map
# this device map was generated by anaconda
(fd0) /dev/fd0
(hd0) /dev/sda

安装qlogic的hpt37x的sata驱动

2005-07-11

install rocketraid 1520 on redhat enterprise linux as 3 update 5

如果使用默认的驱动,SATA硬盘会被认成hde,hdg等。更新驱动之后,会认成sda,sdb等等 :)

1. 获取驱动程序的源码
从网站下载驱动的源码。
http://www.highpoint-tech.com/BIOS%20+%…source-v2.0.tgz
最新版本的驱动增加了对2.6.x内核和x86_64的支持。
网站上针对redhat linux的驱动包只针对到redhat 9,对于redhat as 3来说,内河版本不对,也没有研究是不是有用。
反正从源码编译得了。

2. 安装内核源码
为了编译驱动,需要安装内核源码。rpm安装得了。

3. 编译驱动
# make KERNELDIR=/usr/src/linux-2.4.21-32.EL
gcc -DDRIVER_VERSION=”2.0″ -DLIST_H_INCLUDED -DMODVERSIONS -DMODULE -DLINUX -D_LINUX_ -D__KERNEL__=1 -DCONFIG_PCI -DNO_CROSS_CTRL=1 -DSUPPORT_ARRAY -DSUPPORT_OLD_ARRAY -Wall -O2 -Wstrict-prototypes -fomit-frame-pointer -I. -I/usr/src/linux-2.4.21-32.EL/include -I/usr/src/linux-2.4.21-32.EL/drivers/scsi -c hpt.c -o hpt.o
ld -r hpt.o raid.o -o hpt37x2.o

4. 测试驱动
# insmod hpt37x2.o
Warning: loading hpt37x2.o will taint the kernel: non-GPL license – Proprietary
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module hpt37x2 loaded, with warnings
这里这个警告不用理会它。

# lsmod
hpt37x2 80984 0 (unused)
……
scsi_mod 106664 4 [hpt37x2 sg aic7xxx sd_mod]

# fdisk -l

Disk /dev/sda: 9127 MB, 9127034880 bytes
255 heads, 63 sectors/track, 1109 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1020 8193118+ fd Linux raid autodetect
/dev/sda2 1021 1109 714892+ fd Linux raid autodetect

Disk /dev/sdb: 9127 MB, 9127034880 bytes
255 heads, 63 sectors/track, 1109 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 1020 8193118+ fd Linux raid autodetect
/dev/sdb2 1021 1109 714892+ fd Linux raid autodetect

Disk /dev/sdc: 81.9 GB, 81964301824 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 6226 50010313+ fd Linux raid autodetect
/dev/sdc2 6227 9964 30025485 fd Linux raid autodetect

Disk /dev/sdd: 81.9 GB, 81964301824 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdd1 1 6226 50010313+ fd Linux raid autodetect
/dev/sdd2 6227 9964 30025485 fd Linux raid autodetect

注:sda sdb是我的两个scsi硬盘。sdc sdd就是两个sata的硬盘了。

5. 修改grub,让系统引导的时候不加载默认的模块。
# vi /boot/grub/grub.conf
#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Enterprise Linux AS (2.4.21-32.EL)
root (hd0,0)
# kernel /boot/vmlinuz-2.4.21-32.EL ro root=/dev/md0
kernel /boot/vmlinuz-2.4.21-32.EL hde=noprobe hdf=noprobe hdg=noprobe hdh=noprobe ro root=/dev/md0
initrd /boot/initrd-2.4.21-32.EL.img

6. 修改系统让它每次都能够自动加载新的驱动模块
首先看看grub.conf,看看系统是从那个镜像文件引导的。就是initrd /boot/initrd-2.4.21-32.EL.img后面的initrd-2.4.21-32.EL.img了。
然后我们来修改这个东西。
# cd
复制这个镜像文件
# cp /boot/initrd-2.4.21-32.EL.img .
解开这个玩意
# gzip -dc initrd-2.4.21-32.EL.img > initrd.old
建一个临时的目录
# mkdir initrd
mount上这个东西
# mount -o loop initrd.old initrd
将编译好的驱动模块复制进来
# cp /path/to/hpt37x2.o ./initrd/lib
编辑 ./initrd/linuxrc 这个文件,在适当的地方插入加载模块的语句

echo “Load aic7xxx module”
insmod /lib/aid7xxx.o
insmod /lib/hpt37x2.o initrd-2.4.21-32.EL.img.new
OK了,然后将这个.new文件拷贝到/boot目录,将原来的改名之后,将这个改名成initrd-2.4.21-32.EL.img。
重新启动看看

7. 理论上应该OK了。如果没有其他scsi设备得话。那么将看到sata硬盘被分配了 /dev/sda …,如果还有其他的scsi设备,那么就会接着后面分配了。
下面就是分区,mount的事情了。不多少了。

附:
经过测试,我发现一下一些问题。

如果不加载最新的那个hpt37x2的驱动,那么这两个硬盘被当作ide设备,是可以用SMART查看他们的信息的,比如硬盘温度等等。但是这个时候,做的softraid的同步速度只有2M左右。

如果加载了hpt37x2.o,那么被当成scsi设备,softraid的同步速最高能达到15M,可是就没法查看SMART信息了。

RAID磁盘阵列技术全面介绍

2005-07-08

RAID磁盘阵列技术简述

  在计算机发展的初期,“大容量”硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都
相当繁琐。1987年, Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《A Case of Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列方案)》的论文,其基本思想就是将多只容量较小的、相对廉价的硬盘驱动器进行有机组合,使其性能超过一只昂贵的大硬盘。这一设计思想很快被接受,从此RAID技术得到了广泛应用,数据存储进入了更快速、更安全、更廉价的新时代。

  磁盘阵列对于个人电脑用户,还是比较陌生和神秘的。印象中的磁盘阵列似乎还停留在这样的场景中:在宽阔的大厅里,林立的磁盘柜,数名表情阴郁、早早谢顶的工程师徘徊在其中,不断从中抽出一块块沉重的硬盘,再插入一块块似乎更加沉重的硬盘……终于,随着大容量硬盘的价格不断降低,个人电脑的性能不断提升,IDE-RAID作为磁盘性能改善的最廉价解决方案,开始走入一般用户的计算机系统。

  一、RAID技术规范简介

  RAID技术主要包含RAID 0~RAID 7等数个规范,它们的侧重点各不相同,常见的规范有如下几种:

  RAID 0:RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构。RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0不能应用于数据安全性要求高的场合。

  RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互 为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。

  RAID 0+1: 也被称为RAID 10标准,实际是将RAID 0和RAID 1标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥有RAID 0的超凡速度和RAID 1的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。

  RAID 2:将数据条块化地分布于不同的硬盘上,条块单位为位或字节,并使用称为“加重平均纠错码(海明码)”的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂,因此在商业环境中很少使用。

  RAID 3:它同RAID 2非常类似,都是将数据条块化分布于不同的硬盘上,区别在于RAID 3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。

  RAID 4:RAID 4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID 4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID 4在商业环境中也很少使用。

  RAID 5:RAID 5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID 5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID 5更适合于小数据块和随机读写的数据。RAID 3与RAID 5相比,最主要的区别在于RAID 3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID 5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID 5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。

  RAID 6:与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID 6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID 6很少得到实际应用。

  RAID 7:这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID 7可以看作是一种存储计算机(Storage Computer),它与其他RAID标准有明显区别。除了以上的各种标准(如表1),我们可以如RAID 0+1那样结合多种RAID规范来构筑所需的RAID阵列,例如RAID 5+3(RAID 53)就是一种应用较为广泛的阵列形式。用户一般可以通过灵活配置磁盘阵列来获得更加符合其要求的磁盘存储系统。

  开始时RAID方案主要针对SCSI硬盘系统,系统成本比较昂贵。1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能够利用相对廉价的IDE硬盘来组建RAID系统,从而大
大降低了RAID的“门槛”。从此,个人用户也开始关注这项技术,因为硬盘是现代个人计算机中发展最为“缓慢”和最缺少安全性的设备,而用户存储在其中的数据却常常远超计算机的本身价格。在花费相对较少的情况下,RAID技术可以使个人用户也享受到成倍的磁盘速度提升和更高的数据安全性,现在个人电脑市场上的IDE-RAID控制芯片主要出自HighPoint和Promise公司,此外还有一部分来自AMI公司(如表2)。

  面向个人用户的IDE-RAID芯片一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID规范的支持,虽然它们在技术上无法与商用系统相提并论,但是对普通用户来说其提供的速度提升和安全保证已经足够了。随着硬盘接口传输率的不断提高,IDE-RAID芯片也不断地更新换代,芯片市场上的主流芯片已经全部支持ATA 100标准,而HighPoint公司新推出的HPT 372芯片和Promise最新的PDC20276芯片,甚至已经可以支持ATA 133标准的IDE硬盘。在主板厂商竞争加剧、个人电脑用户要求逐渐提高的今天,在主板上板载RAID芯片的厂商已经不在少数,用户完全可以不用购置RAID卡,直接组建自己的磁盘阵列,感受磁盘狂飙的速度。

  二.通过硬件控制芯片实现IDE RAID的方法

  在RAID家族里,RAID 0和RAID 1在个人电脑上应用最广泛,毕竟愿意使用4块甚至更多的硬盘来构筑RAID 0+1或其他硬盘阵列的个人用户少之又少,因此我们在这里仅就这两种RAID方式进行讲解。我们选择支持IDE-RAID功能的升技KT7A-R AID主板,一步一步向大家介绍IDE-RAID的安装。升技KT7A-RAID集成的是HighPoint 370芯片,支持RAID 0、1、0+1。

  做RAID自然少不了硬盘,RAID 0和RAID 1对磁盘的要求不一样,RAID 1(Mirror)磁盘镜像一般要求两块(或多块)硬盘容量一致,而RAID 0(Striping)磁盘一般没有这个要求,当然,选用容量相似性能相近甚至完全一样的硬盘比较理想。为了方便测试,我们选用两块60GB的希捷酷鱼Ⅳ硬盘(Barracuda ATA Ⅳ、编号ST360021A)。系统选用Duron 750MHz的CPU,2×128MB樵风金条SDRAM,耕升GeForce2 Pro显卡,应该说是比较普通的配置,我们也希望借此了解构建RAID所需的系统要求。 1.RAID 0的创建

  第一步

  首先要备份好硬盘中的数据。很多用户都没有重视备份这一工作,特别是一些比较粗心的个人用户。创建RAID对数据而言是一项比较危险的操作,稍不留神就有可能毁掉整块硬盘的数据,我们首先介绍的RAID 0更是这种情况,在创建RAID 0时,所有阵列中磁盘上的数据都将被抹去,包括硬盘分区表在内。因此要先准备好一张带Fdisk与Format命令的Windows 98启动盘,这也是这一步要注意的重要事项。

  第二步

  将两块硬盘的跳线设置为Master,分别接上升技KT7A-RAID的IDE3、IDE4口(它们由主板上的HighPoint370芯片控制)。由于RAID 0会重建两块硬盘的分区表,我们就无需考虑硬盘连接的顺序(下文中我们会看到在创建RAID 1时这个顺序很重要)。

  第三步

  对BIOS进行设置,打开ATA RAID CONTROLLER。我们在升技KT7A-RAID主板的BIOS中进入INTEGRATED PERIPHERALS选项并开启ATA100 RAID IDE CONTROLLER。升技建议将开机顺序全部改为ATA 100 RAID,实际我们发现这在系统安装过程中并不可行,难道没有分区的硬盘可以启动吗?因此我们仍然设置软驱作为首选项。

  第四步

  接下来的设置步骤是创建RAID 0的核心内容,我们以图解方式向大家详细介绍:

   1.系统BIOS设置完成以后重启电脑,开机检测时将不会再报告发现硬盘。
   2.磁盘的管理将由HighPoint 370芯片接管。
   3.下面是非常关键的HighPoint 370 BIOS设置,在HighPoint 370磁盘扫描界面同时按下“Ctrl”和“H”。
   4.进入HighPoint 370 BIOS设置界面后第一个要做的工作就是选择“Create RAID”创建RAID。
   5.在“Array Mode(阵列模式)”中进行RAID模式选择,这里能够看到RAID 0、RAID 1、RAID 0+1和Span的选项,在此我们选择了RAID 0项。
   6.RAID模式选择完成会自动退出到上一级菜单进行“Disk Drives(磁盘驱动器)”选择,一般来说直接回车就行了。
   7.下一项设置是条带单位大小,缺省值为64kB,没有特殊要求可以不予理睬。8.接着是“Start Create(开始创建)”的选项,在你按下“Y”之前,请认真想想是否还有重要的数据留在硬盘上,这是你最后的机会!一旦开始创建RAID,硬盘上的所有数据都会被清除。
   9.创建完成以后是指定BOOT启动盘,任选一个吧。

   按“Esc”键退出,当然少不了按下“Y”来确认一下。

   HighPoint 370 BIOS没有提供类似“Exit Without Save”的功能,修改设置后是不可逆转的

  第五步

  再次重启电脑以后,我们就可以在屏幕上看到“Striping(RAID 0)for Array #0”字样了。插入先前制作的启动盘,启动DOS。打开Fdisk程序,咦?怎么就一个硬盘可见?是的,RAID阵列已经整个被看作了一块硬盘,对于操作系统而言,RAID完全透明,我们大可不必费心RAID磁盘的管理,这些都由控制芯片完成。接下来按照普通单硬盘方法进行分区,你会发现“这个”硬盘的容量“变”大了,仔细算算,对,总容量就是两块硬盘相加的容量!我们可以把RAID 0的读写比喻成拉链,它把数据分开在两个硬盘上,读取数据会变得更快,而且不会浪费磁盘空间。在分区和格式化后千万别忘了激活主分区。

  第六步

  选择操作系统让我们颇费周折,HighPoint370芯片提供对Windows98/NT/2000/XP的驱动支持,考虑到使RAID功能面向的是相对高级的用户,所以我们选择了对新硬件支持更好的Windows XP Professional英文版(采用英文版系统主要是为了方便后面的Winbench测试,大家自己使用RAID完全可以用中文版的操作系统),Windows 2000也是一个不错的选择,但是硬件支持方面显然不如Windows XP Professional。

  第七步

  对于采用RAID的电脑,操作系统的安装和普通情况下不一样,让我们看看图示,这是在Windows XP完成第一步“文件复制”重启以后出现的画面,安装程序会以英文提示“按下F6安装SCSI设备或RAID磁盘”,这一过程很短,而且用户往往会忽视屏幕下方的提示。

  按下F6后出现安装选择,选择“S”将安装RAID控制芯片驱动,选择“Enter”则不安装。

  按下“S”键会提示插入RAID芯片驱动盘。

  键入回车,安装程序自动搜索驱动盘上的程序,选择“WinXP”那一个并回车。

  如果所提供的版本和Windows XP Profesional内置的驱动版本不一致,安装程序会给出提示让用户进行选择。

  按下“S”会安装软盘所提供的而按下“Enter”则安装Windows XP Professional

  自带的驱动。按下“S”后又需要确认,这次是按“Enter”(这个……确认太多了,呵呵)。接下来是正常的系统安装,和普通安装没有任何区别。

  RAID 0的安装设置我们就介绍到这里,下面我们会谈谈RAID 1的安装。与RAID 0相比,RAID 1的安装过程要简单许多,在正确操作的情况下不具破坏性。

2.RAID 1的创建

  虽然在原理上和RAID 0完全不一样,但RAID 1的安装设置过程却与RAID 0相差不多,主要区别在于HighPoint 370 BIOS里的设置。为了避免
重复,我们只向大家重点介绍这部分设置:

  进入HighPoint 370 BIOS后选择“Create RAID”进行创建:

   1.在“Array Mode”上点击回车,在RAID模式选择中选择第二项“Mirror(RAID 1)for Data Security(为数据源盘创建镜像)”。
   2.接着是源盘的选择,我们再次提醒用户:务必小心,不要选错。
   3.然后是目标盘的选择,也就是我们所说的镜像盘或备份盘。
   4.然后开始创建。
   5.创建完成以后BIOS会提示进行镜像的制作,这一过程相当漫长。
   6.我们用了大约45分钟才完成60GB的镜像制作,至此RAID 1创建完成。RAID 1会将主盘的数据复制到镜像盘,因此在构建RAID 1时需要特别小心,千万不要把主盘和镜像盘弄混,否则结果将是悲剧性的。RAID 1既可在两块无数据的硬盘上创建,也能够在一块已经安装操作系统的硬盘上添加,比RAID 0方便多了(除了漫长的镜像制作过程)。创建完成以后我们试着将其中一块硬盘拔下,HighPoint370 BIOS给出了警告,按下“Esc”,另一块硬盘承担起了源盘的重任,所有数据完好无损。

  对于在一块已经安装操作系统的硬盘上添加RAID 1,我们建议的步骤是:打开BIOS中的控制芯片→启动操作系统安装HighPoint 370驱动→关机将源盘和镜像盘接在IDE3、4口→进入HighPoint 370 BIOS设置RAID 1(步骤见上文介绍)→重启系统完成创建。

  我们对两种RAID进行了简单的测试,虽然RAID 0的测试成绩让人有些不解,但是实际使用中仍然感觉比单硬盘快了很多,特别是Windows XP Professional的启动异常迅速,进度条一闪而过。至于传输率曲线出现不稳定的情况,我们估计和平台选择有一些关系,毕竟集成芯片在进行这种高数据吞吐量的工作时非常容易被干扰。不过即使是这样,我们也看到RAID 0系统的数据传输率达到了非常高的水平,一度接近60MB/s。与RAID 0相比,RAID 1系统的性能虽然相对单磁盘系统没有什么明显的改善,但测试中我们发现RAID 1的工作曲线显得非常稳定,很少出现波动的情况。再看看Winbench99 2.0中的磁盘测试成绩,一目了然。

  对用户和操作系统而言,RAID 0和1是透明不影响任何操作的,我们就像使用一块硬盘一样。

  三、用软件方法实现RAID

  除了使用RAID卡或者主板所带的芯片实现磁盘阵列外,我们在一些操作系统中可以直接利用软件方式实现RAID功能,例如Windows 2000/XP中就内置了RAID功能。

  在了解Windows 2000/XP的软件RAID功能之前,我们首先来看看Windows 2000中的一项功能——动态磁盘管理。

  动态磁盘与基本磁盘相比,不再采用以前的分区方式,而是叫卷集,它的作用其实和分区相一致,但是具有以下区别:

  1.可以任意更改磁盘容量
  动态磁盘在不重新启动计算机的情况下可更改磁盘容量大小,而且不会丢失数据,而基本磁盘如果要改变分区容量就会丢失全部数据(当然也有一些特殊的磁盘工具软件可以改变分区而不会破坏数据,如PQMagic等)。
  2.磁盘空间的限制
  动态磁盘可被扩展到磁盘中不连续的磁盘空间,还可以创建跨磁盘的卷集,将几个磁盘合为一个大卷集。而基本磁盘的分区必须是同一磁盘上的连续空间,分区的最大容量当然也就是磁盘的容量。
  3.卷集或分区个数
  动态磁盘在一个磁盘上可创建的卷集个数没有限制,相对的基本磁盘在一个磁盘上最多只能分4个区,而且使用DOS或Windows 9X时只能分一个主分区和扩展分区。

  *这里一定要注意,动态磁盘只能在Windows NT/2000/XP系统中使用,其他的操作系统无法识别动态磁盘。

  因为大部分用户的磁盘都是基本磁盘类型,为了使用软件RAID功能,我们必须将其转换为动态磁盘:控制面板→管理工具→计算机管理→磁盘管理,在查看菜单中将其中的一个窗口切换为磁盘列表。这时我们就可以通过右键菜单将选择磁盘转换为动态磁盘。

  在划分动态卷时会可以看到这样几个类型的动态卷。

  1.简单卷:包含单一磁盘上的磁盘空间,和分区功能一样。
  (当系统中有两个或两个以上的动态磁盘并且两个磁盘上都有未分配的空间时,我们能够选择如下的两种分卷方式)2.跨区卷:跨区卷将来自多个磁盘的未分配空间合并到一个逻辑卷中。
  3.带区卷:组合多个(2到32个)磁盘上的未分配空间到一个卷。
  (如果如上所述系统中的两个动态磁盘容量一致时,我们会看到另一个分区方式)
  4.镜像卷:单一卷两份相同的拷贝,每一份在一个硬盘上。即我们常说的RAID 1。
  当我们拥有三个或三个以上的动态磁盘时,我们就可以使用更加复杂的RAID方式——RAID 5,此时在分卷界面中会出现新的分卷形式。
  5.RAID 5卷:相当于带奇偶校验的带区卷,即RAID 5方式。
  对于大部分的个人电脑用户来说,构建RAID 0是最经济实用的阵列形式,因此我们在这里仅就软件RAID 0的构建进行讲解:
  要在Windows 2000/XP中使用软件RAID 0,首先必须将准备纳入阵列的磁盘转换为上文所述的动态磁盘(这里要注意的是,Windows 2000/XP的默认磁盘管理界面中不能转换基本磁盘和动态磁盘,请参考上文中的描述),我们在这里尝试使用分区的条带化,这也正是软件RAID和使用RAID芯片构建磁盘阵列的区别。我们选取了一个29GB的分区进行划分带区卷,在划分带区卷区时,系统会要求一个对应的分区,也就是说这时其他的动态磁盘上必须要有同样29GB或更大的未分配空间,带区卷分配完成后,两个同样大小的分卷将被系统合并,此时我们的格式化等操作也是同时在两个磁盘上进行。

  在构建RAID 0完成后,我们决定测试其硬盘传输率以确定这种软件RAID对性能的提升程度,我们构建软件RAID的平台和前文中的硬件RAID平台并不相同,为了保证CPU的性能以确保我们软件RAID的实现,我们采用了较高端的系统:Athlon XP 1700+,三星 256MB DDR内存,华硕A7V266-E主板,由于软件RAID对硬盘规格的要求比较低,所以硬盘系统我们选用了不同规格的硬盘,希捷酷鱼Ⅳ 60GB和西部数据1200BB 120GB两块硬盘。

  在传输曲线的后半段,我们很清楚地看到软件RAID 0的硬盘传输率达到了60MB/s,完全超越了阵列中任意一个硬盘的传输率,RAID 0的优势开始体现出来。对于追求高性能的用户来说,这应该是他们梦寐以求的。

  这里应该说明的是,在Linux环境下,我们同样可以利用Raidtools工具来实现软件RAID功能。这个工具可以制作软RAID 0、RAID 1、RAID 4、RAID 5等多种磁盘阵列。在使用Raidtools之前,首先要确定目前正在使用的Linux核心是否支持Md。如果你正在使用的核心是2.0.X,并且不是自己编译过,大多数情况下支持软RAID。如果不能确定,则需要自己编译核心。

  虽然RAID功能可以给我们带来更好的速度体验和数据安全性,但是应该指出的是,现在市面上的大部分廉价IDE-RAID解决方案本质上仍然是“半软”的RAID,只是将RAID控制信息集成在RAID芯片当中,因此其CPU占用率比较大,而且性能并不是非常稳定。这也是在高端系统中软件RAID 0的性能有时可以超过“硬件”RAID 0方案的原因。

  对于用户来说,高性能的IDE-RAID存储系统,或者需要比较强劲的CPU运算能力,或者需要比较昂贵的RAID卡,因此,磁盘阵列仍然应该算是比较高端的应用。不过对于初级用户来说,使用简单而廉价的磁盘阵列来提高计算机数据的可用性或提升一下存储速度也是相当不错的选择,当然其性能还远不能和高端系统相比。

  总之,我们看到越来越多的RAID架构出现在市场上,尤其是在中低端市场上,越来越普及的廉价IDE-RAID方案与硬盘价格的不断下降互相照应,似乎也在预示着未来个人数据存储的发展趋势,让我们拭目以待吧

  HighPoint 370 BIOS没有提供类似“Exit Without Save”的功能,修改设置后是不可逆转的.

http://www.ccw.com.cn/server/jssc/htm2005/20050520_14RU3.htm

我比较喜欢的几句话

2005-07-07

机会只有一次,只有错过了就不能回头的东西才值得令人珍惜!

对於一个男人来说,事业有时比不成熟的感情更为重要。

让风带走我的理想、带走那害人的野心、带走这一具没有灵魂的躯壳吧!

挫折只是人生的经历,而不是人生的负担!

都是从网上阅读的时候拾来的,感觉每句话都能给我一点提示一点鼓励。

我希望我的朋友们,在这里看到的这几句话的人们,都会觉得这几句话对自己有用处。

共勉!

Linux下如何实现软件RAID

2005-07-07

数据在现今企业中占有重要的地位,数据存储的安全性有而是人们使用计算机要注意的重要问题之一。通常情况下人们在服务器端采用各种冗余磁盘阵列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的当前状态和同步完成所需要的时间。

#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已经可以使用了。

第四步:编辑阵列的配置文件

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最好不要放在阵列中,因为一旦阵列出现问题系统将无法正常运行。

成功六字诀

2005-07-01

信、望、爱,学、思、恒,就是人生的“成功六字诀”。

信、望、爱,学、思、恒,就是人生的“成功六字诀”。

一、“信”,信心,自信,信念。

二、“望”,希望,理想,志向。

三、“爱”,爱情、同情心、正义感,我觉得爱是一个人安身立命之本。爱的情感,是所有高尚情感的源泉。

四、“学”,学习。善于不善于学习很重要,为此你要把握最重要的东西,而这最重要的东西,就最值得你花时间的东西,你应该不怜惜自己的时间。

五、“思”,思考。“我思故我在”。善不善于思考,一个很重要的标志就是能不能对于一个问题举一反三,能不能由此及彼,由表及里,由浅入深,能不能把握事物之间内在的联系,能不能反思自己的行为,对于一个思者,反思也是一个非常重要的心理活动。

六、“恒”,恒心。 毛泽东在这方面深受影响,在一师读书时,他就写过“贵有恒,何必三更眠五更起;最无益,莫过一日曝十日寒”的著名对联,以此提倡“持之以恒”的学风。

成功并不像我们想象的那么遥远,并不像我们想象的那么困难,但也并不像有些人想象的那么容易。成功之路就在你的脚下延伸,就在你的坚持下铺展。只要你不断地坚持,坚持,坚持到最后,胜利就是你的。无数的事实证明,要一个开始太容易了,每个人都可以在你需要的时间开始一个新的人生,但是,要有一个好的结果太不容易了,因为我们每个人随时都可以中断自己的努力,随时都可以中断自己的追求,也正因为如此,很多人都在成功的边沿放弃了。