• c盘转成fat32格式 > 章FAT 文件系统的扇区分配
  • 章FAT 文件系统的扇区分配

    免费下载 下载该文档 文档格式:PDF   更新时间:2014-08-13   下载次数:0   点击次数:1
    第 2章 FAT 文件系统的扇区分配 15 第 2章 FAT 文件系统的扇区分配 2.1 FAT16 的扇区分配 FAT16 文件系统由于能被目前所有的操作系统所识别,所以在硬盘分区时使用得极为普 遍.特别是安装多操作系统的硬盘,有时必须在主分区(C 盘)使用 FAT16 文件系统.如果 使用不能被某个操作系统识别的文件系统,则该操作系统就不能顺利安装. 现在的硬盘越来越大,硬盘上安装的应用软件越来越多,而适合这些应用软件运行的 操作系统不尽相同,特别是编程人员使用的计算机,一般都安装两三个操作系统.用于多 操作系统引导的有关文件,必须存储在 FAT16 格式的分区中,才能被不同的操作系统加载 使用. 所以在当前主流文件系统中,尽管 FAT16 存在着许多缺点,但仍然得到了广泛的使用. FAT16 文件系统的磁盘扇区是这样分配的. 在使用 FAT16 文件系统的分区内,第一个扇区是分区表(C盘)和分区链表(D盘和以 后的盘) ,其中C盘的第一个扇区还包含主引导记录.严格地讲,分区表所在的扇区不属于任 何分区, 但是从物理空间上它们又靠得很近, 为了今后在计算扇区编号时比较容易找到规律, 暂且将分区表这样划分. 之后是系统隐藏扇区,包括含有分区表或分区链表在内的扇区,一共占用 63 个扇区,实 际上就是一个磁道所包含的扇区. 系统隐藏扇区之后是分区引导记录,占用一个扇区. 再往后是两份相同的文件分配表 FAT1 和FAT2,每份 FAT 表占用多少个扇区,由分区的 大小而定,分区大所占用的扇区就多,具体数值可从分区引导记录的 BPB 表中查得,查找方 法可参考第 1 章的内容. 紧接 FAT 表之后是文件目录表 FDT, 固定占用 32 个扇区, 每个扇区可容纳 16 个登记项, 每个登记项的长度是 32 字节. FDT 表之后是数据区 DATA,数据区内的扇区是按照簇来管理的,簇的大小由分区大小 而定,它们之间的关系可参考第 1 章的内容. 扇区分配的情况见表 2-1. NTFS 文件系统扇区存储探秘 9 16 表2-1 FAT16 文件系统的扇区分配 分区表或分区链表 1 个扇区 保留扇区 共63 个扇区(包括上面的 1 个扇区) 分区引导记录 1 个扇区 FAT1 扇区数由分区大小而定 FAT2 同FAT1 FDT 32 个扇区 DATA 扇区按簇管理 2.2 FAT16 扇区寻址实例分析 详细了解文件系统的扇区分配是排除硬盘逻辑故障的重要基础.下面以作者使用的硬盘 为例,介绍 FAT16 文件系统的扇区地址的寻址计算方法. 在进行扇区寻址和计算的过程中,需要用到后面《工具篇》中介绍的一些工具程序,本 章先使用这些程序的执行结果,程序的详细运行方法在后面的章节中再作介绍. 作者使用的计算机上挂接了两块硬盘,为了在以后进行扇区扫描时节省时间,特意选用 了两块小容量的硬盘.一块容量是 6.2GB,接在第一 IDE 接口上,硬盘编号是"0" .另一块容量是 40GB,接在第二 IDE 接口上,硬盘编号是"1" . 现在将 1 号硬盘作为主要操作对象,该硬盘划分成 C、D、E、F、G、H、I 七个逻辑驱 动器,将0号硬盘作为辅助操作对象.1 号硬盘的前五个逻辑驱动器的容量都是 2GB,除了 F 盘使用 NTFS 文件系统,其余的 C、D、E、G 盘都使用 FAT16 文件系统.后两个逻辑驱动 器使用 FAT32 文件系统,H 盘的容量是 10GB,I 盘的容量是 18GB. 下面以 E 盘为例,介绍 FAT16 文件系统的扇区分配. 运行"备份系统扇区数据.EXE"程序,就可以将硬盘上所有的逻辑驱动器的系统扇区数 据,备份到文件中进行保存.每个逻辑驱动器备份两个扇区,其中一个是存储分区表或分区 链表的扇区, 另一个是存储分区引导记录的扇区. 当分区引导记录占用多个扇区时, 如FAT32 和NTFS 文件系统,只备份第一个扇区的数据. 程序运行以后,除了每个逻辑驱动器建立两个备份文件之外,还建立了一个扇区号的备 查文件.目的是当系统引导出现故障时,可以将备份出来的数据,再按照原来的扇区号写回 去,就可以修复硬盘. 扇区号备查文件的内容如下. Boot sector number: 1: 0 2: 63 3: 4192965 4: 4193028 5: 8385930 6: 8385993 7: 12578895 8: 12578958 9: 16771860 10: 16771923 11: 20964825 12: 20964888 第 2章 FAT 文件系统的扇区分配 17 13: 41447700 14: 41447763 根据扇区号备查文件中的记录,可以读出 E 盘存储分区链表的扇区号是"8385930" .再 运行"查看硬盘扇区数据.EXE"程序,将"8385930"号扇区的数据显示在对话框中,程序 的运行结果如图 2-1 所示. 图2-1 因为 E 盘不是第一个逻辑驱动器,所以在图 2-1 所示的对话框显示的数据中,没有主引 导记录,只有分区链表. 找到字节位移 1c6H 开始的 4 字节, 也就是字节编号 455-458, 扇区数据中的字节值是 "3F 00 00 00" .这是一个双字,由于存储时的顺序是低字节在前,高字节在后,因此这个双字写 成十六进制的形式是"0000003fH" ,换算成十进制是"63" . 这个数值是分区前的扇区数, 也可以看作是系统保留的扇区数. 文件系统在检索文件的过程 中, 需要进行扇区号计算时, 是从分区引导记录存储的扇区号开始的, 系统保留扇区不计算在内. 在这 63 个系统保留扇区中,只有最前面的扇区写有数据,其余 62 个扇区空置不用.系 统保留扇区之后,就是存储分区引导记录的扇区.用8385930 加上 63,就得到分区引导记录 的扇区号是"8385993" . 运行"查看硬盘扇区数据.EXE"程序,将"8385993"号扇区的数据显示在对话框中, 程序的运行结果如图 2-2 所示. 在图 2-2 所示的对话框显示的数据中,与当前讨论的问题相关的是 BPB 表,其他的内容 不在本书讨论的范围. 解读 E 盘BPB 表的内容,可以参考第 1 章中的表 1-2 来进行.为了简化叙述的过程,在 描述扇区中某一个字节的位置时,只使用字节编号,暂时就不再使用字节位移的概念了. 现在找到第 23 字节开始的两字节,存储在扇区中的数据是"00 01" ,也就是"0100H" , NTFS 文件系统扇区存储探秘 9 18 十进制是"256" .这一个字段的值,记录的是每个 FAT 表占用的扇区数. 图2-2 先读出第一 FAT 表的第一个扇区, 因为 FAT16 文件系统的分区引导记录只占用 1 个扇区, 而紧接在分区引导记录之后的就是 FAT 表,所以第一 FAT 表的首扇区号是"8385993"加上 1,即"8385994" . 运行"查看硬盘扇区数据.EXE"程序,将"8385994"号扇区的数据显示在对话框中, 程序的运行结果如图 2-3 所示. 图2-3 第 2章 FAT 文件系统的扇区分配 19 在第 1 章中曾经介绍过,FAT16 文件系统和 FAT32 文件系统有一个共同的特点,它们的 FAT 表的首扇区的前两字节是 F8 FF,图2-3 所示的对话框显示的数据符合这个特征. 用第一 FAT 表的首扇区号加上每个 FAT 表占用的扇区数,就是第二 FAT 表的首扇区号. 具体计算方法是 8385994+256=8386250. 运行"查看硬盘扇区数据.EXE"程序,将"8386250"号扇区的数据显示在对话框中, 程序的运行结果如图 2-4 所示. 图2-4 将图 2-4 所示的对话框显示的数据与图 2-3 所示数据比较一下,可以发现它们完全相同. 因此当第一 FAT 表意外损坏时,可以将第二 FAT 表的数据拷贝到第一 FAT 表相对应的扇区 中去,覆盖损坏的数据,就可以修复文件系统. 接下来继续计算文件目录表 FDT 的扇区地址. 将第二 FAT 表的首扇区号, 加上每个 FAT 表占用的扇区数,就是 FDT 的首扇区号,具体计算方法是 8386250+256=8386506. 运行"查看硬盘扇区数据.EXE"程序,将"8386506"号扇区的数据显示在对话框中. 可是 FDT 表的首扇区不象 FAT 表的首扇区那样,有一个"F8 FF"的判断标志,如何验证显 示的就是首扇区呢?为了消除这个疑问,可以在显示了"8386506"号扇区的数据以后,再打 开一个对话框,显示的是其前一个扇区,即"8386505"号扇区的数据.通过两个对话框数据 的比较,就能验证这个问题,程序的运行结果如图 2-5 所示. 如图 2-5 所示,左边的对话框显示的是"8386505"号扇区的数据,右边的对话框显示的 是"8386506"号扇区的数据.因为"8386505"号扇区属于第二 FAT 表的最后一个扇区,而 一般情况下 FAT 表不会被写满,所以该扇区的数据为 0.由此可以验证出, "8386506"号扇 区确是 FDT 表的首扇区. NTFS 文件系统扇区存储探秘 9 20 图2-5 如果将 "8386506"号扇区的数据用字符方式显示出来,就能观察到存储在 E 盘的部分 目录或文件名.在WINDOWS 2000 的32 位图形界面下,有些特殊字符不容易显示,使用辅 助的 16 位程序,显示效果要好一些.打开 WINDOWS 2000 的"命令提示符"窗口,在命令 行运行程序 READSF.EXE,显示效果如图 2-6 所示. 图2-6 现在将图 2-6 的截图画面解释一下.执行程序时在命令行输入"readsf /rc",readsf 是可执 行文件名,/rc 是命令行开关,设定程序用字符方式显示文件内容.回车后程序显示提示行 "Enter file name : " ,输入需要显示数据的文件名"fdtfile",该文件中备份的是"8386506" 号扇区的数据,是由"查看硬盘扇区数据.EXE"程序建立的. 在显示的字符内容中,上面几行的第一个字符都是"σ" ,这个 ASCII 字符的值是 e5H, 表示原来的文件已被删除. 下面有几行显示出目前存储的目录或文件名, 如在第 11 行显示的 第 2章 FAT 文件系统的扇区分配 21 "NTCPP"就是一个目录名. 最后计算数据区 DATA 的首扇区地址.因为 FAT16 文件系统的 FDT 表占用固定的 32 个 扇区,所以用 FDT 表的首扇区号加上 32,就是数据区的首扇区号,计算结果是"8386538" . 为了验证这种推导是否正确,仍然采用前面的方法,将其前一个扇区的数据并列显示在对话 框中加以比较.程序的运行界面如图 2-7 所示. 图2-7 如图 2-7 所示,左边的对话框显示的是"8386537"号扇区的数据,右边的对话框显示的 是"8386538"号扇区的数据.因为"8386537"号扇区属于 FDT 表的最后一个扇区,而一般 情况下 FDT 表不会被写满,所以该扇区的数据为 0.由此可以验证, "8386538"号扇区确实 是数据区 DATA 的首扇区. 2.3 FAT32 的扇区分配 FAT32 文件系统可以认为是扩展了的 FAT16 文件系统,因为它的数据结构基本上与 FAT16 文件系统相同.如FAT 表的结构是相同的,只不过簇登记项使用了 32 位的标识符; 文件目录登记项的字段记录基本是一样的,只不过没有放在固定的 FDT 表中,而是存储在数 据区中. 这种扩充是计算机技术飞速发展的需要, 其中最主要的原因是硬盘容量的快速增长. FAT32 文件系统的扇区分配与 FAT16 文件系统相比较,有一些地方不相同,主要表现在 以下几个方面. (1)FAT32 文件系统使用 32 位簇标识符,但保留了高 4 位,实际上只有 28 位簇标识符, 可以访问 228 个簇.而FAT16 文件系统使用 16 位簇标识符,只能访问 216 个簇. (2)由于每个簇占用的扇区数的减少,使得簇的数量大大增加,因此每个 FAT 表占用的 扇区数也大大增加了. NTFS 文件系统扇区存储探秘 9 22 (3)FAT32 文件系统没有固定的 FDT 表,将文件和目录登记项都作为数据对待,与其他 数据一样存储在数据区 DATA 中. (4)分区引导记录占用 6 个扇区,并且有两个相同的拷贝,共占用 12 个扇区.FAT 表之 前的保留扇区数增加到 32 个. FAT32 文件系统的扇区分配如表 2-2 所示. 表2-2 FAT32 文件系统的扇区分配 分区表或分区链表 1 个扇区 保留扇区 共63 个扇区(包括上面的 1 个扇区) 分区引导记录 1 6 个扇区 分区引导记录 2 6 个扇区 FAT1 扇区数由分区大小而定 FAT2 同FAT1 DATA 扇区按簇管理 2.4 FAT32 扇区寻址实例分析 现在以作者的 1 号硬盘中的 H 盘为例, 说明对 FAT32 文件系统各部分扇区的寻址计算方法. 根据 2.2 节中的扇区号备查文件记录,可以读出 H 盘存储分区链表的扇区号.因为每一 个逻辑驱动器备份两个扇区数据,所以与 H 盘对应的扇区应该是第 11 和第 12 个记录.第11 个 记录是分区链表扇区号,读出其值是"20964825" ,第12 个记录是分区引导记录的首扇区号. 运行"查看硬盘扇区数据.EXE"程序,将"20964825"号扇区的数据显示在对话框中, 程序的运行结果如图 2-8 所示. 图2-8 第 2章 FAT 文件系统的扇区分配 23 因为 H 盘不是第一个逻辑驱动器,所以在图 2-8 所示对话框显示的数据中,没有主引导 记录,只有分区链表. 找到字节位移 1c6H 开始的 4 字节, 也就是字节编号 455-458, 扇区数据中的字节值是 "3F 00 00 00" ,换算成十进制是"63" . 这个数值是系统隐藏的扇区数,用20964825 加上 63,就得到分区引导记录的首扇区号 是"20964888" . 运行"查看硬盘扇区数据.EXE"程序,将"20964888"号扇区的数据显示在对话框中, 程序的运行结果如图 2-9 所示. 图2-9 FAT32 文件系统的分区引导记录有两个相同的拷贝,每个拷贝占用 6 个扇区.所以将扇 区号 20964888 加上 6,就得到第二份拷贝的首扇区号是"20964894" . 运行"查看硬盘扇区数据.EXE"程序,将"20964894"号扇区的数据显示在对话框中, 程序的运行结果如图 2-10 所示. 将图 2-9 所示的对话框与图 2-10 所示的对话框的内容比较一下,可以发现它们完全 一样. 现在计算第一 FAT 表的首扇区地址.前面曾讲过,FAT32 文件系统的分区引导记录一共 保留了 32 个扇区.所以用分区引导记录的首扇区号加上 32,就得到第一 FAT 表的首扇区地 址,计算方法是 20964888+32=20964920. NTFS 文件系统扇区存储探秘 9 24 图2-10 运行"查看硬盘扇区数据.EXE"程序,将"20964920"号扇区的数据显示在对话框中, 程序的运行结果如图 2-11 所示. 图2-11 在图 2-11 所示的对话框显示的数据中,前两个字节的值是"F8 FF" ,这是 FAT 表的首扇 第 2章 FAT 文件系统的扇区分配 25 区标志,不管是 FAT16 文件系统,还是 FAT32 文件系统,都具有这种扇区特征. 要继续计算第二 FAT 表的首扇区地址, 首先必须根据某一个字段值计算出每个 FAT 表占 用的扇区数. 参考第 1 章中表 1-3 的内容,知道在 FAT32 文件系统的 BPB 表中,每个 FAT 表占用的 扇区数,记录在分区引导记录扇区中的第 37-40 的4字节中. 在图 2-9 或图 2-10 中,读出该字段的值是"0D 27 00 00" ,十六进制是"270dH" ,十进 制是"9997" .于是就得到第二 FAT 表首扇区地址的计算方法是 20964920+9997=20974917. 运行"查看硬盘扇区数据.EXE"程序,将"20974917"号扇区的数据显示在对话框中, 程序的运行结果如图 2-12 所示. 图2-12 将图 2-11 所示的对话框与图 2-12 所示的对话框中显示的数据比较一下,可以发现它们 完全相同. 因为 FAT32 文件系统没有 FDT 表,所以找到第二 FAT 表以后,最后查找的就是数据区 DATA 了.用第二 FAT 表的首扇区号,加上每个 FAT 表占用的扇区数,就得到数据区的首扇 区地址.计算方法是 20974917+9997=20984914. 运行"查看硬盘扇区数据.EXE"程序,将"20984914"号扇区的数据显示在对话框中. 为了验证该扇区是 DATA 的首扇区,仍然采用以前的方法,将其前一个扇区的数据并列显示 出来,进行比较判断.程序的运行结果如图 2-13 所示. 如图 2-13 所示,左边对话框显示的是前一个扇区的数据,全部字节都是 0,由此可以验 证计算结果是正确的. NTFS 文件系统扇区存储探秘 9 26 图2-13 前面曾讲过,FAT32 文件系统将文件目录登记项作为数据对待,也存储在数据区中,存 储格式与 FAT16 基本相同.现在将图 2-13 右边对话框中的数据,用字符方式显示出来验证 一下.为了使字符显示的效果好一些,可以运行 16 位程序 READSF.EXE,程序运行后的显 示界面如图 2-14 所示. 图2-14
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • mac格式转成fat32  hfs格式转成fat32  c盘fat32转换ntfs格式  c盘转换为fat32格式  c盘格式fat32  c盘fat32转ntfs格式  c盘格式为fat32  如何将exfat转成fat32  如何将fat32转成ntfs  怎么将fat32转成ntfs