对计算机用户来说,硬盘故障简直就是一场灾难。由于硬盘在外部存储设备中无可比拟的速度以及存取的便利性,在今天,硬盘已成为最重要的数据载体和系统程序载体。硬盘假如出现故障,则意味着用户的数据安全受到了严重威胁,这是大多数用户所无法容忍而又必须面对的残酷现实。本文预备就PC硬盘故障的一般处理方法作一个简单的探讨,希望能对出现硬盘故障的用户有所裨益。
一、相关知识
在讨论具体的处理方法之前,我们有必要先来了解一下硬盘及其相关系统的原理。
1.硬盘驱动器
这就是我们常说的硬盘。它是一种磁介质的外部存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个磁盘片上。这些盘片一般是在以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上。在每一面上都相应地有一个读写磁头(head),所以不同磁头的所有相同位置的磁道就构成了所谓的柱面(cylinder)。传统的硬盘读写都是以柱面、磁头、扇区为寻址方式的(CHS寻址)。硬盘在上电后保持高速旋转(可达7200Y/min),位于磁头臂上的磁头悬浮在磁盘表面,可以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。所以在上电期间假如硬盘受到剧烈振荡,磁盘表面就轻易被划伤,磁头也轻易损坏。硬盘驱动器根据接口的不同可以分为两大类:IDE硬盘(包括IDE、EIDE直至近来的UDMA33都属于这种类型)和SCSI硬盘,必须和相应的控制器一起使用。 硬盘的第一个扇区(0道0头1扇区)被保留为主引导扇区。在主引导区内主要有两项内容:主引导记录和硬盘分区表。主引导记录是一段程序代码,其作用主要是对硬盘上安装的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息(见表1)。计算机启动时将读取该扇区的数据,并对其合法性进行判定(扇区最后两个字节是否为0x55AA或0xAA55),如合法则跳转执行该扇区的第一条指令。所以硬盘的主引导区经常成为病毒攻击的对象,从而被篡改甚至被破坏。
注:可引导标志:0x80为可引导分区类型标志;0表示未知;1为FAT12;4为FAT16;5为扩展分区等等。
2.硬盘控制器
硬盘控制器是硬盘及其他具有相同接口规范的外部设备(如CDROM驱动器)的治理者,由它来完成驱动器与内存之间的命令及数据传输。目前应用较广的硬盘控制器按其接口的不同分为IDE、SCSI两类,经常整合在主板上,通过数据线与硬盘驱动器相连。毫无疑问,硬盘控制器发生故障或连接不正确将会导致硬盘无法正常工作。
3.CMOS中的硬盘信息
在计算机的CMOS中也存储了硬盘的信息,主要有硬盘类型、容量、柱面数、磁头数、每道扇区数、寻址方式等内容,对硬盘参数加以说明,以便计算机正确访问硬盘。当CMOS因故掉电或发生错误时(启动时一般会提示“CMOS checksum error”或类似信息),硬盘设置可能会丢失或错误,硬盘访问也就无法正确进行。这种情况我们就必须重新设置硬盘参数,假如事先已记下硬盘参数或者有某些防病毒软件事先备份的CMOS信息,只需手工恢复即可;否则也可使用BIOS设置(setup)中的“自动检测硬盘类型”(HD type auto detection)的功能,一般也能得到正确的结果。
二、典型故障及诊断处理
硬盘故障大体上可以分为软故障和硬故障两种情况,下面我们就以无法从硬盘启动几种典型的故障对处理的一般过程加以说明。
1.故障类型的初步判定
无法从硬盘启动的情况主要有如下几种原因:硬盘操作系统被损坏、硬盘主引导区被破坏、CMOS硬盘参数不正确、硬盘控制器与硬盘驱动器未能正常连接、硬盘驱动器或硬盘控制器硬件故障、主板故障。
首先,我们可以根据计算机启动信息对故障类型作一初步判定。
案例1:开机不能完成正常自检(POST),那么可以判定为主板故障或电源故障,对此本文不作讨论。
案例2:开机自检过程中,屏幕提示“Hard disk drive failure”或类似信息,则可以判定为硬盘驱动器或硬盘控制器(提示“Hard drive controller failure”)硬件故障。
案例3:开机自检过程中,屏幕提示“Hard disk not present”或类似信息,则可能是CMOS硬盘参数设置错误或硬盘控制器与硬盘驱动器连接不正确。
案例4:开机自检过程中,屏幕提示“Missing operating system”、“Non OS”、“Non system disk or disk error,replace disk and press a key to reboot”等类似信息,则可能是硬盘主引导区分区表被破坏、操作系统未正确安装或者CMOS硬盘参数设置错误。
2.软故障的一般处理方法
在初步判定故障类型之后,对于软故障,我们可以采取如下步骤处理:
第一步,在存在CMOS发生错误的可能的情况下(如案例3和案例4),确保CMOS中硬盘参数正确。在对硬盘类型不确切情况下,可以让BIOS自动检测,也可参考同种机型的设置。
第二步,若仍不能从硬盘启动,可以用软盘启动(注重BIOS设置中的引导顺序设定)后,试着能否访问硬盘。假如能够访问硬盘(比如说能列出C盘目录),说明很可能只是操作系统被破坏,其他数据应无太大的问题,否则硬盘的主引导区或可引导分区的引导区被破坏。我们可以使用DEBUG或Norton Disk Editor(菜单Object/Partition table,如图1所示即为正常的分区表)等工具软件查看硬盘的主引导区是否正常:
A:\>DEBUG
-a ;汇编指令
XXXX:0100 mov ax,201 ;读取一个扇区
XXXX:0103 mov bx,600 ;读至当前段0600处
XXXX:0106 mov cx,1 ;柱面号=1
XXXX:0109 mov dx,80 ;磁头号=0,驱动器号=80
XXXX:010C int 13 ;磁盘读写中断
XXXX:010E int 3 ;断点中断
XXXX:010F
-g ;执行上述指令
-d 600 ;显示主引导区内容
如无法访问主引导区,则显然是硬故障。否则查看引导程序和分区表是否正常(可以反汇编查看指令或与正常的主引导扇区对比),假如发现引导程序异常则可使用杀毒软件清查病毒或恢复主引导区,也可用DEBUG手工恢复主引导区:
(续前,假设已从正常的机器上获得主引导区存为文件mboot.dat)
-n mboot.dat ;读文件mboot.dat
-l 800 ;读至当前段0800处
-m 7be l 40 9be;将原分区表复制到正常的主引导区
-a 100 ;修改第一条指令
XXXX:0100 mov ax,301 ;将0800处数据写回主引导扇
XXXX:0103 mov bx,800 ;
XXXX:0106
-r ip ;修改当前指令指针
IP:010E 0100 ;当前指令指针指向0100
-g ;执行
第三步,在恢复主引导区之后,假如仍然不能正常启动操作系统,但已能够访问C盘,那么我们可以备份重要信息、重装操作系统即可。假如C盘仍然无法访问,则可以断定C盘的引导区(包含磁盘参数表等重要信息)或文件系统(FAT、FDT)已经损坏。这种情况手工修复较为复杂,而且轻易产生误操作,利用Norton Disk Doctor或微软的ScanDisk这样的磁盘修复软件是比较合适的。这里我们以DOS版Norton Utility的NDD为例(注重:低版本的NDD在对磁盘进行诊断时可能不能正确诊断Windows95以上的文件系统)予以说明: 在NDD的菜单中选择Options/General确认NDD将进行包括主引导区和CMOS在内的全面检查(如图3所示),然后在主菜单中选择Diagnose Disk对硬盘进行诊断,NDD在发现错误时将会自动报告(如图4所示),并提示错误描述(Description)和推荐意见(Recommendation),可以根据情况选择修复与否。修复时注重保存UNDO磁盘,以便恢复操作之用。在修复过程中,尤其是在表面测试(Surface Test)过程中假如提示读写错误,则说明硬盘存在物理损坏,数据可能会丢失。 在诊断、修复结束后重新启动计算机,若能对C盘进行访问则大功告成,可以通过备份数据、重装操作系统简单地恢复硬盘功能。否则只能进行恢复操作(UNDO),尝试手工或通过其他方法恢复。
3.硬故障的一般处理方法
对于硬故障中的“硬盘丢失”的情况,首先要检查硬盘驱动器与硬盘控制器的连接是否正常;硬盘驱动器电源线连接是否正常;假如存在多个设备则需检查硬盘之间或硬盘与CDROM等等设备之间是否存在冲突;并且检查CMOS中硬盘信息是否正确无误。确认一切正常后若硬盘“出现”,我们就可以按照上述软故障的处理步骤进行诊断处理。假如仍然找不到硬盘,那我们可以采用替换法来进行故障定位,也就是将硬盘驱动器换至另外的运行正常的计算机上来测试其运行能否正常,若能正常运作则说明故障与其无关,数据安然无恙,否则说明硬盘硬件损坏,用户自身是无法修复的。
对于硬盘磁道出现物理损伤的情况(表现为读写硬盘时提示“Sector not found”或“General error in reading drive C”等类似错误信息),首先我们可以利用Norton Disk Doctor或Scandisk等工具软件对硬盘进行表面扫描测试(如图6所示)。当只有少数磁道出现坏扇区时,我们在用NDD对硬盘进行修复后仍可以照常使用;当出现大面积的坏区时,或者几乎每道都有坏区时,就有必要考虑舍弃一部分坏扇集中的区域:
案例5:一笔记本电脑在运行中摔落地面,无法正常启动。软盘启动后访问C盘经常出现错误信息“Sector not found”,在抢救了一些数据之后,无法对其进行格式化操作。用NDD对其进行诊断,发现频繁出现坏扇,而且其FAT和FDT中也有相当坏扇存在