《数据修复技术与典型实例实战详解》——1.5 文件分配表的恢复

  1. 云栖社区>
  2. 博客>
  3. 正文

《数据修复技术与典型实例实战详解》——1.5 文件分配表的恢复

异步社区 2017-05-02 08:43:00 浏览1133
展开阅读全文

本节书摘来自异步社区《数据修复技术与典型实例实战详解》一书中的第1章,第1.5节,作者:叶润华著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 文件分配表的恢复

数据修复技术与典型实例实战详解
1.5.1 文件分配表的基础知识
磁盘经过格式化后主要包括的区域有:主引导记录区(只有硬盘有)、引导记录区、文件分配表(FAT)、目录区和数据区。

文件分配表用于表示存储磁盘文件空间信息。此表包含所有未分配的、已分配的或标记为坏的盘簇的信息。盘簇是DOS进行磁盘空间分配的最小单位,一个簇可以是两个扇区,也可以是4个扇区或更多,视DOS版本及硬盘分区的大小而不同。虽然FAT记录文件所用的磁盘空间的信息,但引导区、两个FAT表、文件目录区等本身的盘簇并不由FAT中的盘簇表示。

FAT中每个磁盘上的可用盘簇就只有一个登记项。这些登记项表示该盘簇是否在使用、空闲或损坏。坏的盘簇是在格式化过程中通过FORMAT命令发现的。每个盘簇中只要一个扇区有问题就整个不能使用,这样会浪费掉一些扇区。

文件分配表是文件管理系统用来给每个文件分配盘区空间的表格,该表格在磁盘上有两个相同的文本。文件分配表的表头占3个表项,其中第一个字节是磁盘介质说明符,第2、第3个字节总是FFFFH,这是系统设定的,其内容含义如表1.1所示。
screenshot

DOS是以簇为单位给文件分配磁盘空间的,每个簇在FAT中占一个表项,簇编号即为表项号。FAT在磁盘上每一簇由一个12位(1.5字节)、16位(2字节)项或由一个32位项(4字节)组成。对于FAT12,每个分区最多能够管理4096个簇,每个簇的容量恒定为4096字节,因此FAT12系统所能管理的分区上限为16MB;FAT16系统最多能够管理2GB的硬盘分区(32768×65536);多于2GB的硬盘分区只能采用FAT32分区表。采用FAT32分区表的突出优点是每簇包含的扇区数相对较少,因为文件是以簇为单位分配的,即使只有几个字节的文件,系统也会分配一个完整的簇,FAT32分区表能有效节省硬盘空间,避免资源浪费。

在FAT中,0号表项和1号表项是表头。从2号表项开始,每一个表项作为一个簇的标志信息,占两个字节。其内容含义如表1.2所示。
screenshot

系统隐含文件IO.SYS所在的首簇号总是0002。FAT对每个文件来说其数据结构是一个单向链表,文件在文件目录表FDT中占一个文件目录项,每个文件的首簇号存放在该文件的目录项中,一个文件目录项占32个字节,其中第26、第27字节就是存放该文件的首簇号,系统依据FDT中的首簇号乘以2(对于16位的FAT)得到该文件在FAT表头的偏移地址,并得到第2簇的簇号,由该文件的单链表即可找到该文件的全部内容。

文件分配表总是放在DOS引导记录之后,若FAT大于一个扇区,则占用紧挨着的扇区,两个FAT拷贝连在一起存放,一个挨一个,连成整体。需要使用FAT时,将其读到DOS的一个缓冲区中。系统的文件分配表存放在逻辑1扇区开始的若干个扇区内,一个文件分配表占多少个扇区依硬盘分区情况的不同而不同。

文件分配表对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。

1.5.2 文件分配表的修复
1.用NDD修复分配表

FAT记录着硬盘数据的存储地址,每一个文件都有一组FAT链指定其存放的簇地址。FAT损坏意味着文件内容的丢失。庆幸的是DOS系统本身提供了两个FAT,如果目前使用的FAT损坏,可用第二个进行覆盖修复。但由于不同规格的磁盘其FAT的长度及第二个FAT的地址也是不固定的,所以修复时必须正确查找其正确位置,采用DEBUG也可实现这种操作,即采用其移动“m”命令把第二个FAT移到第一个表处即可(不建议这样做)。如果第二个FAT也损坏了,则也无法把硬盘恢复到原来的状态,但文件的数据仍然存放在硬盘的数据区中,可采用CHKDSK或SCANDISK命令进行修复,最终得到*.CHK文件,这便是丢失FAT链的扇区数据。如果是文本文件则可从中提取出完整的或部分的文件内容。

具体方法是:运行DEBUG,将FAT2读入缓冲区,用缓冲区的FAT2数据覆盖磁盘中的FAT1。但由于不同规格的磁盘其FAT的长度及第二个FAT的地址也是不固定的,所以修复时必须正确查找其正确位置,但这对于不熟悉DEBUG命令和FAT存放位置的一般用户来说确实很困难。

可以通过NORTON 8.0中的NDD.EXE来很方便地恢复损坏的FAT。将NDD.EXE拷贝到一张系统软盘上,然后用此软盘启动机器,进入纯DOS,执行NDD.EXE程序。选择第一项“Diagnose Disk”,如图1.107所示。接着选文件分配表损坏的分区,程序开始逐项扫描,当扫描到第四项“Analyzing File Allocation Tables”时出现分区表出错信息,提示“Do you wish to correct this problem?”(是否需要纠正错误),回答“Yes”,程序将自动扫描第二个FAT,用第二个FAT来替换第一个FAT。按“Esc”键退出后,重启机器,故障排除。

screenshot

2.文件分配表丢失的数据修复

有时会遇到这样的情况,就是第二个FAT也损坏了,无法通过第一种办法来恢复FAT,但是文件数据仍然存放在硬盘数据分区中,这时可以用修复法来挽救数据。

通过“Scandisk.exe”程序可以找回丢失FAT链的扇区数据。启动机器后,在DOS状态运行Scandisk.exe程序,选择相应分区,按“开始”按钮对磁盘进行扫描,如遇错误会出现“磁盘扫描程序在某分区找到错误”的提示信息。选择“将丢失的文件碎片转换成文件”选项,单击“确定”按钮后程序开始修复错误,最后出现“磁盘扫描结果”信息,单击“关闭”按钮退出。这时用“Dir”命令检查该分区目录,会发现有若干扩展名为“.chk”的文件,这便是丢失FAT链的文件。如果是文本文件则可从中提取并合并成完整的文件,只要将文件名改过来就行了;如果是二进制的数据文件,则很难恢复出完整的文件。

网友评论

登录后评论
0/500
评论
异步社区
+ 关注