微软 视窗 操作系统中,有两种文件系统: FAT 文件系统和 NTFS 文件系统。本段文字中,旨在讨论微软的 NTFS 文件系统。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

NTFS 稳定性和安全性

微软做的很多事情都让他们受尽责备。但是它做的一件非常好的事情就是创建了一个强壮、高效而且可扩展的文件系统。 NTFS New Technology File System )文件系统最早出现在 1993 年的 Windows NT 操作系统中,它的出现大幅度地提高了微软原来的 FAT 文件系统的性能。 NTFS 是一个日志文件系统,这意味着除了向磁盘中写入信息,该文件系统还会为所发生的所有改变保留一份日志。这一功能让 NTFS 文件系统在发生错误的时候(比如系统崩溃或电源供应中断)更容易恢复,也让这一系统更加强壮。在这些情况下, NTFS 能够很快恢复正常,而且不会丢失任何数据。在很少出错情况下,微软表示只要大概不到 1% 的概率才你需要运行 CHKDSK 修复程序来对磁盘卷进行维护。

NTFS 另一个引人注目的特点,即良好的安全性是 NTFS 成为 Windows 网络中最常用的文件系统的最主要的原因。 NTFS 的安全系统非常强大,可以对文件系统中对象的访问权限(允许或禁止)做非常精细的设置(其精细程度远远超出类 UNIX 的读、写、执行三种粗糙的权限分类,虽然 Linux 提供了 setfacl 命令做更为细致的权限设定,但其细腻程度比起 Windows 文件夹中“安全”选项卡中的“高级”按钮所对应的被称做“ SACL ”来,还是差很远。)。 NTFS Master File Table MFT )中包含了一个 NTFS 分区中所有文件的记录。每个 MFT 入口都有一个特殊的 metadata 标签,叫做 SD security descriptor ,安全描述符),这个标签中包含了谁可以访问这个文件或文件夹的所有控制信息。每个 SD 标签都包含了一个用户列表 ,这个列表被称为 Access Control List (访问控制列表——前文提及的 SACL System Access Control List ,而“安全”选项卡所呈现的是 DACL —— Discretionary Access Control List ),只有包含在这个列表里的用户才被允许访问该对象——没有出现的用户或组将被拒绝,即隐式拒绝;管理员也可以发现操作上一个事实:某用户如果被显式的加入 DACL ,但是将其所有操作权限皆设为拒绝时,该用户名将消失在 DACL 中。

请注意上面一段中出现的 “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

NTFS 有非常好的功能集 —— 也有一些缺点。下面介绍了 NTFS 最常见的一些功能:

n          加密
最新版本的 NTFS 可以在不需要最终用户干预的情况下对磁盘上的文件进行加密。如果你的笔记本被窃, EFS 可以帮助你保护硬盘上的数据不被访问。 Windows 2000 及以后的版本都支持 DESX 加密, Windows XP Windows Server 2003 支持 3DES Windows XP SP1+ Windows Server 2003 还支持 AES

n          磁盘配额
尽管 NTFS 有一个名为 $QUOTA 的文件,这是管理磁盘配额的元数据文件的名字,从 Windows NT 3.5 开始,配额都不是缺省的,直到 Windows 2000 NTFS 5 )出现,这一情况才有所改变。磁盘配额可以监控并限制用户对磁盘空间的使用。 NTFS 5 中的 Quotas 可以以用户或者卷为单位,提供硬性限制和警告两种类型的功能。

n          Volume Shadow Services
Windows Server 2003 NTFS 5.1 )中提供了为数据创建快照的功能,即使当文件打开的时候该功能也可以使用。这一功能让备份和数据恢复的工作变得更加简单可靠。

n          Reparse Points
NTFS 5.0 及以上版本中, reparse point 用户定义数据,包括 Volume Mount Points Junction Points

n          Volume Mount Points
允许不同的卷作为其他卷的子目录被加载

n          Junction Points
对于 UNIX 用户来说,符号链接是大家非常熟悉的了,它们通常是指向文件系统中的其他文件。对于 Windows 来说,情况略有不同。从 Windows 2000 开始, NTFS 支持一类名为 Junction Point symbolic link (符号链接), GUI 仍然不能很好地支持该功能 ,人们经常使用插件来确保该功能能够使用。注意, Windows 的快捷方式和符号链接有所不同,对快捷方式的操作只会影响快捷方式 .lnk 文件 )而不会影响目标文件本身。在 Windows 2000 Windows XP Windows Server 2003 系统中, NTFS Junction Point 只能被用于文件夹和卷(不是独立的文件)。有消息称在 Vista Longhorn Server 中会和 UNIX Linux 一样支持真正符号链接(目前还没有正式的运行在 Vista 平台,故而这一消息目前不便讨论真实性)。应该说明的是, NTFS 还支持 hard links (硬链接)的概念,它允许单一文件被多个目录引用。但是和符号链接不同的是:在硬链接被解除后,该文件可以被删除。

n          稀疏文件 Sparse Files
Windows 2000 NTFS 5.0 引入了稀疏文件这一概念,它允许程序用小块的数据存储非常大的文件。一些人认为稀疏文件这一功能和卷压缩非常类似,但是对性能却没有影响。

n          文件压缩
NTFS 提供了透明的文件压缩服务,它能够帮助降低文件使用的空间。但是,压缩显著增加系统负担,所以在使用之前一定要仔细考虑。而且在簇大小超过 4KB NTFS 卷上不能进行文件压缩。 (本人用 Virtual PC 2007 VMware Server 一共创建了 13 个虚拟机,对应 13 个虚拟硬盘, 13 个虚拟机占用磁盘空间 38.4GB ,启用 NTFS 压缩功能将该 13 个虚拟机压缩之后,实际占用磁盘空间 17.3GB ,大大节省了磁盘空间。当然,正如文面提及,系统负载大大加重,开启 RHELAS4 ,在控制台键入命令速度就有很明显下降。为了省空间,这也是没办法的事。

总结

应该相信微软为未来 Windows 版本中的 NTFS 文件系统留下了很多让人吃惊的功能。此处总结文中提到的相关信息。

最大卷大小(理论值): 16EB w/ 64KB / 16TB w/ 4KB

最大卷大小(实际值): 2TB/256TB >2TB 需要动态卷)

最大文件大小(理论值): 16 EB

最大文件大小(实际值): 16 TB

每卷中文件数量最大值: 4,294,967,295

版本

--

NTFS 4.0

NTFS 5.0

NTFS 5.1

Windows 版本

Windows NT 3.1

Windows NT 3.51/4.0

Windows 2000

Windows XP &Windows 2003

压缩

 

X

X

X

Volume mount points

 

 

X

X

Reparse points

 

 

X

X

Volume Shadow Services

 

 

 

X

磁盘配额

 

 

X

X

DESX 加密

 

 

X

X

3DES 加密

 

 

 

X

AES 加密

 

 

 

X*(XP SP1+, W2K3)