[原]在XP横行的年代,为什么还使用FAT32?(稿)

在开始前先将FATNTFS格式的基本设计要素阐释一下。

FATFile Allocating Table)格式是一种为了易用而设计的非常简单的文件系统。它的基本模式是将磁盘划分为许多簇,在簇中相对集中的记录数据。正如它的名字,它使用简单的文件分配链(文件本身记录第一个占用的簇的位置,文件系统驱动通过顺序访问这个簇以下的簇获得文件数据,并通过最后一个含标记的簇获得下一段数据的位置)来记录文件的数据位置。因为FAT的簇分配表的值是有限的,所以FAT的簇大小是随着分区大小而变化的。当分区变大,簇也相应的变大,否则分区的空间无法被完全使用。FAT32在结构上较以往的FAT16FAT12最大的改进就是使用了32位的簇分配表,并且降低了最小簇大小,希望借此来兼容更大的硬盘,同时提高访问效率。实际上,一个FAT32的分区理论上可以有8TB的容量,只不过系统为了别的考虑保留了高四位。除了保存文件,FAT不再具有其他的特性。其缓存能力是依靠系统的统一调配实现的。

NTFS则完全不同,它是一个为了符合现代操作系统要求而专门设计的文件系统。它的基本模式同样是利用簇来集中存储数据,不同点在于把簇按照顺序无限编号,这样簇的大小不再受到分区大小的限制。NTFS的文件分配不再是简单的文件分配链,而是通过一个叫做主控文件表(MFT, Master File Table)的特殊文件夹与文件组来记录一个分区(在NTFS中称为卷,以下一律使用卷这一名词)所有相关的信息,其中主要包括文件夹与文件间的相互关系、卷本身的属性、卷上进行的操作记录、卷上的坏簇、卷的使用情况、卷的特殊属性、卷所含有的引导信息等内容。其次是用户文件相关的信息,其中直接保存一些小文件的分配表(模式如:从m号簇开始n个簇),小目录中包含的文件,以及大目录、大文件的分配起点。与FAT最大不同的是,NTFS会对所有对于分区进行的操作进行记录(称为事务日志),这样可以保证掉电之后文件系统的不一致可以被恢复。除此之外为了性能,NTFS在访问中会自主申请并策划缓存的使用。

其他的细节随着以下的各项比拼详述慢慢道来。

 

 

一、性能

实际上,FAT系统在理论上应该具有很好的性能。一个简单的系统当然应该比复杂系统运行起来快。即便NTFS的目录结构非常优化,但如果仅仅是比较盘上数据访问速度,FAT的简单特性还是有很大的优势。可惜的是,自从硬盘拥有了缓存,FAT的这一优势就被反超了。事实上,NTFS是针对有缓存的硬盘设计的,所以自身能够对盘上缓存获得较高的控制权,并且提供非常“体贴”的缓存服务;另一方面,NTFS驱动能够在系统缓存空间中划分一部分更大的空间以缓存更多的数据操作。最重要的在于,NTFS对于文件访问的缓存有非常优化的设计,基本可以保证缓冲预取命中率在90%以上。而FAT由于本身一致性设计的限制,不能使用太优化的缓冲算法。即便在XP下,也只能享受简单的读写操作排队这样的贫民级缓存服务。

另外,因为更大的簇意味着更连续的数据与更快的访问速度,所以对于一些分区,比如视频采集用的卷和虚拟内存占用的卷上最好使用较大的簇。NTFS可以支持64KB的簇,有些情况下甚至可以使用128KB的簇,而FAT……把分区弄大就可以了……当然前提是你要有足够的钱和一颗顽强的心,原因请看第二部分。

 

 

二、稳定性

前面已经提到,FAT是一个为了存储而存储的文件系统,在设计中根本没有容错性的设计。所以在FAT中遇到神奇的磁盘问题不是难事。典型的例子就是在查看磁盘空间时会发现磁盘已用空间比整个硬盘的空间都大。这是因为在处理文件的盘内移动时没有完整改写源文件夹的数据,使得文件被统计两次,有时甚至更多。另外一种故障是文件夹变成了文件,而里面的文件消失或者出现在根目录下。这个故障的原理非常简单,在写目录时文件指针向前移了一个簇,于是覆盖了文件夹特有的标志。这些小的异常在实际使用中非常容易发生,尤其在磁盘操作非常频繁时。

NTFS中,你几乎可以放心大胆地非正常关机(显然本人强烈不推荐这样做),因为NTFS有一套健全的机制防止数据出现不一致。首先,如前所述,NTFS会记录每一个将要发生的磁盘操作,在真正的操作发生前把这些事务日志记录到硬盘上;在事务结束后NTFS会在日志后作标记,证明每一个操作都已经成功执行,写缓存中不存在待写数据。如果一个事务失败了,或者由于某些原因没有发生,那么事务完成的标记就不会被记录,那么系统会在下次卷自检中发现这一问题,尝试重复未完成的事务以期能够修补不一致;如果尝试并不能简单的成功,则调用CHKDSK对卷进行一致性检查。这种模式虽然有时会丢失尚未写入的数据,但是盘上已有的数据一般不会损坏(即使你的最后操作是覆盖文件,实际上发生的也只是在文件本身的分配表中去掉一部分区域,用别的簇来保存新的数据),有时候这些尚未写入的数据也能通过一些努力(比如有些服务发生的写入事件支持恢复)补齐。

也许有人这时候会说,如果MFT这样重要的东西损坏了怎么办?那岂不是连日志也坏了?这样的故障几率也是相当小的。MFT本身就保存有自己的一份备份,同时系统会在磁盘操作中定期对MFT进行镜像备份,一般一个卷上存在两个MFT镜像,一个在中部,一个在尾部(均为相对的),也就是说,MFT这样一个部分至少有六份可用。如果这些全都被破坏掉了,那FAT卷一定已经连格式都无法辨别了吧……

 

 

三、易用性

事实上这一问题上仁者见仁、智者见智。有人说,功能简单即是易用;有人说,高级功能无需挂载第三方软件即是易用。我个人比较赞同后者。或许有的初级用户认为NTFS中的配额、索引、Unicode字符、长文件名、硬接入点(将磁盘载入特定空文件夹)等等高级功能没有意义,那么相信对于一些有特殊要求的用户这样的内建功能还是很吸引人的。至少对于绝大多数应用,足够了。

 

 

四、安全性

安全性应该算是FAT软肋上的伤疤。稳定性是安全性的基础,FAT没有稳定性可言;而安全性上就更是毫无建树了。NTFS依靠NT核心的安全性优势,可以为盘上任意一个文件设定详尽的访问策略。更为有效的是NTFS内建的EFSEncrypted File System),它通过RSA算法(不同于前段时间被宣布存在可靠碰撞的MD5,目前这一算法还尚未发现有意义的破解方法)对文件进行可恢复加密,强度一般使用2048位,如果有特殊需要还可以使用4096位。最后,系统还会使用MD5产生校验和,以保证密文的完整性。破解这样加密的文件,在时间上几乎是不可能的。

 

 

五、杂项高级功能

FAT没有杂项功能。

NTFS除了前面所说的一些特性,比如索引(通过对文件归档以加快内容检索的速度)、配额(限制某一用户的可用磁盘空间)等,还支持简单卷(软件实现的RAID0)、条带卷(软件上实现RAID3),以及数据压缩(内部自动压缩,在对用户透明的情况下实现减少空间的占用)、稀疏文件(适合BTP2P软件预分配,自动把连续的0数据用一个标志簇代替以减少空间的占用)。

 

 

P.S. XP下转换磁盘的方法:“开始”-〉“运行”-cmd-convert X: /FS:NTFS /X

如有需要可以放弃安全功能,使用参数:/No Security。建议在使用后尽快重启计算机。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值