微软Windows操作系统中,有两种文件系统:FAT文件系统和NTFS文件系统。在本文中,我会详细介绍微软的NTFS文件系统。
NTFS稳定性和安全性
微软做的很多事情都让他们受尽责备。但是它做的一件非常好的事情就是创建了一个强壮、高效而且可扩展的文件系统。NTFS(New Technology File System)文件系统最早出现在1993年的Windows NT操作系统中,它的出现大幅度地提高了微软原来的FAT文件系统的性能。NTFS是一个日志文件系统,这意味着除了向磁盘中写入信息,该文件系统还会为所发生的所有改变保留一份日志。这一功能让NTFS文件系统在发生错误的时候(比如系统崩溃或电源供应中断)更容易恢复,也让这一系统更加强壮。在这些情况下,NTFS能够很快恢复正常,而且不会丢失任何数据。在很少出错情况下,微软表示只要大概不到1%的概率才你需要运行CHKDSK修复程序来对磁盘卷进行维护。
NTFS另一个引人注目的特点,即良好的安全性是NTFS成为Windows网络中最常用的文件系统的最主要的原因。NTFS的安全系统非常强大,可以对文件系统中对象的访问权限(允许或禁止)做非常精细的设置。NTFS Master File Table (MFT)中包含了一个NTFS分区中所有文件的记录。每个MFT入口都有一个特殊的metadata标签,叫做SD(security descriptor,安全描述符),这个标签中包含了谁可以访问这个文件或文件夹的所有控制信息。每个SD标签都包含了一个用户列表,这个列表被称为Access Control List (ACL访问控制列表),只有包含在这个列表里的用户才被允许访问该对象。
请注意上面一段中出现的“metadata”一词。NTFS是一个元数据驱动的系统。事实上,当你第一次创建NTFS分区的时候,很多元数据文件就被创建了,每个元数据文件都帮助跟踪文件系统中某个特定的对象。我在上一段中提到每个NTFS分区都会有一个Master File Table,这个关联文件被命名为$MFT。事实上,NTFS创建了两个MFT文件。第一个是$MFT被存放在NTFS分区的开头。为了增强可靠性,NTFS分区还有一个名为$MFTMirr.的MTF文件。在Windows NT 4.0及其后的版本中,这个文件都被存放在NTFS分区的末尾。在Windows NT 3.51及以前的版本中,这个MFT镜像文件被存放在分区的中间。之所以设计这样一个文件是为了防止主MFT文件损坏造成损失,这也就是为什么NTFS要把这个镜像文件尽可能存放在远离主MFT文件的地方的原因了。
让我们回到元数据——NTFS使用元数据和元数据文件来描述文件系统的组成,这种做法可以非常容易地为文件系统增加功能,并且保持对旧版本NTFS的向下兼容。
NTFS簇大小
在磁盘空间使用方面,NTFS的效率非常高。例如,在FAT文件系统中,根据磁盘空间大小的不同,簇的大小从2 KB到32 KB不等。NTFS的簇大小也会随着磁盘空间的增长而增长,但是在Windows NT 3.51及以后的版本中,簇的大小最高只能达到4KB。不幸的是,由于需要同时读取太多的簇,或者对太多的簇进行写入,簇太小可能导致性能下降。对于今天的超高速磁盘系统来说这并不是一个大问题,但是在速度为王的环境中(比如大量数据处理的环境),簇的大小可能达到64 KB。这会导致更多磁盘空间的浪费,而且还会丧失压缩之类的功能,但是会提高性能。要注意,在NTFS 1.0(Windows NT 3.1)中,簇的大小默认为4 KB,随着磁盘容量的扩大,簇大小可以达到32 KB。
下面的表格显示了NTFS卷默认的簇大小。你可以想象,今天的硬盘默认簇的大小都是4KB。
驱动器大小 |
簇大小 |
7 MB-12 MB |
512 bytes |
513 MB-1,024 MB |
1 KB |
1,025 MB-2 GB |
2 KB |
2 GB-2 TB |
2 GB-2 TB |