微软
视窗
操作系统中,有两种文件系统:
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 。
最新版本的 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 可以以用户或者卷为单位,提供硬性限制和警告两种类型的功能。
尽管 NTFS 有一个名为 $QUOTA 的文件,这是管理磁盘配额的元数据文件的名字,从 Windows NT 3.5 开始,配额都不是缺省的,直到 Windows 2000 ( NTFS 5 )出现,这一情况才有所改变。磁盘配额可以监控并限制用户对磁盘空间的使用。 NTFS 5 中的 Quotas 可以以用户或者卷为单位,提供硬性限制和警告两种类型的功能。
n
Volume Shadow Services
Windows Server 2003 ( NTFS 5.1 )中提供了为数据创建快照的功能,即使当文件打开的时候该功能也可以使用。这一功能让备份和数据恢复的工作变得更加简单可靠。
Windows Server 2003 ( NTFS 5.1 )中提供了为数据创建快照的功能,即使当文件打开的时候该功能也可以使用。这一功能让备份和数据恢复的工作变得更加简单可靠。
n
Reparse Points
在 NTFS 5.0 及以上版本中, reparse point 是用户定义数据,包括 Volume Mount Points 和 Junction 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 ” (硬链接)的概念,它允许单一文件被多个目录引用。但是和符号链接不同的是:在硬链接被解除后,该文件可以被删除。
对于 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 引入了稀疏文件这一概念,它允许程序用小块的数据存储非常大的文件。一些人认为稀疏文件这一功能和卷压缩非常类似,但是对性能却没有影响。
Windows 2000 的 NTFS 5.0 引入了稀疏文件这一概念,它允许程序用小块的数据存储非常大的文件。一些人认为稀疏文件这一功能和卷压缩非常类似,但是对性能却没有影响。
n
文件压缩
NTFS 提供了透明的文件压缩服务,它能够帮助降低文件使用的空间。但是,压缩显著增加系统负担,所以在使用之前一定要仔细考虑。而且在簇大小超过 4KB 的 NTFS 卷上不能进行文件压缩。 (本人用 Virtual PC 2007 及 VMware Server 一共创建了 13 个虚拟机,对应 13 个虚拟硬盘, 13 个虚拟机占用磁盘空间 38.4GB ,启用 NTFS 压缩功能将该 13 个虚拟机压缩之后,实际占用磁盘空间 17.3GB ,大大节省了磁盘空间。当然,正如文面提及,系统负载大大加重,开启 RHELAS4 ,在控制台键入命令速度就有很明显下降。为了省空间,这也是没办法的事。
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)
|
转载于:https://blog.51cto.com/xtjjj/191364