Windows NT中的NTFS知识讲解

运维 系统运维
在Windows NT最耀眼的技术就是NTFS,本文主要向大家介绍在Windows NT中的NTFS到底是怎么回事。NTFS取代了文件分配表(FAT)文件系统,为Microsoft的Windows系列操作系统提供文件系统。

Windows NT引入的新概念

(1)NTFS(Windows NT File System):Windows NT采用的新型文件系统。可提供安全存取控制及容错能力,在大容量磁盘上,它的效率比FAT高。
(2)共享:对网络资源设置一定的权限许可,没有得到权限许可,就无法访问网络资源。
(3)用户账户(User Account):要想使用网络资源,必须有用户账户。Windows NT对用户和服务程序,都要求提供合法账户。专为应用程序或服务进程创建的账户即服务账户,在系统启动时,服务进程使用服务账户登录以获得在系统中使用资源的权利和权限。普通用户账户由用户登录时提供,用于Windows NT控制该用户在系统中的权利和权限,与服务账户本质上无区别。
(4)域(Domain):是Windows NT中数据安全和集中管理的基本单位。网络由域组成,域具有唯一的名称。域可以看作由运行NT的服务器组成的系统,一组电脑共用相同的账户及安全数据库。
(5)工作群组(Workgroup):一种资源与系统管理皆分散的网络结构。工作群组里,每台电脑之间是对等关系,彼此可以是服务器,也可以当作工作站。
(6)权利(Right):授权某用户可以在系统上执行某些操作。权利用来保护系统整体。
(7)权限(Permission):用来保护特定对象。权限规定可以使用某一对象的用户以及用什么方法使用。
(8)安全审核:Windows NT将记录发生在电脑上各项与安全系统相关的过程。

NTFS是Windows NT以及之后的Windows 2000、Windows XP、Windows Server 2003、Windows Server 2008、Windows Vista和Windows 7的标准文件系统。

NTFS取代了文件分配表(FAT)文件系统,为Microsoft的Windows系列操作系统提供文件系统。NTFS对FAT和HPFS(高性能文件系统)作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能,如访问控制列表(ACL)和文件系统日志。该文件系统的详细定义属于商业秘密 ,Microsoft已经将其注册为知识产权产品。

NTFS的历史

20 世纪 90 年代早期,Microsoft 和 IBM 组建了一个联合计划,目标是创建一个下一代的操作系统。该项目的结果是诞生了 OS/2,但由于 Microsoft 和 IBM 在很多重要问题上不能达成共识而最后分裂, OS/2 至今仍属于 IBM。Microsoft 开始研究 Windows NT。OS/2 的文件系统 HPFS 包含了若干重要功能,而当 Microsoft 开始创建他们自己的新操作系统时,他们的 NTFS 从中借用汲取了很多方面。也许是因为它们有共同的祖先,HPFS 和 NTFS 共享了相同的磁盘分区标识代码(0x07)。共享标识是很不寻常的,因为可用的代码还有很多,其他文件系统都使用它们自己的编号。例如,FAT 拥有超过 9 个编号(FAT12丶FAT16丶FAT32 等等每个都有一个)。用于区分文件系统的算法当遇到代码 0x07 的时候就不得不进行额外的检查。

版本

  1. NTFS 有五个正式发布的版本:
  2. v1.0,随 NT 3.1 一起发布,发布于 1993 年中旬
  3. v1.1,随 NT 3.5 一起发布,发布于 1994 年秋季
  4. v1.2,由 NT 3.51(1995 年中旬)和 NT 4(1996 年中旬)提供(有时候也被称为“NTFS 4.0”,因为操作系统版本是 4.0)
  5. v3.0 来自 Windows 2000(有时称作“NTFS 5.0”)
  6. v3.1 来自 Windows XP(2001 年秋季,有时称作“NTFS 5.1”),Windows Server 2003(2003 年春季,有时称作“NTFS 5.2”), Windows Vista(2005 年中旬,有时称作“NTFS 6.0”)以及 Windows Server 2008(2008 年初)

V1.0 和 V1.1 以及所有以后版本不兼容,也就是说,使用 NT 3.5x 写入的卷无法被 NT 3.1 读取,除非使用 NT 3.5x 光盘更新 NT 3.1,并添加对 FAT 系统的长文件名支持。V1.2 支持压缩文件、命名流、基于 ACL(访问控制列表)的安全性等功能。

V3.0 支持磁盘限额、加密、稀疏文件、重解析点,更新串行数(USN)日志、$Extend 文件夹以及其中的文件,并改进了安全描述符,以便于使用相同安全设置的多个文件共享一个安全描述符。

V3.1 使用冗余 MFT 记录数(用于恢复受损的 MFT 文件)扩展了主文件表(MFT)项

Windows Vista 提供了事务 NTFS、NTFS 符号链接、收缩卷以及自我恢复功能,但这些附加功能由操作系统提供,而非文件系统自身的功能。

NTFS的功能

相对于之前的版本,NTFS v3.0 包含若干新功能:磁盘使用限额、稀疏文件支持、重解析点、分布链接跟踪,以及文件级加密(也即“加密文件系统(EFS)”)。

可选数据流(ADS)

可选数据流允许文件与多个数据流进行关联。例如,一个名为 text.txt 的文件可以包含一个名为 text.txt:secret(格式是“文件名:流名”)的可选数据流,并只允许知道该数据流名称或专门为数据流而设计的浏览程序查看。可选数据流无法从原始文件长度中得知,但会随着对原始文件的 RemoveFile 或 RemoveFileTransacted 调用(以及调用它们的调用),或将原始文件移动/复制到不支持可选数据流的分区(如 FAT 分区、软盘或网络共享位置)上而丢失。可选数据流在多方面有重要用途,但也容易因为被遗忘或未被探测到而白白耗费磁盘空间。

限额

磁盘限额是 NTFS v3 提出的功能。该功能允许计算机管理员在支持该功能的 Windows 版本上为用户允许占用的磁盘空间设置阈值,同时也允许管理员跟踪察看每个用户使用的磁盘空间量。管理员可以为用户设置需要收到警告的磁盘空间使用级别,并当他们超过使用上限时拒绝对磁盘的访问。当 NTFS 的文件压缩启用时,磁盘限额不会影响该功能。当应用程序查询用户可用的剩余磁盘空间时,如果设置了磁盘限额,也会收到限额的数值。

稀疏文件

稀疏文件是包含稀疏数据集的文件,大部分数据为零。许多科学应用程序会创建非常大的稀疏数据集,因此,Microsoft 实现了对稀疏文件的高效存储支持,允许应用程序指定文件的空(零)数据区域。读取稀疏文件的应用程序可以使用常规方法读取数据,操作系统将根据当前位置的偏移量决定需要返回什么数据。当作为压缩文件时,文件的实际大小不会影响对磁盘限额的判断。

重解析点

该功能在 NTFS v3 中可用。该功能将在用户空间中为文件或目录添加一个关联的重解析标记属性。当对象管理器解析文件系统名称并遇到重解析点属性时,它将“重解析”名称,将用户控制的重解析数据传递给所有 Windows 系统加载的文件过滤驱动程序。每个过滤驱动程序都将检查重解析数据,判断是否和该重解析点相关联。如果过滤驱动程序判定匹配,则将拦截文件系统调用,并执行自己的特定功能。重解析点用于实现卷加载点、目录连接、分层存储管理、本机结构存储,以及单实例存储。

卷加载点

类似于 Unix 加载点,是另一个文件系统附加到目录的根位置。在 NTFS 中,该功能允许附加的文件系统无需为每个驱动器分配单独的卷标(如 C: 或 D:)而加载。

目录连接

类似于卷加载点,但 目录连接将对象连接到文件系统中的其他目录而非卷。例如,目录 C:\exampledir 带有一个目录连接属性,链接到 D:\linkeddir,则当用户级别的应用程序访问时,将自动引用到目录 D:\linkeddir。[1]该功能在概念上类似于 Unix 的目录符号链接,只是在 NTFS 中目标必须是另一个目录(典型的 Unix 文件系统允许将符号链接连接到任何其它类型的文件)。

硬链接

原本用于支持 Windows NT 中的 POSIX 子系统。硬链接类似于目录连接,但用于文件而非目录。硬链接只能作用于同一个卷上的文件,因为需要在文件的 MFT 记录中添加附加的文件名记录。短格式(8.3)文件名也被作为不区分目录项的地附加文件名实现。

分层存储管理(HSM)

分层存储管理是一种转移一定时间不用的文件到价值更低的储存介质中的方法。当文件再次被访问时,文件上的重解析点将判定文件需要被使用,并将文件从储存介质中恢复出来。

本机结构存储(NSS)

本机结构存储是一种已经被 Microsoft 终止使用的 ActiveX 文档存储技术。该技术允许 ActiveX 文档 使用和 ActiveX 内部是用的多流格式相同的方式进行储存。系统将加载一个本机结构存储文件系统过滤器以用于为应用程序透明地处理多流格式。当文件被传输到非 NTFS 格式的磁盘卷上时,也将同时将多个流转换为一个流。

卷影复制

卷影复制(VSC)服务通过将新改写的数据复制到卷影(写入时复制)来保存 NTFS 卷上的文件和文件夹的历史版本。当用户请求恢复旧早期版本时,旧的文件数据将会覆盖新的文件数据。该功能也使得数据备份程序可以存档当前系统正在使用的文件。对于负载较重的系统,Microsoft 建议将卷影副本设置到单独的磁盘上,以减小系统主要卷的 I/O 负载。

文件压缩

NTFS 能够使用多种 LZ77 算法(该算法也用于著名的 ZIP 文件格式)压缩文件。尽管对于压缩文件的读写操作是透明的,Microsoft 仍然建议用户避免在服务器系统和保存漫游配置文件的网络共享位置启用压缩,因为压缩会给处理器增加较为明显的负载。

硬盘空间首限的单用户操作系统可以有效地利用 NTFS 压缩。由于在计算机中速度最慢的访问不是 CPU 而是硬盘,因此 NTFS 压缩可以同时提高受限制的、慢速储存空间的空间和速度利用率。当某个程序(通常如下载管理器)无法创建没有内容的配额文件时,NTFS 压缩也可以作为配额文件的替代使用。

单实例存储(SIS)

当若干个不同目录中存有内容相同的文件时,单实例存储允许将相同文件归并到一个单一文件中,并创建对归并后的文件的引用。单实例存储包含一个用于管理复制、修改和归并文件的文件系统过滤器和一个用于搜索需要归并的相同文件的用户空间服务(“groveler”)。单实例存储的主要设计目标是远程安装服务器,这些服务器上往往拥有多个包含许多相同文件的安装镜像,单实例存储可以将它们统一起来。但和硬链接不同,每个文件仍然是独立的,更改任何一个副本都不会影响其它文件。和写入时复制类似,该技术不会立即完成内存复制,直到某个副本被更改。

加密文件系统(EFS)

加密文件系统(EFS)提供对 NTFS 卷上任意文件和文件夹的用户透明的强保护。 加密文件系统与 EFS 服务、Microsoft 的加密应用程序接口(CryptoAPI)以及 EFS 文件运行时库(FSRTL)联合工作。

EFS 使用块对称密钥(也被称为“文件加密密钥(FEK)”)加密文件,这比起使用非对称密钥加密在加密和解密大量数据时消耗的时间较少。该对称密钥使用一个和加密文件的用户相关的公钥加密文件,加密后的数据储存在被加密文件的可选数据流中。当需要解密文件时,文件系统使用用户的密钥解密储存在文件头中的对称密钥,然后使用该对称密钥解密文件。这些操作在文件系统级别完成,因此对用户来说是透明的。同时,为了处理用户丢失密钥的情况,加密文件系统中提供了对附加解密密钥的支持,因此恢复代理在需要时仍然可以访问数据。

符号链接

符号链接是 Windows Vista 提供的功能。符号链接(也称软链接)在客户端进行解析,因此当共享符号链接时,目标会受到客户端的访问限制,而和服务器无关。

事务 NTFS

在 Windows Vista 中,应用程序可以使用事务 NTFS 将一系列对文件的更改归组到一个事务中。事务能够确保所有更改要么同时生效,要么同时作废,并能确保在事务提交完成前,外部应用程序无法获知任何更改。

USN 日志

USN 日志是一项系统管理功能,能够记录卷上文件和文件夹的所有更改。

NTFS的互操作性

NTFS 具体实现的内部细节被保密,因此这导致第三方开发者试图制作处理 NTFS 的工具变得异常困难。

Linux

完整并安全的对 NTFS 的读写功能由 NTFS-3G 驱动程序提供。该驱动程序包含在绝大多数 Linux 发行包 中。同时也存在过时的,大部分仅只读的解决方案:

Linux 内核 2.2:从版本 2.2.0 开始,可以读取 NTFS 分区。

Linux 内核 2.6:包含一个由 Anton Altaparmakov(来自剑桥大学)和 Richard Russon 编写的驱动程序,该驱动程序支持读取文件以及在部分情况下的改写文件和调整文件大小。

NTFSMount:使用 ntfsmount 可以通过一个用户级驱动程序对文件和目录进行有限的读写操作。

NTFS for Linux:由 Paragon 提供的对 NTFS 提供完整读写支持的商用驱动程序。

Captive NTFS:一个使用 Windows 自身的驱动程序“ntfs.sys”并进行简单封装的驱动程序。

请注意,上面所有三个用户级别驱动程序(NTFSMount、NTFS-3G 以及 Captive NTFS)都基于用户空间的文件系统(FUSE),该系统是一个用于在用户空间和内核代码间通讯以获取或保存数据的 Linux 内核模块。技术上面所有的驱动程序(除了 Paragon NTFS for Linux)都是开源(GPL)的。由于 NTFS 内部结构非常复杂,内置的 2.6.14 内核驱动程序和 FUSE 都不允许修改被认为是不安全的卷,以避免发生损坏事故。

NTFS的限制

下面是一些 NTFS 的限制:

保留的文件名

尽管文件系统支持最长 32767 个 Unicode 字符的的路径。每个路径组成部分(目录或文件名)最多可以有 255 个字符长,但不允许使用某些特定名称,因为 NTFS 将元数据储存在通常(尽管是隐藏的,并且大部分不可访问)的文件夹中。同理,用户也不能使用这些名称作为文件名。这些文件都存在于卷的根目录中(名称也仅在根目录中被保留)。被保留的名称有:$MFT、$MFTMirr、$LogFile、$Volume、$AttrDef、.(点)、$Bitmap、$Boot、$BadClus、$Secure、$Upcase,以及 $Extend。(点)和 $Extend 是文件夹,其它项目是文件。

最大卷尺寸

理论上来说,NTFS 的最大尺寸是 264-1 个簇。但是目前在 Windows XP Professional 中实现的 NTFS 卷的最大尺寸是 232-1 个簇。例如,使用大小为 64KiB 的簇,则 NTFS 卷的最大尺寸是 256TiB 减去 64KiB。使用默认的 4KiB 的簇大小,则 NTFS 卷的最大尺寸是 16TiB 减去 4KiB。由于主引导记录(MBR)上的分区表只支持最大 2TiB 的分区,要创建超过 2TiB NTFS 卷,必须使用动态卷或者 GPT 卷。

最大文件尺寸

理论值:16EiB 减去 1KiB(264 − 210 字节)。实际实现:16TiB 减去 64KiB(244 − 216 字节)

可选数据流

Windows 系统调用可能处理,也可能不处理可选数据流。根据操作系统、工具和远程文件系统的情况,文件传输过程可能会无任何提示地丢弃数据流。复制或移动文件的安全方式是使用 BackupRead 和 BackupWrite 系统调用,这些调用允许程序枚举流并验证每个流是否被需要写入目标卷以跳过不需要的流。

最大路径长度

绝对路径最多允许 32767 个字符。相对路径被限制在 255 个字符。

日期范围

NTFS 使用和 Windows NT 相同的计算方式:64 位时间戳,允许范围从 1601年1月到 60056年5月28日,分辨率是每秒钟一百万个计数单位。

责任编辑:张浩 来源: 维基百科
相关推荐

2010-05-12 16:53:19

2010-04-08 15:54:53

NTFS共享设置技巧

2010-04-20 14:06:07

NTFS权限

2013-12-27 10:44:41

ReactOSWindows NT开源操作系统

2010-01-12 14:16:23

Fedora NTFS

2010-04-23 16:51:44

Aix ACL

2012-09-06 15:57:21

Windows NT

2012-09-06 15:59:00

2012-09-06 15:31:51

Windows NT

2009-06-29 10:23:15

Windows 7操作系统微软

2010-05-06 09:26:44

Unix系统

2012-09-06 15:23:17

Windows NT

2010-11-01 01:12:06

Windows NTUnix

2010-11-01 01:25:36

Windows NT

2010-05-24 13:13:25

Swap空间

2010-04-26 13:53:47

Unix Shell

2010-04-20 16:54:01

Windows XP权限

2010-04-19 12:40:00

Unix操作系统

2010-11-01 01:46:46

WIndows NT开发

2011-03-03 13:46:00

NTFS-3G
点赞
收藏

51CTO技术栈公众号