许多曾尝试过NTFS的朋友抱怨,他们根本感觉不到NTFS所带来的性能提升,甚至觉得适得其反。那么NTFS与FAT究竟是否存在性能差异,有的话又是怎么形成的?要了解这个问题,就必须了解NTFS与FAT的组织结构。
分区引导扇区 文件分配表 文件分配表的备份 根文件夹 其他文件和文件夹
图1:FAT文件系统组织示意图
FAT下是为小磁盘及简单的目录结构而设计的文件系统(图1),因此其文件系统组织方法也通过简单的文件分配表(File Allocation Table,简称FAT)完成。它被放在磁盘的引导扇区后面,为了,紧接着是它的一份拷贝;在文件分配表后面是根文件夹,其中包含了分区根目录下所有文件和文件夹的入口(你可以把它看作是“我的电脑”中的某个磁盘符)。根文件夹之后为其它文件和文件夹,文件或文件夹的存放并没有什么规律,每个文件完全占用 1至多个簇,如果某个簇不是该文件的最后一个簇,则应包含下一个簇的位置信息,否则会有结束簇的标志 ( OxFFFF )。文件的名称和起始簇则记录在前面的文件分配表中,通过此表中某个文件起始簇的位置找到起始簇,而文件的其余簇则是依此形成一条链带——FAT 就是依靠这种链式存取及文件分配表来管理整个磁盘分区的。
分区引导扇区 MFT表 系统文件 文件区域
图2:NTFS文件系统组织图
NTFS的管理方式可以说简单而又强大。总的来说, NTFS将整个磁盘分区上每件事物都看作一个文件,而文件的相关事物又视为一个属性,比如数据属性、文件名属性等。整个NTFS分区上每个扇区都被分配属于某些特殊文件,甚至描述文件系统本身的信息(元数据)也是一个文件。将分区格式化为 NTFS 后(图2),就会生成若干不可见的NTFS系统文件以及一个特殊文件“Master File Table " (MFT,主文件表)。MFT亦有镜像文件,其存放位置记录在引导扇区中,而引导扇区又会有一个副本被放置在磁盘分区的尾扇区中,这些都给NTFS的稳定性奠定了基础。MFT放在引导扇区后面,与简单的FAT相比,M FT几乎相当于小型数据库文件。M FT中最开始的16条记录中存放了特殊的信息,从第17条记录开始,则全部用于记录磁盘分区上的文件和文件夹(同样被NTFS视作1个文件)。MFT为每个文件夹都分配一个固定空间,文件的属性都写在这个固定的空间中。小的文件和文件夹(≤1500字节)可以完全被包含在MFT记录中(图3),而大的则使用“B-树”(详见以下名词解释)索引方式来指示扩展的MFT外部信息。NTFS就这样依靠主文件表的详细记录来管理整个磁盘分区。
标准信息 文件或目录名 描述 数据或索引
图3:MFT中小文件或小目录存放图
簇(Cluster ):这是文件系统中基本的储存单位(不是字节)。在硬盘上,簇的大小和分区大小有关。以FAT16为例,当分区容量介于64MB和128MB之间时,每簇有2kB;介于128MB和256MB之间时,每簇有4kB;而当分区容量大于l024MB时,每簇容量将达到32kB以上。此时即使只有1字节的文件在硬盘上也会占用32kB的空间,当然也就造成了硬盘空间的极大浪费。由于NTFS的簇最大只有4kB,因此它是最有效利用磁盘空间的文件系统。
B-树:一种结构划索引方式。比如建立文件A时,文件系统为其创建索引文件B,由于B的规模仍然太大,为进一步提高速度,又建立了索引的索引文件C,以及索引的索引的索引文件D。这又产生了新问题:B、C、D三个索引文件的对象层次不同,结构不同,操作3个索引文件非常繁琐。所以人们研究使用一种特珠的结构来实现多重索引,B-树就是其中比较成功的方法。而NTFS所使用的“B+树”综合索引方式与其非常类似,由于这些索引的具体实施非常复杂,这里就不详述了。
知道了FAT和NTFS的组织结构后,很容易理解正是因为不同的组织管理方式,导致了完全不同的文件操作方式,从而决定了最终的性能差异。例如当访问一个文件时,由于FAT文件系统的文件分配表只列出了每个文件的名称及起始簇,并没有说明这个文件是否存在,而需要通过其所在文件夹的记录来判断,而文件夹的入口又包含在文件分配表的索引中。因此首先要读取文件分配表来确定文件已经存在,然后再次读取文件分配表找到文件的首簇,最后通过链式的检索找到文件所有的存放簇,最终确定后才可以访问。而在NTFS文件系统中,由于任意文件都在MFT中有详细的记录,所以只要读取MFT中的相关记录文件马上可以使用。这就是NTFS在文件操作性能上要好于FAT的根本原因。事实上, NTFS不断引入的新特性,如综合索引等,仍在进一步拉大这种差距。从技术角度来说这个差距是巨大的,但为何有些人无法感觉到这种差异甚至有相反的感觉呢?
原因也很简单,绝大多数人的计算机应用环境简单,其磁盘操作主要是单文件的操作。再加上很多人的硬盘远不够大,并发操作量也远不够多,因此NTFS与FAT的单个文件操作速度差异往往仅在毫秒之间.根本无法察觉,但如果是在大型的网络上,访问量很多,文件操作频繁,还存在大量并发操作,这种性能差异就会相当惊人。另一方面随着100GB以上容量的硬盘逐渐成为主流,再加上个人使用电脑同时执行多个任务的机会不断增加,这种差距也会越来越明显。那么觉得 NTFS 文件系统更慢的原因是什么呢?
NTFS的索引非常详细,尽管很利于查找文件,但相当于小型数据库的索引方式对硬件有较高的硬件要求,而且对于较小的分区上存放较多小文件的情况而言,这种检索方式可能反而没有简单的链式快。最常见的情况就是笔记本用户,特别是前两年,笔记本硬盘的速度很慢,硬盘容量又小,而笔记本的性能又普遍低于台式机很多,所以这种情况下如果采用NTFS分区就可能会感觉慢。笔者个人认为,要想体现NTFS分区的性能优势,至少和FAT持平的话,电脑要有如下水准:硬盘的转速最好为7200r/s, CPU主频不低于700MHz,内存不少于 256MB,单个分区不小于5GB。前两年有不少台式机都有某些指标不能达到这个水平,难怪有人抱怨NTFS不好了。但就目前的硬件水平而言,NTFS的优势会越来越明显。
【责编:admin】
--------------------next---------------------
阅读(376) | 评论(0) | 转发(0) |