前言
硬盘在整个微机系统中占有举足轻重的地位,它是数据文件存储的载体。而存储在硬盘上的数据则更重要,硬盘数据的损坏轻者使文件丢失,重者造成系统瘫痪,无法工作。硬盘数据修复是每个微机用户经常遇到的问题,本文(上、中、下)在阐述有关概念的基础上详细介绍了硬盘的主引导记录、DOS引导记录、文件分配表和文件目录表等方面故障的原因及修复方法,讲述了怎样恢复丢失的数据文件,同时也简单介绍了硬盘逻辑锁的原理及解除方法。这些知识对于大家来说可能稍微深了点,文字也显得很枯燥,但是对于大家提高硬盘数据维护能力、有效排除硬盘软故障是非常有帮助的,希望大家细细咀嚼,不懂的地方多翻阅资料,融会贯通,你一定会有不少收获。
一、DOS是怎样管理硬盘数据的
硬盘数据由五个部分组成。第一部分是保留区,通常称之为主引导记录,在硬盘的0道0面1扇区;第二部分是DOS引导区,通常称之为DOS引导记录(boot record);第三部分是文件分配表(FAT),用于指出磁盘空间的分配情况;第四部分是文件目录表(FDT),用于存储磁盘上文件的大小、位置、日期和时间等数据。最后一部分是用户数据区,实际存储着用户的文件。(软盘没有主引导记录,只有其余四部分)
DOS不仅确定将数据存放于硬盘的物理位置,而且还确定它们的逻辑存放位置。DOS把存储空间组织成物理位置并提供一种机制对存放于这些位置的数据进行索引,同时,可建立按层次安排的索引,把数据分到逻辑位置,数据存储形式有物理数据存储和逻辑数据存储之分,其概念简述如下:
1. 物理数据存储
格式化(Format)过程中,DOS首先把磁盘分成物理位置,然后建立文件管理系统。DOS首先标记硬盘,把它分成一系列同心圆(磁道),然后再把硬盘分成包含512B信息的扇区。最后,硬盘划分为许多柱面,柱面是由硬盘中每个磁面上具有相同号码的磁道组成的。
格式化过程中,还建立一个文件目录表(FDT)和文件分配表(FAT),目录表是一个硬盘存放信息的索引,FAT包含一个硬盘存入信息的扇区柱面的指针。
每次存放文件时,DOS就寻找自由扇区并把文件放入其中,注意这种文件组织过程和手工文件系统是大不相同的。这种方式要高效得多,DOS不是把类似的信息放在一个单区域中,而是把信息放在任何可用的扇区中,典型的是把一个文件放在单个柱面上,而不是放在硬盘的一个盘面上,这样能加速读/写头的访问。由FAT跟踪指向每个扇区的指针。
2. 逻辑数据存储
大概DOS最有用的功能就是它包含树形目录性能。如上所述,一个目录就是一个索引,它包含存放在盘上的一系列文件以及告诉DOS每个文件物理存放位置的参考信息。索引可包含子目录的引用。也就是说,目录可安排成一种层次结构,目录项包含低层目录的名字,这种功能允许用户把数据逻辑分组到各个子目录层上去,用操作系统的话讲,这就叫作建立“树结构”目录。所有层次目录的起点是DOS的主目录(根目录),它在硬盘初始时建立的,根目录是不能用DOS册除命令删除的。
虽然操作系统能跟踪任何文件的存放地址,但在一个索引中对上千个文件进行索引查找并不是一件容易的事。把具有类似内容的文件逻辑划分到一系列子目录中,对有效管理硬盘系统是必要的。
软盘的信息组织和文件管理结构比硬盘要简单一些,但原理是一样的。下面介绍一下硬盘的信息组织和文件管理性能。
硬盘经物理格式化、FDISK分区及FORMAT高级格式化后就可作为DOS盘正常使用了。硬盘物理格式化称低级格式化,它重新对硬盘划分磁道和扇区,在每扇区的地址区上标上地址信息,并剔出坏道。FDISK对硬盘空间进行分区,为不同的操作系统划分出各自的区域,既可以把整个硬盘全部划分给DOS操作系统使用,亦可划分出一部分硬盘空间给DOS操作系统,而把其余部分留给其它操作系统使用。在硬盘上建立了四个分区信息表的同时,把主引导记录写到主引导扇区(0头0柱面1扇区),并激活一个分区。FORMAT C:/S命令在DOS分区空间(DOS引导扇区)的前部准备好DOS引导记录、文件分配表(FAT)和文件目录表(FDT)以及将两个系统隐含文件(对MS-DOS来说是IO.SYS和MSDOS.SYS)和命令处理程序(COMMAND.COM)拷贝到硬盘。在硬盘上对一个操作系统有两个引导程序,一个共用的(主引导程序)另一个是该操作系统自己专用的(称为DOS引导程序或BOOT RECORD)。
二、主引导记录的修复
1. 什么是主引导记录
硬盘有两个引导记录(假定硬盘只划一个主DOS分区),一个是主引导记录,一个是分区引导记录,前者驻留在硬盘的0道0面1扇区,后者驻留在硬盘逻辑0扇区。
硬盘的主引导记录是FDISK.EXE在对硬盘进行分区时产生的,同时将分区信息登记在主引导记录上,它并不改变主引导记录的执行代码;FORMAT.COM只能格式化某一分区;主引导记录不属于任何分区,因而FORMAT.COM不能清除主引导记录的任何信息。如果在读主引导记录时出错或主引导记录的结束标志不是“55AA”,系统将转入ROM BASIC(无ROM BASIC则提示出错并死机)。
当主引导记录在查找到活动分区的引导标志为“80H”时(若为多个分区,其他分区的引导标志为“00H”),就将分区引导记录读到内存7C00H处。若分区引导标志出错,系统将提示“Invalid Partition table.”(错的分区表)。若引导标志正确,读引导记录时出错,系统将提示“Error loading operation system”(操作系统装入出错)。
若BOOT区受损或遭到病毒侵袭,系统则提示“Disk boot failure,Insert system disk”(硬盘引导记录损坏,插入系统盘)。
DOS使用引导/保留区是用来确定该磁盘的面数、磁道数和扇区数。由FDISK程序写到硬盘第一物理扇区(0头0柱面1扇区,即主引导扇区)的主引导记录由三部分组成:
(1) 主引导程序
(2) 分区表
(3) 结束标志字
主引导程序可在FDISK程序中找到,占用446个字节,它用于硬盘启动时将系统控制转给用户指定的并在分区表中登记了的某个操作系统区。分区表内容由磁盘介质及用户在使用FDISK定义分区时决定。每个分区表的项目是16个字节长,其内容含义如下表所示。
存储位置 内容及含义
第1个字节 引导标志。值为80H表示活动分区,值为00H表示非活动分区
第2、3、4个字节 本分区的起始磁头号、扇区号,柱面号
第5个字节 操作系统提示符。值为00为不识别,值为EF、FF等为DOS不能识别的类型 ,值为06H表示DOS活动分区,0FH表示DOS扩展分区
第6、7、8个字节 本分区结束的磁头号、扇区号、柱面号
第9、10、11、12个字节(双字) 本分区之前已用了的扇区数
第13、14、15、16个字节(双字) 本分区的总扇区数
(1)扇区号的高二位占用柱面号所在字节的最高二位,即柱面号为10位,扇区号为6位。
(2)双字参数是低位在前,高位在后存储的。
结束标志字占二个字节,其值为AA55,存储时低位在前,高位在后。它用于标识一个有效主引导记录。因此,主引导记录共占用512个字节,正好为一个扇区,第一个分区表位于偏移地址01BEH处。
2. 主引导程序的修复
硬盘的主引导扇区是硬盘中最为敏感的一个部件,其中的主引导程序是它的一部分,此程序主要用于检测硬盘分区的正确性,并确定活动分区,负责把引导权移交给活动分区的DOS或其他操作系统。此段程序损坏将无法从硬盘引导,但从软驱或光驱之后可对硬盘进行读写。修复此故障的方法较为简单,使用高版本DOS的FDISK命令即可。因为硬盘的主引导就是FDISK. EXE程序在分区硬盘时建立的,FDISK.EXE中包含有完整的硬盘主引导程序。由于对硬盘重新分区会造成硬盘数据丢失,所以在实际应用中我们往往通过带参数MBR来直接重写硬盘主引导程序,即输入DOS命令:
FDISK/MBR
来重写硬盘主引导,而不会破坏硬盘上的原有数据。
虽然DOS版本不断更新,从DOS 3.x到Windows 3.2,从Windows 9x到Windows 2000,但硬盘的主引导程序一直没有变化,所以只要找到一种DOS引导盘启动系统并运行“FDISK/MBR”即可恢复硬盘主引导。
3. 硬盘分区表的修复
分区表错误是硬盘的严重错误,错误的不同程序会造成不同的损失。可用Norton 8.0的DISKEDIT.EXE程序来查看和排除错误,也可用KV3000的硬盘救护箱来修改磁盘。下面以KV3000工具为例来修复硬盘分区表故障。
(1)活动分区标志(80H)错误
没有活动分区标志,计算机将无法启动。出现该故障可用KV3000的硬盘救护箱来方便地修复。
将KV3000软件盘插进驱动器,打开电源启动机器,启动后运行KV3000程序,待出现主界面后按“F6”出现图1所示界面,正常情况下倒数第四行的第15个字节应为“80”(如图1中A),如果不是可按“F5”键进入编辑状态,然后将光标移到该位置后直接输入数字“80”;按“Ctrl+F10”保存,屏幕出现提示信息“Warning!!!Exit(Y/N)”键入“N”,屏幕显示“Write?(Y/N)”要求进一步确认,按“Y”后机器将修改后的信息存盘,按“Esc”键退出KV3000后重新启动机器即可。
当然,也可用FDISK程序重置活动分区。
(2)DOS分区类型错误
某一分区类型错误,可造成某一分区的丢失。分区表的第五个字节为分区类型值,基本DOS分区值为06,而扩展的DOS分区值是0F。如果把基本DOS分区类型改为0F则系统无法启动,并且不能读写其中的数据。如果把06改为DOS不能识别的类型如00H,则DOS认为该分区不是DOS分区,当然无法读写。修改此类故障和以上修改活动分区的方法类似,不同的是改动的是分区表的第五个字节(如图1中B、C),而不是第一个字节。
正因为DOS分区类型改动能致使硬盘分区不能被识别,所以我们可以利用此类型值来实现单个分区的加密,恢复原来的正确类型值即可使该分区恢复正常。分区表中还有其他数据用于纪录分区的起始或终止地址。这些数据的损坏将造成该分区的混乱或丢失,一般手工恢复较困难,可用备份的分区表数据重新写回,或者从其他相同类型并且分区状况相同的硬盘上获取分区表数据。
在这里提醒大家,平时要做好分区表的备份工作,因为一旦分区表被破坏将导致硬盘数据的全部丢失,会给用户带来严重的损失。
4. 分区有效标志(AA55)的恢复
在硬盘主引导扇区中还存在一个重要的部分,那就是其最后的两个字节:55AAH,此字为扇区的有效标志。当从硬盘、软盘或光驱启动时,将检测这两个字节,如果存在则认为有硬盘正常,否则将不承认硬盘。系统从硬盘启动如果检查不到此标志则转入ROM BAISC或提示放入软盘;系统如果是从软盘启动的,则启动后无法转入硬盘。此类故障同样可用KV3000的硬盘救护箱功能来解决,具体方法同上,惟一不同的是修改引导记录的最后两个字节(如图1中D)。
在启动过程中,如果检测不到0道0面1扇区最后的两个字节“55AA”,机器将不承认硬盘,因此我们可以利用此标志来加密整个硬盘。
另外,DOS引导扇区也有这样的标志。当DOS引导扇区无此标志时,系统启动将显示以下信息:missing operating system。其修复方法可参照以下DOS引导记录的修复方法。
5. 用KV3000找回关键代码
从上面我们知道,硬盘主引导区(0道0面1扇区)内有三种关键代码:第一种代码是主引导程序,可用FDISK/mbr或KV3000/K生成;第二种关键代码是80;第三种关键代码是55AA。如果没有第二、三关键代码,有时仅凭上述方法直接改回是没用的,因为这可能是病毒所为,它将第二、三关键代码连同有关数据搬移到了其它扇区。我们可以运行KV3000程序,按下“F6”键(硬盘救护箱),然后用“PageUp”或“PageDown”键来进行查找,如在其它扇区发现分区表,会在表中出现闪动的红色“80”和“55AA”,并响一声来提示你,这时下方会出现一行提示:F9=Save to Side 0 Cylinder 0 Sector!!!。这时,按下“F9”键,就可将找到的原硬盘主引导信息搬回到硬盘0道0面1扇区中。重新启动机器,硬盘即可恢复正常。
一般情况下,硬盘的隐含扇区只有0道0面1扇区有用,用来做主引导扇区。0道0面2扇区以后的隐含扇区是空闲区,部分病毒主体有时隐藏在这些空闲区内,但是,只要0道0面1扇区中的病毒头被杀毒软件杀掉,2扇区以后的这些病毒主体就成为无头的病毒僵尸,再也没有病毒头来调用,当然也就没用了。
6. 硬盘主引导记录的备份与恢复
利用KV3000的主引导备份功能可以方便地备份硬盘的主引导记录,在硬盘主引导出现故障时可以很快恢复,既方便又安全。
使用KV3000/B的格式时,可以在软盘上备份一个硬盘的主引导区和系统引导区档案,并且在备份前会自动先检测主引导记录是否患有病毒或有不正常现象,如有,将警告用户要备份的档案有病毒或不正常,是否继续进行。当然,可强行备份。如果没有不正常现象,程序会提示在A驱中插入一张已格式化的软盘以便存储引导信息档案。该档案名为:HDPT.DAT和HDBOOT.DAT,其中HDPT.DAT为主引导区备份文件,HDBOOT.DAT为系统引导区备份文件。当做完这项工作后,应将软盘贴好写保护,并在标签上写明主机型号、硬盘容量、分区大小,然后妥善保管。当日后硬盘因主引导信息损坏或被病毒破坏而不被认可时,我们可以用KV3000/HDPT.DAT 的格式将保存在软盘上的HDPT.DAT档案内容再恢复到硬盘引导区中,即可恢复硬盘的存取功能;也可以用KV3000/HDBOOT.DAT的格式将保存在软盘上的HDBOOT.DAT文件内容恢复到硬盘的系统引导区,这一步骤,对电脑用户来说,是非常有用的,建议用户一定要将重要硬盘的主引导信息做一备份,并妥善保管。
如果你平时没有做主引导记录的备份工作,在主引导记录出问题时你还可使用移花接木的方法来恢复硬盘主引导。具体做法就是找一块大小和分区情况都相同的硬盘,将它的主引导备份下来,再拿到自己的硬盘上来恢复,这在主引导记录中的分区表破坏严重而无法修复时不失为一个很好的办法。这样恢复后就能再现硬盘上所有数据,避免了重新分区后数据丢失的情况。
三、DOS引导记录(BOOT)修复
1. 什么是DOS引导记录
由FORMAT高级格式化指令写到逻辑0扇区(DOS引导扇区,又称BOOT区)的DOS引导记录由五个部分组成:
●一条跳转指令
●厂商标识代码
●BPB参数信息
●DOS引导程序
●结束标志字
DOS引导记录的主要功能是完成DOS系统的自举。第一部分占3个字节,如果该磁盘是DOS系统盘,引导它使PC将引导区中的数据装入内存并执行此跳转指令,它跳过厂商标志和BIOS参数块区,直接到引导代码处执行程序。第二部分占8个字节,包含厂商标志。此域DOS并不需要使用,但可利用一些工具软件看到这部分信息。第三部分BPB参数信息是一组很重要的参数,占有9字节,其中长度为13个字节的BIOS参数块。(BIOS Parameter Block简称BPB)记录了磁道的重要信息,如每扇区字节数,磁盘介质说明符等。紧接着BPB的3个字(占6个字节)说明每道扇区数、磁头数、隐含扇区数,提供给磁盘驱动程序,对磁盘起补充说明作用,通常把它们与BPB参数块合在一起,称为磁盘的BPB参数信息。BPB每张盘上都有,其中地址7C03-7C10的11个子项为BPB参数块。
第四部分DOS引导程序即BOOT代码占480字节,负责自动完成三个系统文件IO.SYS、MSDOS.SYS及COMMAND.COM的装入。第五部分结束标志字占2个字节,其值为AA55,存储时也是低位在前高位在后。这样五个部分共占用512个字节,也正是一个扇区,因此称它为DOS引导扇区或BOOT区。不管该磁盘是否含有DOS系统文件,在保留引导区中总是存在有自举代码,但只有此盘作为系统盘时它才能启动计算机。
2. DOS引导记录(BOOT)的修复
DOS引导记录出错可通过高级格式化命令FORMAT来修复,FORMAT命令可带“/S”参数,也可不带,都不影响DOS引导记录的重写。即:
FORMAT C:
或FORMAT C:/S
如果带参数“/S”则在向该分区写入DOS引导记录的同时,将三个系统文件IO.SYS、MSDOS.SYS及COMMAND.COM也一同写入磁盘,这样该盘就能作为系统盘来启动机器了。
但是用FORMAT命令来修复DOS引导记录有个致命的弱点就是该分区所有的数据信息将不保,虽然可以使用以下介绍的方法来恢复被高级格式化的分区数据,但毕竟很麻烦。我们可以用更方便的办法来恢复DOS引导记录,即系统传输命令“SYS”。用户只可先用相同版本的系统软盘引导机器,然后用“SYS C:”传递系统即可,该命令在向DOS引导区重写信息的同时,将三个系统文件IO.SYS、MSDOS.SYS及COMMAND.COM同时写入活动分区,重新开机后,硬盘恢复启动功能。
四、文件分配表(FAT)的修复
1. 什么是文件分配表(FAT)
文件分配表用于表示存储磁盘文件空间信息的用法。此表包含所有未分配的、已分配的或标记为坏的盘簇的信息。盘簇是DOS进行磁盘空间分配的最小单位,一个簇可以是两个扇区,也可以是4个扇区或更多,视DOS版本及硬盘分区的大小而不同。虽然FAT记录你的文件所用的磁盘空间的信息,但引导区、两个FAT表、文件目录区等本身并不由FAT中的盘簇表示。
FAT中每个磁盘上的可用盘簇就只有一个登记项。这些登记项表示该盘簇是否在使用或空闲或损坏。坏的盘簇是在格式化过程中通过FORMAT命令发现的。每个盘簇中只要有一个扇区有问题就整个不能使用,这样会浪费掉一些扇区。
文件分配表FAT是文件管理系统用来给每个文件分配盘区空间的表格,该表格在磁盘上有两个相同的文本。文件分配表的表头占3个表项,其中第一个字节是磁盘介质说明符,在第2、3字节总是FFFFH,这是系统设定的,其内容含义如表1所示:
磁盘介质说明符 含义
FF 双面 每道8扇区的软盘
FE 单面 每道8扇区的软盘
FD 双面 每道9扇区的软盘
FC 单面 每道9扇区的软盘
F8 硬盘
DOS是以簇为单位给文件分配磁盘空间的,每个簇在FAT表中占一个表项,簇编号即为表项号。FAT在磁盘上每一簇由一个12位(1.5字节)、16位(2字节)项或由一个32位项(4字节)组成。对于FAT12,每个分区最多能够管理4096个簇,每个簇的容量恒定为4096字节,因此FAT12系统所能管理的分区上限为16M;FAT16系统最多能够管理2G的硬盘分区(32768×65536);多于2G的硬盘分区只能采用FAT32分区表。采用FAT32分区表的突出优点是每簇包含的扇区数相对较少,这样能有效节省硬盘空间(因为文件是以簇为单位分配的,即使只有几个字节的文件,系统也会分配一个完整的簇),避免资源浪费。
在FAT表中,0号表项和1号表项是表头。从2号表项开始,每一个表项作为一个簇的标志信息,占两个字节。其内容含义如表2所示:
表项内容 含义
0000H 对应簇号为自由簇,可以使用
FFF7H 对应簇为坏簇,不可以使用
FFFFH 文件的簇链结束
FFF0-FFFFH 保留
其它内容 文件的后续簇号
系统隐含文件IO.SYS所在的首簇号总是0002。FAT对每个文件来说其数据结构是一个单向链表,文件在文件目录表FDT中占一个文件目录项,每个文件的首簇号存放在该文件的目录项中,一个文件目录项占32个字节,其中第26、27字节就是存放该文件的首簇号,系统依据FDT中的首簇号乘以2(对于16位的FAT表)得到该文件在FAT表头的偏移地址,并得到第2簇的簇号,由该文件的单链表即可找到该文件的全部内容。
文件分配表总是放在DOS引导记录之后,若FAT大于一个扇区,则占用紧挨着的扇区,两个FAT拷贝连在一起存放,一个挨一个,连成整体。需要使用FAT时,将其读到DOS的一个缓冲区中。系统的文件分配表存放在逻辑1扇区开始的若干个扇区内,一个文件分配表占多少个扇区依硬盘分区情况的不同而不同。
2. 文件分配表(FAT)的修复
1)恢复法
FAT表记录着硬盘数据的存储地址,每一个文件都有一组FAT链指定其存放的簇地址。FAT表的损坏意味着文件内容的丢失。庆幸的是DOS系统本身提供了两个FAT表,如果目前使用的FAT表损坏,可用第二个进行覆盖修复。但由于不同规格的磁盘其FAT表的长度及第二个FAT表的地址也是不固定的,所以修复时必须正确查找其正确位置。可用DEBUG的m命令来将第二个FAT表移到第一个FAT表处,但这对于不熟悉DEBUG命令和FAT表存放位置的一般用户来说确实很困难,我们可以通过NORTON8.0中的NDD.EXE来很方便地恢复损坏的FAT表。
将NDD.EXE拷贝到一张系统软盘上,然后用此软盘启动机器,执行NDD.EXE程序。选择第一项“Diagnose Disk”,再选相应的分区,程序开始扫描,当扫描到第四项“Analyzing File Allocation Tables”时出现分区表出错信息,提示“Do you wish to correct this problem?”(是否需要纠正错误),回答“Yes”,程序将自动扫描第二个FAT表,用第二个FAT表来替换第一个FAT表。按“ESC”退出后,重启机器,故障恢复。
2)修复法
有时我们会遇到这样的情况,就是第二个FAT表也损坏了,无法通过第一种办法来恢复FAT表,但是文件数据仍然存放在硬盘数据区中,这时我们还可以用修复法来挽救数据。
通过“Scandisk.exe”程序可以找回丢失FAT链的扇区数据。启动机器后,在DOS状态运行Scandisk.exe程序,选择相应分区,按“开始”钮对磁盘进行扫描,如遇错误会出现“磁盘扫描程序在某分区找到错误”的提示信息。选择“将丢失的文件碎片转换成文件”选项(如图1),按“确定”后程序开始修复错误,最后出现“磁盘扫描结果”信息,按“关闭”退出。这时用“Dir”命令检查该分区目录,会发现有若干的扩展名为“.chk”的文件,这便是丢失FAT链的文件。如果是文本文件则可从中提取并可合并完整的文件,只要将文件名改过来就行了;如果是二进制的数据文件,则很难恢复出完整的文件。
五、文件目录表(FDT)的修复
1. 什么是文件目录表
FORMAT命令一开始就为整个磁盘建立根目录,每个DOS盘卷只有一个根目录,如果给盘卷起了卷标名的话,可把卷标看成是根目录名。因为每个DOS盘卷都与一个驱动器符相连接,故DOS简单地用“[驱动器符号:]\”表示在根目录下,根目录的作用是分配文件空间(逻辑扇区号),并且通过设备驱动程序接口确定有效的最大目录项。
根目录区的文件目录表FDT中包括IO.SYS、DOS.SYS等文件的目录项,每个目录项占32个字节。由于除根目录外的所有目录实际上是文件,所以其包含的项数是没有限制的。磁盘上每个文件都有一个32字节长的目录项,它登记了文件的名字、属性、建立或最后修改的日期、时间以及文件在磁盘上存放的起始位置。除了卷标名可能占据该区的一个32字节外,该区的每个32字节都可以是根目录下的一个目录项。注意区分目录项和目录这两个名词,目录项是一个32字节长的数据块,它登记着一个文件或子目录,目录是由若干目录项组成的一个表,根目录区是盘卷的一个固定区域,子目录项表是一个表文件,FDT的目录项内容及含义如表3所示:
字节位置 内容及含义
第0-7字节 表示文件名
第8-10字节 表示文件名的扩展名
第11字节 表示文件属性,其中值为00H(读写),01H(只读),02H(隐含),04H(系统),08H(卷标),10H(归档)
第12-21字节 保留未用
第22-23字节 文件建立或修改时间
第24-25字节 文件建立或修改日期
第26-27字节 表示文件的起始簇号(首簇号)
第28-31字节 表示文件的字节数(长度)
当现行目录为子目录时,使用DOS命令DIR列文件目录,通常可以看到前两项特殊文件,单个英文句号“.”表示子目录;而“..”则表示上一级目录。子目录项中的文件长度总为零,尽管它的文件长度实际不为零,它的意义在于,不能使用普通的文件读/写一个子目录文件。
只有当文件需要时系统才给文件分配数据区空间,空间是按每次一个簇的方式来分配的(簇是最小单位),分配时系统跳过已分配的簇,第一个遇到的空簇就是下一个将要分配的簇,系统并不考虑在磁盘上的物理位置,这样可使磁盘空间得到有效的利用,同时文件被删除后剩下的簇可以分配给新的文件,可以说数据区空间的使用是在文件分配表和文件目录表统一控制下完成的。一个簇总是由一个或多个连续的扇区组成的,每个文件所有的簇在文件分配表中都是链接在一起的。
许多病毒是从修改引导记录和占用文件分配区及文件目录区进入计算机内的,一旦FDT区及FAT区被破坏,则会造成系统崩溃。所以,做好引导记录及FAT、FDT信息的备份工作是很重要的。目前,一些防毒软件(如KV3000)和一些工具软件(如Norton程序)就可对上述数据进行备份。
2)文件目录表(FDT)的修复
目录表记录着硬盘中文件的文件名等数据,其中最重要的一项是该文件的起始簇号,目录表由于没有自动备份功能,所以如果目录损坏将丢失大量的文件。一种减少损失的方法也是采用上面的scandisk.exe程序来修复。由于目录表损坏时一般都是首簇号丢失,而文件本身仍然存放在磁盘上。用scandisk.exe程序扫描分区,扫描结束后会在该分区的根目录下发现许多以“.chk”为扩展名的文件,这就是丢失首簇号的文件。这些文件一般都是比较完整的,即每一个chk 文件就是一个完整的文件,把其改为原来的名字可恢复大多数文件。
六、找回丢失的数据文件
1. 误删分区时数据的恢复
当用FDISK删除了硬盘分区之后,表面现象是硬盘中的数据已经完全消失,在未格式化时进入硬盘会显示无效驱动器。其实FDISK只是重新改写了硬盘的主引导扇区(0面0道1扇区)中的内容,具体说就是删除了硬盘分区表信息,而硬盘中的任何分区的数据均没有改变,可仿照上述分区表错误的修复方法来恢复分区表数据。如果已经对分区用FORMAT格式化,则在恢复分区后再用下述方法恢复分区数据。
2. 误格式化硬盘数据的恢复
在DOS高版本状态下,格式化操作FORMAT在缺省状态下都建立了用于恢复格式化的磁盘信息,实际上是把磁盘的DOS引导扇区、FAT分区表及目录表的所有内容复制到了磁盘的最后几个扇区中(因为后面的扇区很少使用),而数据区中的内容根本没有改变。所以我们可以通过运行“unformat.exe”程序来恢复原来的文件分配表及目录表,从而完成硬盘信息的恢复。
3. 误删文件的恢复
Windows 98的回收站可以让你将已经删除的文件恢复回来,可当你在不经意中按住了“Shift”键删除或是看也不看就对回收站执行了“清空”操作,此时即使再到回收站中去找也是不会找到的。那怎么办呢?这就需要通过软件来恢复。
我们知道,操作系统为了提高处理速度,对于文件删除只是采用了伪处理方式,也就是在文件目录区中被删除文件的首字节作了一个标记,而并没有完全将数据从存储介质上抹去,这也是为什么使用DOS的Undelete标准模式恢复时,要提供被删除文件名第一个字符的原因。
要对文件进行恢复,一个前提条件就是不能随意再向磁盘写信息,因为如果所写信息正好写到被删除文件的位置上,将原有信息覆盖掉,那就无法恢复了。
下面介绍几种恢复被删除文件的方法:
1)在Windows下恢复文件
利用专门的数据恢复软件,如Easyrecover、Finaldata、Recover4all、Drive Rescue等,它们可以非常容易地将已删除文件寻找回来。但有一点要注意,由于这些都是Windows平台下的软件,而Windows本身的运行就要不断地向磁盘填写数据,有可能覆盖被删文件在磁盘上的真实内容,所以最好立即关机,用以下方法在DOS状态下恢复,这样成功率较高。
2)在DOS下恢复文件
进入纯DOS模式(注意不是Windows 9x下的MS-DOS方式),键入“UNLock”命令对计算机系统进行实模式解锁,此时你就可以在第一时间内使用“UnDelete”命令来尝试恢复被误删除的文件,只要在误删除之后,未曾在同一个磁盘或同一个分区中进行过软件安装或是存盘操作,那么一般来说这些文件都有可能被恢复。
有时会出现这种情况,在文件目录区中被删除文件的目录项已被其它数据覆盖,但是文件内容在数据区却完好无损,这种情况使用“UnDelete”命令是无法恢复的。下面简单介绍一下这种情况的处理办法:
①首先通过NORTON 8.0中的“Diskedit.exe”程序确定丢失文件的位置
运行“Diskedit.exe”程序,选择丢失文件所在的分区,将Data area(数据区)所指示的起始扇区号填入“Starting Sector(起始扇区)”,再将屏幕改为十六进制方式,然后通过“Tools”菜单中的“Find”项来查找,在ASCII栏中输入需找回文件的关键词(可以是字符、文字、数字,也可以是其它符号),按回车键开始查找, 屏幕显示“Search Progress”窗口(查找进度)。这时应注意的是,如果是在硬盘上查找,硬盘容量较大且要查找的文件又偏于硬盘后面位置,则查找时间稍长,需耐心等待,而不要误以为操作失败。
找到后,屏幕会出现相应内容,首先判断所显示内容是否就是要寻找的内容。如果所显示内容不是要寻找内容,则按“Ctrl+G”再继续向下查找;如果所显示内容正是要查找的内容,则使用“PageUp”向前翻,直到找到这段内容的开头,记下起始绝对扇区号(屏幕下方Sector后面的数字),再用“PageDown”向后翻,直到找到这部分内容的末尾,记下终止绝对扇区号(屏幕下方Sector后面的数字),再按“Alt+G”继续向下查找。直到记下每段内容的起始和终止的绝对扇区号(因为,文件在磁盘上的存放并非都是连续的)。例如,我们找到了那个文件分布在三个区域:185-197扇区、132-148扇区、163-178扇区。位置确定后DISKEDIT的任务就完成了。
有一点要说明,寻找内容如果是汉字,须小心辨别。因为当汉字从它的两个字节中间换行时,它的后一字节与下一个汉字的头一字节在下一行首拼成了一个怪字,并依次影响后面的字,所以有时只能从断续的词语中猜出内容。
②用DEBUG将扇区区域内的内容写成文件
下面以将185-197扇区的内容写成文件为例。
先将有关数转换成16进制数:起始扇区185→B9, 扇区数13→0D,字节数512*13=6656→1A00。
启动DEBUG程序,输入如下命令序列:
-L 100 00 B9 0D <CR> [将A(00)盘上从B9 扇区开始的连续13个扇区的内容装入内存100处]
-R BX <CR>
BX 0000
:0000 <CR> [文件长度高字0000写入寄存器BX]
-R CX <CR>
CX 0000
:1A00 <CR> [文件长度低字1A00写入寄存器CX]
-N A <CR> [将文件名命名为A]
-W <CR> [把从磁盘读入内存中的内容写成磁盘文件]
-Q [退出DEBUG]
(上面各行命令中,行未的<CR>表示敲回车键,无回车键的行是系统显示的内容,不是敲入的命令。)
至此,185-197扇区的内容已写入文件A了。同样方法,可将132-148扇区和163-178扇区的内容写成文件B和C。
③用COPY命令将文件合并
用COPY命令将找回的三个文件合并成file:
COPY A+B+C file <CR> [按文本方式连接]
或COPY A/B+B/B+C/B file <CR> [按非文本方式连接]
用TYPE命令显示文件file,丢失的文件已全部恢复。这种方法很适合恢复文本文件。
(3)从备份文件中恢复
平时做好备份工作,当出现文件被误删除时恢复就方便多了。GHOST是常用的备份工具,它可以将硬盘克隆成一个后缀名为“.gho”的映像文件,以后需要时可随时恢复,这样就不怕误删文件了。但是GHOST是全盘恢复,即要恢复就是整个分区内容全部恢复,这样很不方便。你可以安装Ghost Explorer,该软件可对映像文件中的内容进行局部恢复和删除等操作,界面如图所示。
使用“Open”按钮可打开已备份的映像文件,左侧为映像文件对应磁盘的目录树,在右侧选定文件后,执行“文件”菜单中的“恢复”命令即可将所选文件恢复到指定位置,这样GHOST做的分区映像文件也就可以像压缩文件一样能进行部分恢复,使恢复文件的工作变得更加方便实用。
(4)从临时文件中恢复
有时由于正常退出系统或断电而引起的文件丢失,我们可以尝试从临时文件中去恢复。
如果是Word文件可在以下文件夹中找到临时文件:
...\Windows\Application Data\Microsoft\Word(Windows 9x下的路径)
...\Windows\Profiles\用户名\Application Data\Microsoft\Word(Windows 2000下的路径)
如果是Excel文件可在如下文件夹中找到临时文件:
...\Windows\Application Data\Microsoft\Excel(Windows 9x下的路径)
...\Windows\Profiles\用户名\Application Data\Microsoft\Excel(Windows 2000下的路径)
其它有些文档可在“...\Windows\temp”文件夹中找到临时文件,只要将文件名改过来即可。
七、硬盘“逻辑锁”的解除
“硬盘逻辑锁”是一种很常见的恶作剧手段。中了逻辑锁之后,无论使用什么设备都不能正常引导系统,甚至软盘、光驱、挂双硬盘都没有任何作用。
1.“逻辑锁”的上锁原理
计算机在引导DOS系统时将会搜索所有逻辑盘的顺序,当DOS被引导时,首先要去找主引导扇区的分区表信息,然后查找各扩展分区的逻辑盘。“逻辑锁”修改了正常的主引导分区记录,将扩展分区的第一个逻辑盘指向自己,使得DOS在启动时查找到第一个逻辑盘后,查找下个逻辑盘总是找到自己,这样一来就形成了死循环。
2.“逻辑锁”的解除方法
1) 通过钥匙盘解锁
有些“逻辑锁”配有解锁钥匙,例如著明的恶作剧程序“江民逻辑锁”,一旦在计算机上运行了该程序机器就会被锁上,不但硬盘找不到,就连软盘、光驱也无法启动机器,甚至挂双硬盘也没有任何作用。但是好在该程序配有专门的解锁程序,运行解锁程序计算机会提醒你插入一张软盘,然后解锁程序会自动将软盘制作成一张解锁钥匙盘。解锁操作非常简单,只要将该盘插到驱动器里打开机器,在该盘上的一段特殊的引导程序,会自动修改错误的逻辑盘指向,解除死循环。根据屏幕提示,重新开机后,一切恢复正常,所有分区及数据都丝毫无损。
2) DM程序解锁
因为DM是不依赖于主板BIOS来识别硬盘的硬盘工具,就算在主板BIOS中将硬盘设为“NONE”,DM也可识别硬盘并进行分区和格式化等操作,所以我们可以利用DM软件为硬盘解锁。
首先将DM拷贝到一张系统盘上,接上被锁硬盘后开机,按“Del”键进入BIOS设置,将所有IDE接口设为“NONE”并保存后退出,然后用软盘启动系统,系统即可“带锁”启动,因为此时系统就等于根本没有接硬盘,所以也就不会进入死循环。启动后运行DM,你会发现DM可以识别出硬盘,下面就可以在DM下重建分区了。
在要求不高的情况下可选择主界面下的第一项来重建分区。在主界面选择第一项“(E)asy Disk Installation”出现“Disk Manager found 1 drive.Is the drive list correct?”信息,选择“(Y)ES”回答,然后在“Select the operating system you are using or plan to install”窗口中选择你将要安装的操作系统类型,再按“Alt+C”键继续。这时屏幕出现“You are about to erase all data on this disk!Are you sure you want to continue”要求用户进一步确认,当你按下“(Y)ES”确认后,DM程序就开始将整个硬盘自动划分为一个大的分区,并快速格式化该分区,最后出现要求重启机器的提示,按要求重启机器后并能重新使用硬盘了。只是目前的硬盘上是空的,什么也没有,如果要恢复某些重要程序或文档只能用前面讲的“在DOS下恢复文件”的方法从扇区中恢复整理。
如果在解开硬盘逻辑锁的同时要自定义分区大小,可选择主界面下的第二项来完成。选择主界面的第二项“(A)dvanced Options”中的“(A)dvanced Disk Installation”,按“(Y)ES”确认后选择相应的操作系统,屏幕出现“Select a Partition Option”窗口,选最后一项“OPTION(C) Define your own”自己定义分区大小,执行“Save and Continue”保存设置,然后按“Alt+C”继续,在得到进一步确认后,DM开始按用户定义的大小进行分区,并自动快速格式化各分区,重新启动机器后各分区就可正常使用了。
以上是笔者在长期微机使用、维护中的一点经验总结,在此和大家共享,同时也补充了一点硬盘文件管理方面的知识,希望能对大家了解硬盘文件管理、维护硬盘数据、排除硬盘软故障方面能有所帮助。