数据结构篇
硬盘是计算机中极为重要的存储设备,计算机工作所用到的全部文件系统和数据资料的绝大多数都存储在硬盘中。硬盘是产生计算机软故障最主要的地方,常见的硬盘软故障有:硬盘重要参数及文件丢失,电脑不能起动;碎片过多,电脑运行速度变慢;硬盘分区后丢失容量等。对付硬盘软故障,只要我们肯动脑并利用一些硬盘维护工具,发挥一不怕苦、二不怕(硬盘)死的革命精神,外加胆大心细,当然还要掌握硬盘基本常识,这样就可以轻松搞定(说的容易、做起来可不简单 :( )。因此,我收集了大量的资料整理汇编了“硬盘软故障完全修复手册”,希望能在与大家一起学习的过程中掌握硬盘常见故障的排除方法,做到“自已动手、丰衣足食”,凡事不求人的目的。
大家知道,一个硬盘要能存放文件,必须经过硬盘分区,格式化等操作步骤,因为经过这些步骤之后,在硬盘中就建立起了主分区,引导分区,确定了FAT16或FAT32文件表。主分区的作用是保存硬盘中各逻辑分区在盘片上起始位置和终止位置及分区的容量大小。引导分区的作用是在固定的位置存放有操作系统文件,在电脑送电或复位时,由BIOS程序将处于固定位置的系统文件装入内存,再将电脑控制权交给系统文件人而完成引导过程。扩展分区作为一个主分区占用了主分区表的一个表项。在扩展分区起始位置所指示的扇区(即该分区的第一个扇区)中,包含有第一个逻辑分区表,同样从1BEH字节开始,每个分区表项占用16个字节。逻辑分区表一般包含两个分区表项,一个指向某逻辑分区,另一个则指向下一个扩展分区。下一个扩展分区的首扇区又包含了一个逻辑分区表,
这样以此类推,扩展分区中就可以包含多个逻辑分区。下面我们就来学习一下硬盘数据的基本结构。
★ 硬盘的数据结构 ★
① MBR(Main Boot Record 主引导记录区)
MBR位于整个硬盘的0磁道0柱面1扇区,包括硬盘引导程序和分区表。在总共512字节的硬盘主引导扇区中,MBR只占用了其中的446个字节,其最后两个字节“55 AA”是分区的结束标志。另外的64个字节交给了DPT(Disk Partition Table 硬盘分区表),从1BEH字节开始,共占用64个字节,包含四个分区表项。每个分区表项的长度为16个字节,它包含一个分区的引导标志、系统标志、起始和结尾的柱面号、扇区号、磁头号以及本分区前面的扇区数和本分区所占用的扇区数。其中“引导标志”表明此分区是否可引导,即是否活动分区。当引导标志为“80”时,此分区为活动分区;“系统标志”决定了该分区的类型,如“06”为FAT16分区,“0B”为FAT32分区,“07”为NTFS分区,“63”为UNIX分区,等;起始和结尾的柱面号、扇区号、磁头号指明了该分区的起始和终止位置。
我们假设一个硬盘分区表从1BEH字节开始的16个字节为 80 01 01 00 06 0D 68 6D 28 00 00 00 78 20 03 00
硬盘分区表项的16个字节分配如下:
第1字节:是一个分区的激活标志,表示系统可引导。如是0则表示非活动分区。
第2字节:该分区起始磁头(HEAD)号
第3字节:该分区起始扇区(Sector)号
第4字节:该分区起始的柱面(Cylinder)号
第5字节:该分区系统类型标志
第6—8字节:该分区终止磁头(HEAD)号、分区结束的扇区号、分区结束的柱面号
第9-12字节:该分区首扇区的相对扇区号
第13-16字节:该分区占用的扇区总数
以上参数我们可以用NU 8.0中DISKEDIT工具软件可轻松获取,其功能非常强大,但应用不当会有很大错误,请各位注意使用方法。操作步骤如下:
以一台硬盘为270 MB,分为C盘(100 MB)和D盘(170 MB)的机子(老掉牙了 ^_^)为例,在纯DOS下启动DISKEDIT → 在对象菜单(Object)上选中驱动器(Drive)和物理磁盘选项后确定 → 在对象菜单(Object)上选中分区表(Partition Table) → 在显示菜单(View)中选择十六进制(Hex)
以下数据为主分区信息:
000001B0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 80 01
000001C0: 01 00 06 0D 68 6D 28 00 - 00 00 78 20 03 00 00 00
000001D0: 41 6E 05 0D E8 AE A0 20 - 03 00 30 EE 04 00 00 00
000001E0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
000001F0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 55 AA
② DBR(Dos Boot Record 操作系统引导记录区)
它通常位于硬盘的0磁道1柱面1扇区,是操作系统可直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msodos.sys)。如果确定存在,就把它们读入内存,并把控制权交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元的大小等重要参数。DBR是由高级格式化程序(即Format等程序)所产生的。
③ FAT(File Allocation Table 文件分配表)
FAT是DOS、Windows 9X系统的文件寻址格式,位于DBR之后。
在解释文件分配表的概念的时候,我们有必要谈谈簇(Cluster)的概念。文件占用磁盘空间,基本单位不是字节而是簇。一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……
同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。
为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以为了安全起见,FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT的格式有多种,最为常见的是FAT16和FAT32。
④ DIR (Directory 根目录区)
DIR位于第二个FAT表之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。
⑤ DATA(数据区)
数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘的大部分空间。当将数据复制到硬盘时,数据就存放在DATA区。
维护工具箱
★ 修复硬盘主引导记录 ★
由于病毒的破坏或操作上的失误,使硬盘主引导记录和分区表损坏,硬盘将 无法启动。
① KV3000
作为一款著名的杀毒软件,KV3000同样具有非常强大的主引导记录和分区修复的功能。我们可以先用软盘启动后,执行KV3000,按下F6键,就可查看已经不能引导的硬盘隐含扇区,即查看硬盘0面0柱1扇区主引导信息是否正常,如果在 硬盘的0面0柱1扇区,没有找到关键代码,即硬盘分区表关键代码“80”“55 AA ”,那么硬盘本身将不能引导,即使软盘引导后也不能进入硬盘。这时,可按动翻页键PgDn或PgUp键,在硬盘的隐含扇区内查找,如有,会在表中出现闪动的红色“80”和“55AA”,并响一声来提示你,下行会出现一行提示,“F9 = Save To Side 0 Cylinder 0 Sector 1 !!!”。这时,按一下“F9”键,就可将刚找 到的、即在表中显示出的原硬盘主引信息, 覆盖到硬盘0面0柱1扇区中,然后, 机器会重新引导硬盘,恢复硬盘的起动性能。
② FDISK
用FDISK/MBR覆盖主引导记录的代码区,但不重建主分区表。适用于主引导记录被引导区型病毒破坏或主引导记录代码丢失,但主分区表并未损坏的情况下 。注意:FDISK/MBR并不适用于清除所有引导型病毒,因此要慎用。
③ FIXMBR
FIXMBR是专门用于重新构造主引导扇区的小工具,使用方法也简单。直接运 行FIXMBR的情况下它将检查MBR结构,如果发现系统不正常则会出现是否进行修复的提示。如果回答“YES”,它将搜索分区。当搜索到相应的分区以后,系统 会提示是否修改MBR,回答“YES”则开始自动修复,如果搜索的结果不对,可使 用/Z开关符,重新启动系统将恢复到原来的状态。如果想详细了解FIXMBR的使用方法,可以用/H开关来查看。
★ 修复硬盘分区表 ★
① KV3000
在KV3000的主菜单上,按下F10键,就可对系统的有关参数和硬盘分区表快 速测试, 如果硬盘分区表不正常,KV3000会先将坏分区表保存到软盘上以防不测,再自动重建硬盘分区表,使硬盘起死回生。
但如果硬盘只有一个分区,而且文件分配表(FAT表)、文件目录表(ROOT表) 严重损坏,数据已经都没有了。那么,用这个功能即使恢复了C盘分区表,也不 能使C盘引导,数据也不能恢复。这时需要配合其它的硬盘修复工具来恢复数据。如果硬盘还有D、E、...等几个分区,一般情况下,KV3000能找回后面没有被 破坏掉的分区,重建一个新的硬盘分区表,然后,再用DOS系统软盘引导机器后,就可进入硬盘后面几个分区,将数据备出后,再将硬盘重新分区、格式化。
KV3000修复硬盘的详细使用方法,大家可以查看KV3000杀毒软件的使用说明文件,也可以到江民网站去查看。
② FDISK
用FDISK还可以新建立分区、重建主分区表,但这种方法不覆盖主引导记录的代码区。如果要保证硬盘内数不受破坏,分区时必需与原来的分区相一致,否 则数据不保。具体的使用方法我就不哆嗦了,建议大家使用FDISK的汉化版,很容易上手。
③ DiskMan
DiskMan过人之处就在于它的硬盘分区表恢复功能,并采用图形界面,以图 表方式表示分区表的详细结构。使用方法详见《宝刀不老的小工具——DiskMan 》
★ 挽救硬盘FAT(文件分配表)和DIR(根目录表) ★
如果FAT表损坏,就可能丢失所有文件,即便对DOS很精通的人,要修复FAT表 损坏的磁盘文件也不是件轻松的事情。
① NDD(Norton Utilities 8.0)
启动NU工具包中的磁盘修复程序NDD,在其菜单中选择Options/General确认 NDD将进行包括主引导区和CMOS在内的全面检查,然后在主菜单中选择Diagnose Disk对硬盘进行诊断,NDD在发现错误时将会自动报告,并提示错误描述( Description)和推荐意见(Recommendation),可以根据情况选择修复与否。修复时注意保存UNDO磁盘,以便恢复操作之用。在修复过程中,尤其是在表面测 试(Surface Test)过程中如果提示读写错误,则说明硬盘存在物理损坏,数据 可能会丢失。
在诊断、修复结束后重新启动计算机,若能对C盘进行访问则大功告成,可以通过备份数据、重装操作系统简单地恢复硬盘功能。否则只能进行恢复操作( UNDO),尝试手工或通过其他方法恢复。但NDD(Norton Utilities 8.0)只能在DOS下运行,且不支持FAT32格式。
② SCANDISK
微软操作系统自带的类似NDD的硬盘检测工具,大家对它应该都不会陌生,因为我们在WIN 9X非法关机后重启时它就会自动运行扫描硬盘,用法有点类似 NDD。
③ CHKDSK
同样也是微软操作系统自带的DOS下专门用于检查硬盘的工具,CHKDSK/F命 令格式专门用来捡回硬盘的丢失簇并释放丢失的硬盘空间,有时我们可以在它运 行以后生成的*.CHK文件里找到一些重要的数据。
硬盘的FAT表与根目录随着用户写入和删除文件而不断变化,如果能经常备份FAT表和根目录,当FAT表损坏时用回写FAT表、根目录的方法,可以使硬盘恢 复到上一次保存的状态。当硬盘的FAT表或根目录损坏,需要将保存的FAT表、根 目录数据回写时,必须保证FAT表和根目录的起始逻辑扇区号和长度(扇区个数)正确。
★ 恢复误删除的分区 ★
① FDISK & FORMAT
如果在误删除分区后没有执行过其他分区操作,按照下面的方法一般都能够 恢复原来的数据:执行FIDSK分区程序,重建删除的分区,但是注意要保持分区 与原来分区在大小、位置上一致;重新启动系统到MS—DOS模式,执行“Format X:/u/q”(X为误删的扩展分区盘符)。这时系统首先会警告说:“这是一个大 硬盘,如果格式化,数据将全部丢失”,这时选择“YES”;而后系统会告诉你 该分区无法进行快速格式化并问你是否进行“完整格式化”,回答“NO”。该步骤的关键是加入参数/q(快速格式化),这样进行一次“假格式化”后,如果没 有什么意外的话,应该可以访问该分区的数据了。
另外,该方法恢复的分区有可能在再次重启系统后无法访问,虽然仍可以按 上面的方法恢复数据,但我们建议恢复分区后备份该分区所有数据,而后执行完整的格式化过程。
★ 硬盘零磁道损坏的抢救 ★
① DE (PCTOOLS 9.0)
如果运行ScanDisk扫描C盘在第一簇出现一个红色的“B”,即说明C盘零磁道损坏!在DOS下运行DE,先进入Options菜单,选项Configuration,按空格去 掉Read Only(只读模式)前面的“√”号(按Tab键切换),保存退出。接着选主菜单Select中的Drive;进去后在Drive type项选Physical,按空格选定,再 按Tab键切换到Drive项,选中hard disk,然后选OK回车。之后回到主菜单,打 开Select菜单,这时会出现Partition Table,选中并进入,之后就可以看见硬 盘的分区表信息。例如:该硬盘有两个分区,那么在硬盘的分区表信息中我们可以看到1分区就是C盘,该分区是从硬盘的0柱面开始的,那么将1分区的Beginnig Cylinder的0改成1就可以了。保存后退出。重新启动进入BIOS,运行自动侦测硬 盘可以看到CYLS的个位数减少了一位(例如:782→781),保存退出,重新分区 格式化,大功告成。
但DE不支持FAT32格式且只在DOS下运行,而且PCTOOLS 9.0现在已经不太好 找了,想当年它与Norton Utilities 8.0在工具软件之中是两朵奇葩……
② PQMAGICT
大名鼎鼎的分区魔术师(Partition Magician)可能是大家最常用的硬盘分 区工具。PQMAGICT是它的DOS版的工具,用它来修复损坏的硬盘零磁道可谓易如 反掌。
假设一块硬盘有两个分区(C、D),用ScanDisk检查D盘时显示D盘零磁道损 坏,因此不能用FORMAT不能进行格式化,如果用FDISK重新调整逻辑D盘的大小, 使D盘的逻辑0磁道向前或向后移动,跨越这个坏磁道,但这样一来,就会破坏C 盘上的所有数据。因此这时我们必须借助PQMAGICT的威力。首先在DOS下启动 PQMAGICT(必须先把PQ COPY到C盘),选择查看D盘,此时屏幕会显示D盘的分区和容量信息,然后选择Option菜单中的Reszie Selected Partition,用鼠标拖 动左边的容量标尺,让D区减少一点,或者直接手动输入分配D区的容量大小,目 的是空出坏的区域,确定后PQMAGICT便开始对D区进行转换,完成以后退出 PQMAGICT。这样对C盘上的文件秋毫无犯,且D盘又重见天日了。
② SPecialFDisk
SPecialFDisk在建立主分区时可由使用者自定启始柱面电脑,故可跳过损坏的柱 面区域。此招是SPecialFDisk的一个必杀技,使用方法请详见《宝刀不老的小工 具——SPecialFDisk》
★ 抢救被“逻辑锁”锁定的硬盘 ★
① DM
中了“逻辑锁”的硬盘不能用软盘、光驱、双硬盘正常启动,但我们可以利 用软件DM为硬盘解锁。因为DM是不依赖于主板BIOS识别硬盘的硬盘工具,就算在主板BIOS中将硬盘设为“NONE”,DM也可识别硬盘并进行分区和格式化等操作。 首先你要把DM拷到一张系统盘上,接上被锁硬盘后开机,按DEL键进入BIOS设置 ,将IDE硬盘设为“NONE”(这是关键所在!)。保存设置后退出,系统即可“ 带锁”启动。启动后运行DM,你会发现DM可以识别出硬盘。选中该硬盘进行分区 格式化就可以了。但是,这种方法的弱点是硬盘上的数据将全部丢失。
硬盘软故障的产生原因比较复杂,病毒、误操作,甚至一次意外掉电都可能 使硬盘崩溃。因此平时一定要养成备份硬盘重要数据的习惯,在关键时刻才用得上。
分析排除篇
硬盘故障大致可分为硬故障和软故障两大类。 硬故障即PCBA板损坏、盘片划伤、磁头音圈电机损坏等。由于硬故障维修要 求的基本知识及维修条件较高,需要由专业技术人员才能解决,所以在本文中不作讨论。
软故障即硬盘数据结构由于某种原因,比如说病毒导致硬盘数据结构混乱甚 至不可被识别而形成的故障。一般来说,主板BIOS硬盘自动检测(IDE HDD AUTO DETECTION)功能能够检测到硬盘参数,均为软故障。
一般情况下,硬盘在发生故障时系统会在屏幕上显示一些提示信息,所以我 们可以按照屏幕显示的提示信息找到故障原因,有针对性地实施解决方案。
★ 常见的硬盘启动出错信息及分析处理 ★
① Non-System disk or disk error,replace disk and press 电脑 a key to reboot (非系统盘或盘出错)
出现这种信息的原因一是CMOS参数丢失或硬盘类型设置错误造成的。只要进入CMOS重新设置硬盘的正确参数即可。二是系统引导程序未装或被破坏。重新传 递引导文件并安装系统程序。
② Invalid Partition Table(无效分区表)
造成该故障的原因一般是硬盘主引导记录中的分表有错误,当指定了多个自 举分区(只能有一个自举分区)或病毒占用了分区表时,将有上述提示。
主引导记录(MBR)中包括引导程序、分区表和结束标志“55 AA”三个部分 ,共占一个扇区。主引导程序中含有检查硬盘分区表的程序代码和出错信息、出 错处理等内容。当硬盘启动时,主引导程序将检查分区表中的自举标志。若某个分区为可自举分区,则有分区标志“80”,否则为“00”,系统规定只能有一个分区为自举分区,若分区表中含有多个自举标志时,主引导程序会给“Invalid Partition Table”的错误提示。最简单的解决方法是用硬盘维护工具来修复,例如:用NU 8.0 NDD修复,它将检查分区表中的错误,若发现错误,将会询问是 否愿意修改,你只要不断地回答“YES”即可修正错误,或者用备份过的分区表 覆盖它也行。如果是由于病毒感染了分区表,即使是高级格式化也解决不了问题 ,可先用杀毒软件杀毒,再用硬盘维护工具进行修复。
如果用上述方法也不能解决的话,还可利用FDISK重新分区,但分区大小必须和原来的分区一样,这一点尤为重要,分区后不要进行高级格式化,然后用 NDD进行修复。这样既保证硬盘修复之后能启动,而且硬盘上的数据也不会丢失。其实用FDISK分区,相当于用正确的分区表覆盖掉原来的分区表。尤其当用软 盘启动后不认硬盘时,这招特灵。
③ Error Loading Operating System(装入DOS引导记录错误)
Missing Operating System(DOS引导记录损坏)
造成该故障的原因一般是DOS引导记录出现错电脑误。DOS引导记录位于逻辑0扇 区,是由高级格式化命令FORMAT生成的。主引导程序在检查分区表正确之后,根 据分区表中指出的DOS分区的起始地址,读DOS引导记录,若连续五次都失败,则 给出“Error Loading Operating System”的错误提示;若能正确读出DOS引导 记录,主引导程序则会将DOS引导记录送入内存0:7c00h处,然后检查DOS引导记 录的最后两个字节是否为“55 AA”,若不是这两个字节,则给出“Missing Operating System”的提示。一般情况下可以用硬盘修复工具(如NDD)修复, 若不成功只好用FORMAT C:/S命令重写DOS引导记录。
④ No ROM Basic,System Halted(不能进入ROM Basic,系统停止响应)
造成该故障的原因一般是硬盘主引导区损坏或被病毒感染,或是分区表中无 自举标志,或是结束标志“55 AA”被改写。执行FDISK/MBR可以生成正确的引导 程序和结束标志覆盖硬盘上的主引导程序。但FDISK/MBR不能对付所有由引导区 病毒感染而引起的硬盘分区表损坏的故障,详见《引导型病毒的原理与 FDISK/MBR的正确使用》,应该谨慎使用。对于分区表中无自举标志的故障,可 用NDD迅速恢复。
⑤ HDD controller failure Press F1 to Resume(硬盘控制器失效,按F1 键重启)
出现上述信息应该属于硬件故障,应该重点检查硬盘有关的电源线、数据线 的接口有无松动、接触不良、信号线接反等,其次还要检查硬盘的跳线是否设置错误。
⑥ FDD contreller failure HDD contrller failure Press any key to Resume(软、硬盘控制器失效,按任意键重新启动)
也属于硬件故障,通常是连接软、硬盘的I/O部分接触不良或有损坏,这个比较麻烦,轻的还可修理,严重的搞不好就得换配件了。
另外,当运行了“HAPPY NEW YEAR 1999”硬盘“逻辑锁”程序以后会在DOS 窗口出现“YOUR COMPUTER HAS BEEN LOCKED DOWN BY XXXXXX,PLEASE RESTART YOUR SYSTEM”的信息,系统在重新启动自检完后就会停止。著名的“KV300逻辑 炸弹”也属于此类。
因为计算机在引导DOS系统时将会搜索所有逻辑盘的顺序,当DOS被引导时, 首先要去找主引导扇区的分区表信息,就是位于硬盘0面0头1扇区的0BEH地址开始的地方,如果分区信息开始的地方为80H,这表示是主引导分区,其它的为扩 展分区。主引导分区被定义为逻辑C盘,然后查找扩展分区的逻辑盘,被定义为D 盘,以此类推找到E、F、G盘……“逻辑锁”就是在此下手,修改了正常的主引导分区记录,将扩展分区的第一个逻辑盘指向自已,DOS在启动时查找到第一个 逻辑盘后,搜索下一个逻辑盘时总是找到自已,这样一来就形成死循环。这就是硬盘中了“逻辑锁”后用软驱、光驱、双硬盘都不能正常启动的原因。用相应的 解锁工具才能解开硬盘“逻辑锁”,如果用DM软件虽然可以解开,但解开之后的硬盘数据将不复存在。
对于一般用户,当硬盘发生软故障时往往不知所措,但又想让硬盘在短时间 内恢复工作。如果问题不太严重的话,我们可以按照以下的逐一排除法来解决。
★ 硬盘软故障排除的一般步骤 ★
① 检查主板BIOS中硬盘工作模式,看是否正确设置硬盘。
② 用相应操作系统的启动盘启动计算机。
③ 检查硬盘分区结束标志(最后两个字节)是否为“55 AA”;活动分区引 导标志是否为“80”。我们可以利用一些工具来查看,例如:KV3000,可用其F6 功能查看,用F10功能自动修复。或用Fdisk/MBR重建分区表。
④ 用杀毒软件查、杀病毒。
⑤ 如果硬盘无法启动,可用系统盘传送系统文件(SYS C:回车)。
⑥ 运行Scandisk命令或NU 8.0 NDD以检查并修复FAT表或DIR区的错误。
⑦ 如果软件运行出错,可重新安装操作系统及应用程序。
⑧ 如果软件运行依旧出,可对硬盘重新分区、高级格式化以后重装系统。 必要时可对硬盘进行低级格式化。
电脑