第三章 FAT文件系统(1)
3.1文件系统总论本章开始,我们将使用几个章节详细介绍各种文件系统的工作原理及结构布局。由于FAT文件系统是普及面非常广泛的Windows操作系统所使用的一种文件系统,所以我们由FAT文件系统开始。又因为FAT32是目前使用最多的FAT类型文件系统,因此,我们主要以FAT32为对象进行讲解。在正式介绍特定的文件系统前,我们有必要先对文件系统有个大致的了解。
到底什么是文件系统?文件系统就是对数据进行存储与管理的方式。
文件系统是为了长久地存储和访问数据而为用户提供的一种基于文件和目录的存储机制。我们都知道,在使用硬盘存储数据前,首先要进行分区,然后对分区进行格式化。格式化的过程就是在分区内建立一定的文件系统的过程。一个文件系统由系统结构和按一定规则存放的用户数据组成,以使计算机可以找到并访问它们。大多数情况下,文件系统并不依赖于特定的计算机。
文件系统的种类繁多,每种文件系统都有自己特定的结构和管理数据的方式,但所有的文件系统也都有一定的共性。在此,我们简单介绍一下文件系统中的一些基本概念和共性。
1. 数据单元
建立一个文件系统后,就可以进行数据的存储了。数据在写入磁盘或从磁盘读取时每次操作的数据量称为数据单元,它的大小在建立文件系统时确定。数据单元在不同的文件系统中有不同的称呼方式,比如FAT和NTFS文件系统中的“簇”,ExtX中的“块(block)”等,其实都是一种数据单元。一个数据单元由若干个连续的扇区组成,大小总是2的整数次幂个扇区。存储数据时,系统按数据单元为单位为其分配存储空间,也就是说,总是为其分配整数个数据单元大小的空间。
2. 坏数据单元
坏数据单元也就是包含缺陷扇区的数据单元。许多文件系统可以将一个数据单元标记为坏单元,这对于那些没有能力处理错误的老硬盘比较有用。当一个数据单元中出现缺陷扇区时,即使缺陷扇区的数量只有一个,操作系统也会将整个数据单元标记为已损坏,不再分配给文件使用。现在的硬盘可以自己检测到坏扇区的存在并用备用扇区对其进行替换,所以文件系统的这一功能已很少使用。
利用文件系统的坏单元标记功能可以很容易地隐藏数据。许多检查工具并不对文件系统报告的坏单元进行验证以确认其是否真的存在缺陷,因此用户可以手工将一些数据单元添加到坏单元列表中,然后将数据隐藏进这些单元内。但许多数据提取工具支持对坏单元列表进行检测以确认其中是否存在隐藏的数据。
3. 逻辑文件系统地址
前面我们曾经介绍过,磁盘上的一个扇区在不同的情况下会有不同的地址表达形式。比如:
每个扇区都会有一个LBA地址,也就是物理地址。
每个物理卷内的扇区又有一个物理卷地址。
在逻辑卷内部的扇区会有一个逻辑卷地址。
建立了文件系统后,文件系统既使用逻辑卷地址,也使用一种“逻辑文件系统地址”。文件系统存储数据时是以数据单元为存储单位,每个单位被分配一个逻辑文件系统地址。
4. 逻辑文件地址
对于每个文件来讲,将它按所在的文件系统中数据单元的大小为单位进行分割,分割后的每个部分由0开始进行编号,这个编号就是其对应的数据单元的逻辑文件地址。一个文件前后相邻的两个数据单元在物理上的存储地址可能是不连续的,但它的逻辑文件地址却一定是连续的。
5. 分配策略
不同的操作系统在为文件分配存储单元时可能会使用不同的分配方法。通常操作系统会为其分配连续的存储空间,但并不总是能够实现。
提示:当文件无法被分配到连续的存储单元时被称为“片段化”,即产生文件碎片。
为文件分配存储单元时的方法或算法,我们称之为“分配策略”,分配策略通常可以分为三种:第一可用分配策略、下一可用分配策略和最佳分配策略:
(1)第一可用分配策略,即当为一个文件分配了一个存储单元后还需要继续为其分配时,操作系统会重新从文件系统的起始处搜索可以使用的空间。这种分配方式很容易使文件片段化,因为文件并不是被做为整体一次性分配连续存储空间的。
举例来讲,假如有一个文件需要4个存储单元,文件系统内的1、2、3、5、10号存储单元已经有数据,4、6、7、8、9号存储单元空闲,按第一分配策略为这个文件的4个部分分配空间时,分配步骤如下:
步骤1第一部分分配到4号存储单元,如图3.1所示。
图3.1文件第一部分存储在4号存储单元
步骤2为文件的第一部分分配好存储位置后,又从1号存储单元开始向后寻找空位置,找到6号后分配给文件的第二部分,如图3.2所示。
图3.2文件第二部分存储在6号存储单元
步骤3为文件的第二部分分配好存储位置后,又从1号存储单元开始向后寻找空位置,恰好这时2号存储单元的文件内容被删除了,就把2号位置分配给第三部分,如图3.3所示。
图3.3文件第三部分存储在2号存储单元
步骤4为文件的第三部分分配好存储位置后,又从1号存储单元开始向后寻找空位置,找到7号存储单元后分配给第四部分,如图3.4所示。
图3.4文件第四部分存储在7号单元
所以这个文件的4个部分存储的位置就是4-6-2-7。
注意:在这个例子中可以看到,2号存储单元中被删除的数据,很快就被覆盖掉了。因此这种分配策略不只容易使文件片段化,而且也使被删除数据的恢复可能性大大降低。
(2)下一可用分配策略,即为文件分配了一个存储单元后并不再回到卷起始处重新寻找可用空间,而是直接向后进行搜索。对于前面的例子,使用下一可用策略进行分配的结果会是4-6-7-8。如图3.5所示。
图3.5第一可用策略为文件分配的存储单元位置
提示:这种分配策略有助于数据的恢复,因为2号位空出后,除非在向后的搜索过程中没找到足够的分配空间,否则不会很快被覆盖掉。
(3)最佳分配策略,即在为文件分配空间时,会尽可能找到足够的连续空间以避免其片段化。但这种分配策略需要事先知道文件所需要空间的大小,而且如果以后文件增大需要增加分配单元时,新分配的单元有可能处于其它位置而使该文件片段化。对于前面的例子,使用最佳匹配策略分配时,结果则是6-7-8-9。如图3.6所示。
图3.6最佳分配策略为文件分配的存储单元位置
提示:在使用最佳分配策略进行可用空间搜索时,如果没有找到可以存放下整个文件的连续空间,就会使用第一可用或下一可用策略进行分配。
每种操作系统会选择对某文件系统使用何种分配策略,有的文件系统也会指定要求使用哪种分配策略,但一般不会强制执行。
[ 本帖最后由 ttnml 于 2009-2-5 14:28 编辑 ] 好好学习天天向上 问一下,那FAT32系统采用的是哪种策略呢。这个文章没发完吧? 问一下,那FAT32系统采用的是哪种策略呢。这个文章没发完吧?
页:
[1]