登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

梦想之鹰的天空

天高任鸟飞......放飞....心情..........放飞.....梦想

 
 
 

日志

 
 

FAT16/FAT32/NTFS文件系统介绍  

2008-04-09 09:20:47|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在开发最初的个人计算机时,人们用180KB的软磁盘,不久便采用360KB的双面磁盘。为了组织这些存储设备上数据,最初的DOS系统开发者设计一个表来指示哪个扇区属于哪些文件,以及哪些扇区空闲,这样操作系统可以最大限度地利用这些磁盘空间,使文件可以存储在不连续的扇区上。文件数据可以分散有组织地存储在磁盘的不同扇区,这称为文件分割。

由于在360KB磁盘上有720个扇区,因此,表要做得足够大以能标识每个扇区,并预留一些空间以备未来采用更大存储空间的磁盘。表中的每个记录只用一个字节,这样只能有256个可能值,不能满足这么多扇区的需要。如果采用两个字节则最多可以有65,536个记录,但这样将浪费磁盘空间。因此,综合这两种情况,决定采用12位作为表记录的长度来跟踪磁盘上扇区的利用情况。采用12位长度可以有4,096个可能值,如果每个表记录对应一个512字节扇区,那么这个FAT表可以处理高达2MB存储容量的存储设备。

但要从这么长的表中得到需要的信息将花太长时间,因此,人们引入了簇(cluster)的概念。这使设备的最小存储单元从单个扇区增加到固定数量扇区,这些固定数量扇区称为簇。对于180KB磁盘,簇的大小为两个扇区(1,024字节)。因此,如果要保存一个500字节的文件,将占用磁盘上1,024个字节。这看上去会浪费,但实际上簇的概念在存储大文件时效果很好,而实际上多数系统和用户文件都是较大的。表1列出FAT所能代表簇的最大数字。

簇的概念FAT16/FAT32/NTFS文件系统介绍 - 梦想之鹰 - 梦想之鹰的天空

磁盘上最小可寻址存储单元称为扇区,通常每个扇区为512个字节(或字符)。由于多数文件比扇区大得多,因此如果对一个文件分配最小的存储空间,将使存储器能存储更多数据,这个最小存储空间即称为簇。根据存储设备(磁盘、闪卡和硬盘)的容量,簇的大小可以不同以使存储空间得到最有效的应用。在早期的360KB磁盘上,簇大小为2个扇区(1,024字节);第一批的10MB硬盘的簇大小增加到8个扇区(4,096字节);现在的小型闪存设备上的典型簇大小是8KB或16KB。2GB以上的硬盘驱动器有32KB的簇。表2列出在给定簇大小和FAT类型的最大分区。

为什么采用簇呢?通常,存储设备上的空间分配是随机的。在一个新存储设备上,文件连续存储,并知道开始和结束扇区和长度,在读取时可以根据这些信息重新得到所存储的文件。但是,过一段时间后,有些文件将会被擦掉,同时可能有些文件增大,这时不能保证同一个文件存储在连续的一系列扇区里。因此,需要一种方法来辨别哪个扇区被分配到某些文件,以及还有哪些扇区可用。这时可以采用一种表结构来实现这种功能,使每个扇区对应一个表记录。然而,由于大多数文件存储在多个扇区,一个记录对应一个扇区的作法将造成一些浪费。因此,采用每个记录代表一个固定数量扇区将更有意义,这个固定扇区被称为簇。

给文件分配扇区

如果给一个文件(簇)分配的最小存储空间大小取决于保存该文件的介质类型,我们必须有一种方法来标明某个簇是否可用或者已分配给一个文件。如果已将一个簇分配给一个文件,我们必须知道这个簇分配给文件的哪部分了,这就是通过一个链接列表来实现,即文件分配表(FAT)。FAT仅仅是一个包含N个整数的列表,N是存储设备上最大的簇数。表中每个记录的位数称为FAT大小,是12、16或32三个数之一。早期的存储设备使用12位(1.5字节)FAT以减少浪费,12位可以提供4,096个簇。假定一个簇具有两个扇区(1,024字节),则代表存储设备将近有4.2MB存储容量。更大的簇就能实现更大的存储空间,但是在存储较小文件时,由于簇没有完全装满而将造成存储空间的浪费。

操作系统根据表现整个磁盘空间所需要的簇数量来确定使用多大的FAT。如果磁盘要求的簇少于4,096个,则可以使用12位FAT;如果小于65,536但大于4,096个簇,就使用16位FAT;否则,必须采用32位FAT。在存储设备的第一个扇区内以数据列表的形式定义了簇的大小,该数据列表被称为BIOS参数块。在系统引导期间操作系统可以读该扇区,这样就能设定如何从存储设备中读取文件。

FAT是一种链接列表,链接列表中相关记录之间互相指向对方。在存储设备目录中包含了FAT表名称、该文件大小和分配给该文件的第一个簇的编号。存储该文件的第一个簇所对应的表记录中包含了该文件的第二个簇号码。同样,第二个簇对应的记录里包含有存储该文件的第三个簇编号,以此类推直到该文件的最后一个簇。在新存储设备上存储的第一个文件将保存在连续的簇内,因此第一个簇会指向第二个,第二个指向第三个,如此类推。

实际上,第一个簇(簇0)总是保留用于存储操作系统信息、根目录和两份FAT。系统建立两份FAT,其目的是在当修改其中一个时如果系统发生中断(崩溃),另一份还完整无缺,恢复程序会检查FAT并使用这份FAT来恢复。

FAT的作用

那么FAT的重要意义是什么呢?当前的闪存设备使用12位FAT或16位FAT,数码相机和MP3播放器被设计成利用这种表结构进行读写。随着4GB微硬盘逐渐进入实际应用,16位FAT将不能够满足这种硬盘的需求,因为16位FAT只能实现65,536个簇,对于最大的32K字节的簇而言只能提供最大2.14GB的容量。对于更大容量存储设备有两个解决方案,即将FAT增加到32位或者将驱动器分成多个区。

簇的概念FAT16/FAT32/NTFS文件系统介绍 - 梦想之鹰 - 梦想之鹰的天空

存储器分区

一个存储设备可以分成多个区(其中每个区看起来像单独的存储设备),每个区有自己的目录和FAT。大多数工程师在自己的PC硬盘上已经体验过多分区,通常仅有一个硬盘的计算机具有“C:”和“D:”盘。

多数便携式设备如数码相机和MP3播放器都没有设计成采用存储器分区,而PDA是真正的计算机,其文件系统程序是按分区来设计的。以数码相机市场为例,存储器必须只有单个分区才能兼容。对用户来说,每个区有自己的逻辑驱动器字母,通常指定为驱动器“C:”、 “D:”和“E:”等。

FAT兼容性

在一个兼容FAT32的主机里可以无缝使用FAT16存储设备,因为支持FAT32的操作系统也支持FAT16。唯一需要注意的是在对FAT16设备重新格式化的时候,有些兼容FAT32的主机(如一些PDA)在没有特别选择下会默认为FAT32格式。第一次对存储设备格式化时,必须认真观察提示以保证用的是FAT16格式,除非你的相机/PDA/MP3播放器支持FAT32。

在一个兼容FAT16的主机里使用FAT32设备会有几个可能结果,最普遍的是在显示屏上显示的“CF错误”指示。如果4GB的存储器在只兼容FAT16的主机里格式化,将可能不出现错误提示,但显示的容量将为2G。通常,不同的程序设计工程师会采用不同的方法来处理这个问题,对于这个特例,其结果不是总可预测的。如果4GB设备是用FAT16来格式化,就能在兼容FAT32的主机里对这个设备重新格式化,只要在格式化期间规定了FAT32。这样,用户可以在兼容FAT32的主机里恢复整个4GB容量。

本文小结

由于相机和MP3播放器在处理多分区上有困难,FAT32是提供它们超过2.14GB存储容量的唯一途径。所以,有些公司推出新的4GB微驱动器在出厂前将采用FAT32格式化。为实现与更多设备的兼容,2GB的微驱动器将继续使用FAT16,其他容量超过2GB的CF设备必须采用FAT32。目前,有几家公司已经在其相机和MP3播放器中支持FAT32,现在多数有CF插槽的PDA都支持FAT32。如果你计划要购买一台新的数码相机或MP3播放器,最好能验证它是否支持FAT32,以便将来与最新的CF存储设备兼容。

NTFS的英文全称为“NT File System”,中文意为NT文件系统,NTFS最大分区上限已达到了2TB(1TB=1024GB),从诞生到现在经历了多个版本,Windows NT4.0中的版本为1.2,Windows 2000为3.0,Windows XP为3.1。如果要查看当前NTFS版本号,只要在命令提示符中输入“fsutil fsinfo ntfsinfo c:”(C为分区盘符)即可看到。
NTFS的四大优点
1.具备错误预警的文件系统
在NTFS分区中,最开始的16个扇区是分区引导扇区,其中保存着分区引导代码,接着就是主文件表(Master File Table,以下简称MFT),但如果它所在的磁盘扇区恰好出现损坏,NTFS文件系统会比较智能地将MFT换到硬盘的其他扇区,保证了文件系统的正常使用,也就是保证了Windows的正常运行。而以前的FAT16和FAT32的FAT(文件分配表)则只能固定在分区引导扇区的后面,一旦遇到扇区损坏,那么整个文件系统就要瘫痪。
但这种智能移动MFT的做法当然并非十全十美,如果分区引导代码中指向MFT的部分出现错误,那么NTFS文件系统便会不知道到哪里寻找MFT,从而会报告“磁盘没有格式化”这样的错误信息。为了避免这样的问题发生,分区引导代码中会包含一段校验程序,专门负责侦错。
2.文件读取速度更高效
恐怕很多人都听说NTFS文件系统在安全性方面有很多新功能,但你可否知道:NTFS在文件处理速度上也比FAT32大有提升呢?
对DOS略知一二的读者一定熟悉文件的各种属性:只读、隐藏、系统等。在NTFS文件系统中,这些属性都还存在,但有了很大不同。在这里,一切东西都是一种属性,就连文件内容也是一种属性。这些属性的列表不是固定的,可以随时增加,这也就是为什么你会在NTFS分区上看到文件有更多的属性(见图2 24rntfs02)。
NTFS文件系统中的文件属性可以分成两种:常驻属性和非常驻属性,常驻属性直接保存在MFT中,像文件名和相关时间信息(例如创建时间、修改时间等)永远属于常驻属性,非常驻属性则保存在MFT之外,但会使用一种复杂的索引方式来进行指示。如果文件或文件夹小于1500字节(其实我们的电脑中有相当多这样大小的文件或文件夹),那么它们的所有属性,包括内容都会常驻在MFT中,而MFT是Windows一启动就会载入到内存中的,这样当你查看这些文件或文件夹时,其实它们的内容早已在缓存中了,自然大大提高了文件和文件夹的访问速度。
3.磁盘自我修复功能
NTFS利用一种“自我疗伤”的系统,可以对硬盘上的逻辑错误和物理错误进行自动侦测和修复。在FAT16和FAT32时代,我们需要借助Scandisk这个程序来标记磁盘上的坏扇区,但当发现错误时,数据往往已经被写在了坏的扇区上了,损失已经造成。
NTFS文件系统则不然,每次读写时,它都会检查扇区正确与否。当读取时发现错误,NTFS会报告这个错误;当向磁盘写文件时发现错误,NTFS将会十分智能地换一个完好位置存储数据,操作不会受到任何影响。在这两种情况下,NTFS都会在坏扇区上作标记,以防今后被使用。这种工作模式可以使磁盘错误可以较早地被发现,避免灾难性的事故发生。
有些人发现当把磁盘转换为NTFS文件系统后,用磁盘扫描程序就很难发现磁盘错误了。经过前面的介绍,你知道这是为什么了吗?
4.事件日志功能
在NTFS文件系统中,任何操作都可以被看成是一个“事件”。比如将一个文件从C盘复制到D盘,整个复制过程就是一个事件。事件日志一直监督着整个操作,当它在目标地——D盘发现了完整文件,就会记录下一个“已完成”的标记。假如复制中途断电,事件日志中就不会记录“已完成”,NTFS可以在来电后重新完成刚才的事件。事件日志的作用不在于它能挽回损失,而在于它监督所有事件,从而让系统永远知道完成了哪些任务,那些任务还没有完成,保证系统不会因为断电等突发事件发生紊乱,最大程度降低了破坏性。

  评论这张
 
阅读(690)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018