在安装linux文件服务器时故撞排除教程

请大家查看时尽量使用树型模式

系统安装过程中的疑难排除
系统配置过程中的疑难排除
突发型故障疑难排除
??
系统安装过程中的疑难排除
??
系统安装中的疑难排除主要是解决Linux系统无法安装、以及在系统安装过程中的出错的排除。主要包括主板芯片的兼容性、对外接设备的驱动的支持等。
??
主板芯片兼容性问题
对主板芯片的兼容性主要是指Linux操作系统能否正确的识别主板上所集成的芯片,并为之安装正确的驱动程序。兼容性可以大致的分层两个层次,一个是完全不支持,就是Linux操作系统根本无法识别该芯片,或者说该主板上的芯片根本没有Linux操作系统下的驱动程序;第二种情况是,操作系统可以识别出该芯片,但是需要额外的内核补丁,或者有驱动,但是驱动只是处于测试阶段,稳定性和性能都得不到保障。
针对主板芯片兼容性的问题,解决办法主要有如下几种:

第一、 选择比较知名的厂商生产的主板,尽量选择Intel系列芯片组。总体而言,Intel在其芯片的驱动开发方面要比VIA、SIS等其他主板芯片组提供商要强得多,一般的,Intel芯片组在Linux下的驱动程序从稳定性和性能方面来讲,都要比其他厂商强很多。

第二、 选择版本比较高的Linux操作系统。高版本的Linux操作系统的安装光盘在光盘引导启动的内核压缩镜像中,附带更多的对新的芯片组的驱动,因此能更方便的支持新的芯片组和其他硬件设备。但是,要注意的是,Linux下的驱动开发进度一般比较慢,较新版本的Linux往往在额外增加系统自身并不附带的驱动的时候,会比较难找到针对该版本的驱动程序。
??
外接设备驱动支持问题
这里的外接设备主要是指网卡,阵列卡或者SCSI卡的问题,将单独讨论。

针对网卡的驱动主要是对网卡核心芯片的支持。要说明的事,并不是所有的网卡都有Linux下的驱动程序。有很多比较差的芯片制造商,在开发芯片的时候,并未希望该芯片在Linux下使用,因此只专门针对Windows系列操作系统做驱动开发,则你将无法在Linux操作系统下使用该设备,除非你愿意自己开发驱动程序。还有一些芯片,由于太旧,而无法使用,典型的如TP-LINK TG-3220所使用的TMI TAMARACK TC9020芯片,厂商已经倒闭,不再有新的驱动支持了。

一般的比较通用的网卡芯片,如realtek 8139/8169、Intel系列的芯片组,以及3COM系列的芯片组等,都能被很好的直接支持,不需要额外安装驱动,因为驱动已经附随着操作系统的发行版本自带了。发行版本自带的驱动程序一般是一个类似 eepro100.o 这样的以.o结束的内核模块。这些自带的驱动位于/lib/modules/内核版本号/kernel/drivers 目录下。当你需要安装一个设备是,请根据设备类型在该目录下查找系统是否已经附带了该设备的驱动,如果没有,那么就需要下载该设备在Linux下的驱动进行安装。

一般的驱动安装过程分三个步骤,一个是配置内核版本,编译源程序,生成内核模块;第二个步骤是insmod插入生成的内核模块,第三个步骤是将内核模块拷贝到系统默认的内核模块存放目录下,并编辑/etc/modules.conf文件,让系统启动时,能自动插入模块。我们以在Redhat 9.0 下安装BCM 5700系列芯片组的千兆网卡为例子,为大家具体描述这一过程。

第一步:从驱动光盘或者从网络上获得驱动程序包。譬如bcm5700-6.0.2.tar.gz,将之通过sftp协议拷贝到Linux主机上(可以先插一块8139网卡)。解开驱动包

tar zxf bcm5700-6.0.2.tar.gz
进入源代码目录
cd src
make
将生成bcm5700.o 文件
??
第二步:插入内核模块
insmod ./bcm5700.o
??
第三步:将内核模块拷贝到/lib/modules/2.4.24/kernel/drivers目录下
cp ./bcm5700.o /lib/modules/2.4.24/kernel/drivers

编辑/etc/modules.conf文件,使得系统可以在启动时插入内核

vi /etc/modules.conf
增加一行
alias eth0 bcm5700
??
重新启动机器,则在启动kudzu服务的时候,会检查到网卡,并可以进行配置。

其他的外接设备的驱动安装过程,可以参考网卡部分的安装来完成。
??
RAID卡和SCSI卡以及SATA驱动的安装
存储类设备的安装有些特殊,因此,我们将之从外接设备驱动安装中单独分离了出来。存储设备的安装总体上来讲分成两类:第一类,系统从IDE硬盘引导,而SCSI设备(RAID卡、SATA设备实际上来讲都是模拟或者说是类似SCSI设备的,我们将这类设备统称为SCSI设备,下同)只是在系统安装完毕后再进行安装。第二类是指引导要直接安装在SCSI设备上,驱动需要在安装系统的时候就安装,否则安装程序将无法找到有效的存储设备来安装系统。
??
系统从IDE引导情况下的SCSI设备驱动安装
即系统从IDE引导,而SCSI设备只是作为一个普通的外接设备来安装驱动程序。这类情况下安装驱动程序可以参考上一个章节中的关于普通外界设备的驱动安装方法。只是要注意的是,如果SCSI设备在没有安装好驱动程序,就已经被连接到系统上,则很容易导致系统崩溃。因为系统识别到SCSI设备后,又无法正确驱动,则很容易造成内核混乱。所以,我们建议,在安装驱动之前,请先拔下SCSI卡,如果是主板集成的SCSI设备,则请先从主板BIOS设置中关闭SCSI设备。在将驱动安装完毕后,关闭计算机,插上SCSI设备,或者从BIOS中启用SCSI设备,再重新启动计算机。

这类情况下的SCSI设备驱动安装请参考普通外接设备的驱动安装部分,我们在这里将不在赘述。
??
系统安装在SCSI设备上的驱动安装
如果系统需要安装在SCSI设备上,譬如安装在SCSI硬盘或者安装在IDE RAID卡上,或者安装在SATA硬盘上,则需要采用比较特殊的方式来安装SCSI设备的驱动程序。当然,比较通用的SCSI设备,是不需要考虑这一步骤的,譬如Adptec 的 aic7xxx系列SCSI接口卡,或者Intel 的 ata_piix 系列的SATA接口芯片组等一般的Linux发行版本都自带了这些驱动,在操作系统安装光盘引导时所解压缩的内核镜像中已经可以识别并支持这些SCSI设备。如果是一些并不是很通用的芯片,则需要手动的安装驱动。我们以VIA 的VT8237/6420系列SATA RAID控制芯片的驱动安装来为大家具体的秒素这一过程。

第一步:获取驱动程序包,譬如从驱动光盘,或者从网络上获得。目前VIA官方网站上为RedHat 系统提供的驱动包为 via_raid_linux_v100_20040412.zip。在Windows上通过Winrar解开这个包,并通过sftp协议将安装包中的Driver目录拷贝到一台已经安装了Redhat9.0的服务器上。

第二步:生成驱动磁盘镜像.img文件。
chmod +x dd.sh
./dd.sh

这样就会在目录driverdisk下生成一个viamraid.img的镜像文件。要注意的是,目前VIA还只发布了对Redhat 9.0的驱动支持,RHAS上是无法安装该驱动的。另外,这个过程只能在一台安装了Redhat 9.0的Linux机器上运行。如果在别的版本的操作系统上运行,则安装程序无法从生成的.img文件中读取驱动信息。如果你已有的Linux服务器并不是Redhat 9.0的版本,则你可以直接使用Driver 目录中Driverdisk子目录下已经提供的viamraid.img文件。

第三步:将生成的img文件写入磁盘。

在软驱中插入一张空白磁盘,关闭写保护功能。
dd if=driverdisk/viamraid.img of=/dev/fd0

如果你根本没有已有的Linux操作系统,则你可以用Windows下的写磁盘镜像软件将Driverdisk子目录下已经提供的viamraid.img文件写入磁盘。

第四步:用Redhat 9.0安装光盘引导,在出现boot:提示的时候,输入linux dd,或者不输入,让系统自己提示插入驱动磁盘。如果是输入linux dd引导安装程序,则系统会提示,Do you have a dirver disk? 选择Yes。然后选择/dev/fd0,系统将会将驱动信息读取到内核。则安装程序将可以正常的找到SATA硬盘,安装可以按照平常的步骤进行。

需要说明的是,VIA目前提供的VT8237系列的芯片驱动,在Linux下性能奇差。这是驱动程序设计造成的,无法通过设置来进行性能提升。因此,我们不建议客户使用这种主板安装Linux服务器。
?
系统配置过程中的疑难排除
??
系统配置过程中的疑难排除主要包括网娱平台所依赖服务的配置以及系统常用的几个配置文件的配置等。
??
/etc/fstab的配置
/etc/fstab文件是文件系统自动挂载的配置文件,Linux操作系统在启动的过程中根据fstab和mtab这两个文件来进行文件系统的自动挂载。在平时的使用过程中,fstab比较常见。

/etc/fstab的文件结构如下所示:
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
LABEL=/home/download /home/download ext3 defaults 1 2
LABEL=/home/menu /home/menu ext3 defaults 1 2
LABEL=/home/mp3 /home/mp3 ext3 defaults 1 2
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda8 swap swap defaults 0 0
/dev/hdc1 /game ext3 defaults 1 2
/dev/hdd1 /game2 ext3 defaults 1 2
??
每一行表示一个挂载点的挂载。格式分别为
设备名 挂载点 文件系统格式 选项 备份 检查

一般需要注意的是设备名和挂载点的对应关系。如果挂载点并不存在,则需要手动建立挂载点。建立挂载点的方式很简单,直接使用目录建立命令

mkdir /test

这样就可以建立一个名为/test的挂载点。
??
另外一个需要注意的问题是,如果fstab中所标名的某一个挂载出现问题,则系统将无法正常启动,一般会提示输入root密码进入文件系统修复模式或者按ctrl+D重新启动。这个时候,一般只需要输入root密码,然后编辑fatab文件,将出现问题的挂载项目前面加一个“#”注释掉就可以了。
??
/etc/modules.conf配置文件
/etc/modules.conf配置文件是系统自动插入内核模块的配置文件。如果某些外围设备的驱动被设计为动态模块类型,并未固定的包含在内核中,则需要手动的使用insmod命令插入内核模块以驱动这些设备。如果需要系统在启动的时候自动的插入动态内核模块,并设置模块的参数,那么,就需要在该文件中进行相应的配置。

/etc/modules.conf文件结构如下
alias eth0 e1000
alias scsi_hostadapter ata_piix
alias usb-controller usb-uhci
alias sound-slot-0 i810_audio
alias usb-controller1 ehci-hcd
??
/etc/modules.conf文件中的每一行表示一个内核模块的插入或者是模块的参数设置,我们在这里只讨论配置内核动态模块自动插入的方法。以第一行为例:alias eth0 表示,这个模块插入内核后,对应的设备别名为eth0,e1000表示插入系统默认的内核模块存放目录下的e1000.o这个内核模块文件。
??
/etc/sysconfig/network-script/目录与/etc/sysconfig/networking目录

/etc/sysconfig/network-script/目录与/etc/sysconfig/networking目录中存放的是系统网络相关的配置文件。主要是网卡的IP地址,子网掩码,MAC地址,网关等。要注意的是ifcfg-ethx这样的文件在三个地方都有,分别是/etc/sysconfig/network-script/目录下;/etc/sysconfig/networking/devices目录下和/etc/sysconfig/networking/profiles/default目录下。一定要保证这所有的ifcfg-ethx文件内容一致,否则将会导致网络无法接通。

Ifcfg-ethx文件分别对应着ethx。例如第一块网卡eth0的配置文件为ifcfg-eth0。如果需要给一块网卡指定多个IP地址,那么只需要在该目录下建立一个ifcfg-eth0:1这样的文件就可以了。文件里面的内容,参照ifcfg-eth0修改就可以了。

Ifcfg-eth0的具体结构如下
# 3Com Corporation|3c905C-TX/TX-M [Tornado]
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
HWADDR=00:06:5B:BE:0C:AD
??
要特别提醒的是,如果计算机在安装的过程中有两块网卡,而在安装完毕后拔出了一块网卡,有的时候,系统会无法检测到系统中的硬件变化,因此,需要手动的进行配置文件的修改,这个时候,就需要手动的将三个目录下的ifcfg-ethx文件全部删除掉。否则,将会出现很混乱的情况。
??
/etc/samba/smb.conf配置文件
/etc/samba/smb.conf是samba服务的主配置文件,也是我们平时打交道比较多的文件。虽然平时的安装工作可以完全通过安装程序来完成所有的配置,但是,我们还是希望大家能熟悉这个配置文件的配置方法,以应对特殊的情况。

Smb.conf的内容格式如下:
unix charset = cp936
dos charset = cp936
display charset = cp936
netbios name = ECOFE2
server string = Samba Server %v
encrypt passwords = Yes
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = cups
dns proxy = No
guest account = admin
valid users = admin,user,super,oface,cface,update
admin users = admin,super,update
write list = admin,super,update
printer admin = @adm
printing = cups
[menu$]
path = /home/menu
write list = admin,user,update
read only = No
browseable = No
??
[mp3$]
path = /home/mp3
browseable = No
??
[game$]
path = /game
browseable = No??
[game2$]
path = /game2
browseable = No

由于这个文件比较重要,那么我将比较详细的解释一下各个设置选项。

unix charset = cp936
dos charset = cp936
display charset = cp936

这三行,是为了保证Samba 3.0下能正常的显示中文字符。如果去掉这三行,那么中文将会显示为乱码。

netbios name = ECOFE2

这一设置指定服务器的netbios机器名。请不要更改这一设置,否则其他的机器将无法正常的访问到服务器。

valid users = admin,user,super,oface,cface,update
admin users = admin,super,update
write list = admin,super,update

这三行非常重要,只有用户名在valid users中指定,这些用户才能访问服务器,否则,将会被拒绝访问。admin users 指定了哪些用户具备管理权限,write list指定哪些用户可以具备写权限。这两行一般来讲是相同的。

[game$]
path = /game
browseable = No

这一段配置是指定了一个共享,需要指定一个共享,则请用[]号把共享名扩起来,如果用$符号结束,则是隐含共享。然后用path=/game则是指定共享哪个挂载点或者说是哪个目录。配置中的其他部分都是可有可无的,写出来只是为了处于严谨的考虑。