NTFS
维基百科,自由的百科全书
| NTFS | |
| 开发者 | Microsoft |
|---|---|
| 全称 | New Technology File System |
| 发布 | 1993年7月 (Windows NT 3.1) |
| 分区标识 | 0x07 (主引导记录(MBR)) 基本数据分区(BDP) (GUID分区表(GPT)) |
| 结构 | |
| 目录内容 | B+树[1] |
| 文件分配 | Bitmap/Extents |
| 坏块 | $badclus |
| 限制 | |
| 最大文件尺寸 | 264 字节(16 EiB) - 1 KiB [2] |
| 最大文件数量 | 4,294,967,295 (232-1)[2] |
| 最长文件名 | 255 UTF-16 编码单元[3] |
| 最大卷容量 | 264 − 1 簇[2] |
| 文件名字符集 | 在Posix命名空间中,非U+0000 (NUL)和/ (斜杠)的任何UTF-16 字符(大小写敏感)。在Win32命名空间中,非U+0000 (NUL)、/ (斜杠)、\ (反斜杠)、: (冒号)、* (星号)、? (问号)、" (引号)、< (小于号)、> (大于号)和| (竖线(管道符))的任何UTF-16字符(大小写不敏感)。[3] |
| 功能 | |
| 日期记录 | 创建、修改、POSIX 更改、访问 |
| 日期范围 | 1601年1月1日 – 60056年5月28日(文件时间为 64 位数字,计时间隔为 100 纳秒(每秒一百万次),从 1601 年开始持续 58000+ 年) |
| 日期分辨率 | 100ns |
| 岔流 | 是(请参见下面的可选数据流') |
| 属性 | 只读、隐藏、系统、存档、内容未索引、脱机、临时 |
| 文件系统权限 | 访问控制列表(ACL) |
| 透明压缩 | 对每个文件,LZ77(Windows NT 3.51 以上) |
| 透明加密 | 对每个文件 DESX(Windows 2000 以上) Triple DES(Windows XP 以上) 高级加密标准(AES) (Windows XP Service Pack 1、Windows Server 2003 以上) |
| 单一实例存储(SIS) | 是 |
| 操作系统支持 | Windows NT 家族(Windows NT 3.1 到 Windows NT 4.0、Windows 2000、Windows XP、Windows Server 2003、Windows Vista、Windows Server 2008、Windows 7) |
NTFS是Windows NT以及之后的Windows 2000、Windows XP、Windows Server 2003、Windows Server 2008、Windows Vista和Windows 7的标准文件系统。[4]
NTFS取代了文件分配表(FAT)文件系统,为Microsoft的Windows系列操作系统提供文件系统。NTFS对FAT和HPFS(高性能文件系统)作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能,如访问控制列表(ACL)和文件系统日志。该文件系统的详细定义属于商业秘密[5][6][7] ,但 Microsoft 已经将其注册为 知识产权产品。[8][9]
目录 |
[编辑] 歷史
20 世紀 90 年代早期,Microsoft 和 IBM 組建了一個聯合計劃,目標是創建一個下一代的操作系統。該項目的結果是誕生了 OS/2,但由於 Microsoft 和 IBM 在很多重要問題上不能達成共識而最後分裂, OS/2 至今仍屬於 IBM。Microsoft 開始研究 Windows NT。OS/2 的文件系統 HPFS 包含了若干重要功能,而當 Microsoft 開始創建他們自己的新操作系統時,他們的 NTFS 從中借用汲取了很多方面。[10] 也許是因為它們有共同的祖先,HPFS 和 NTFS 共享了相同的磁盤分區標識代碼(0x07)。共享標識是很不尋常的,因為可用的代碼還有很多,其他文件系統都使用它們自己的編號。例如,FAT 擁有超過 9 個編號(FAT12、FAT16、FAT32 等等每個都有一個)。用於區分文件系統的算法當遇到代碼 0x07 的時候就不得不進行額外的檢查。
[编辑] 版本
NTFS 有五个正式发布的版本:
- v1.0,随 NT 3.1 一起发布[來源請求],发布于 1993 年中旬
- v1.1,随 NT 3.5 一起发布[來源請求],发布于 1994 年秋季
- v1.2,由 NT 3.51(1995 年中旬)和 NT 4(1996 年中旬)提供(有时候也被称为“NTFS 4.0”,因为操作系统版本是 4.0)
- v3.0 来自 Windows 2000(有时称作“NTFS 5.0”)
- 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 系统的长文件名支持。[11] V1.2 支持压缩文件、命名流、基于 ACL(访问控制列表)的安全性等功能。[1]
V3.0 支持磁盘限额、加密、稀疏文件、重解析点[來源請求],更新序列数(USN)日志、$Extend 文件夹以及其中的文件,并改进了安全描述符,以便于使用相同安全设置的多个文件共享一个安全描述符。[1]
V3.1 使用冗余 MFT 记录数(用于恢复受损的 MFT 文件)扩展了主文件表(MFT)项
Windows Vista 提供了事务 NTFS、NTFS 符号链接、收缩卷以及自我恢复功能,[12]但这些附加功能由操作系统提供,而非文件系统自身的功能。
[编辑] 功能
相对于之前的版本,NTFS v3.0 包含若干新功能:磁盘使用限额、稀疏文件支持、重解析点、分布链接跟踪,以及文件级加密(也即“加密文件系统(EFS)”)。
[编辑] 可选数据流(ADS)
- 可选数据流允许文件与多个数据流进行关联。例如,一个名为 text.txt 的文件可以包含一个名为 text.txt:secret(格式是“文件名:流名”)的可选数据流,并只允许知道该数据流名称或专门为数据流而设计的浏览程序查看。可选数据流无法从原始文件长度中得知,但会随着对原始文件的 RemoveFile 或 RemoveFileTransacted 调用(以及调用它们的调用),或将原始文件移动/复制到不支持可选数据流的分区(如 FAT 分区、软盘或网络共享位置)上而丢失。可选数据流在多方面有重要用途,但也容易因为被遗忘或未被探测到而白白耗费磁盘空间。
[编辑] 限额
- 磁盘限额是 NTFS v3 提出的功能。该功能允许计算机管理员在支持该功能的 Windows 版本上为用户允许占用的磁盘空间设置阈值,同时也允许管理员跟踪察看每个用户使用的磁盘空间量。管理员可以为用户设置需要收到警告的磁盘空间使用级别,并当他们超过使用上限时拒绝对磁盘的访问。当 NTFS 的文件压缩启用时,磁盘限额不会影响该功能。当应用程序查询用户可用的剩余磁盘空间时,如果设置了磁盘限额,也会收到限额的数值。
[编辑] 稀疏文件
- 稀疏文件是包含稀疏数据集的文件,大部分数据为零。许多科学应用程序会创建非常大的稀疏数据集,因此,Microsoft 实现了对稀疏文件的高效存储支持,允许应用程序指定文件的空(零)数据区域。读取稀疏文件的应用程序可以使用常规方法读取数据,操作系统将根据当前位置的偏移量决定需要返回什么数据。当作为压缩文件时,文件的实际大小不会影响对磁盘限额的判断。[13][14]
[编辑] 重解析点
- 该功能在 NTFS v3 中可用。该功能将在用户空间中为文件或目录添加一个关联的重解析标记属性。当对象管理器(请参见Windows NT 线执行)解析文件系统名称并遇到重解析点属性时,它将“重解析”名称,将用户控制的重解析数据传递给所有 Windows 系统加载的文件过滤驱动程序。每个过滤驱动程序都将检查重解析数据,判断是否和该重解析点相关联。如果过滤驱动程序判定匹配,则将拦截文件系统调用,并执行自己的特定功能。重解析点用于实现卷加载点、目录连接、分层存储管理、本机结构存储,以及单实例存储。
[编辑] 卷加载点
[编辑] 目录连接
- 类似于卷加载点,但 目录连接将对象连接到文件系统中的其他目录而非卷。例如,目录
C:\exampledir带有一个目录连接属性,链接到D:\linkeddir,则当用户级别的应用程序访问时,将自动引用到目录D:\linkeddir。[1]该功能在概念上类似于 Unix 的目录符号链接,只是在 NTFS 中目标必须是另一个目录(典型的 Unix 文件系统允许将符号链接连接到任何其它类型的文件)。
[编辑] 硬链接
- 原本用于支持 Windows NT 中的 POSIX 子系统[15]。硬链接类似于目录连接,但用于文件而非目录。硬链接只能作用于同一个卷上的文件,因为需要在文件的 MFT 记录中添加附加的文件名记录。短格式(8.3)文件名也被作为不区分目录项的地附加文件名实现。
[编辑] 分层存储管理(HSM)
- 分层存储管理是一种转移一定时间不用的文件到价值更低的储存介质中的方法。当文件再次被访问时,文件上的重解析点将判定文件需要被使用,并将文件从储存介质中恢复出来。
[编辑] 本机结构存储(NSS)
- 本机结构存储是一种已经被 Microsoft 终止使用的 ActiveX 文档存储技术。该技术允许 ActiveX 文档 使用和 ActiveX 内部是用的多流格式相同的方式进行储存。系统将加载一个本机结构存储文件系统过滤器以用于为应用程序透明地处理多流格式。当文件被传输到非 NTFS 格式的磁盘卷上时,也将同时将多个流转换为一个流。[16]
[编辑] 卷影复制
- 卷影复制(VSC)服务通过将新改写的数据复制到卷影(写入时复制)来保存 NTFS 卷上的文件和文件夹的历史版本。当用户请求恢复旧早期版本时,旧的文件数据将会覆盖新的文件数据。该功能也使得数据备份程序可以存档当前系统正在使用的文件。对于负载较重的系统,Microsoft 建议将卷影副本设置到单独的磁盘上,以减小系统主要卷的 I/O 负载。
[编辑] 文件压缩
- NTFS 能够使用多种 LZ77 算法(该算法也用于著名的 ZIP 文件格式)压缩文件。[17]尽管对于压缩文件的读写操作是透明的,Microsoft 仍然建议用户避免在服务器系统和保存漫游配置文件的网络共享位置启用压缩,因为压缩会给处理器增加较为明显的负载。[18]
- 硬盘空间首限的单用户操作系统可以有效地利用 NTFS 压缩。[來源請求] 由于在计算机中速度最慢的访问不是 CPU 而是硬盘,因此 NTFS 压缩可以同时提高受限制的、慢速储存空间的空间和速度利用率。[19]当某个程序(通常如下载管理器)无法创建没有内容的配额文件时,NTFS 压缩也可以作为配额文件的替代使用。
[编辑] 单实例存储(SIS)
- 当若干个不同目录中存有内容相同的文件时,单实例存储允许将相同文件归并到一个单一文件中,并创建对归并后的文件的引用。单实例存储包含一个用于管理复制、修改和归并文件的文件系统过滤器和一个用于搜索需要归并的相同文件的用户空间服务(“groveler”)。单实例存储的主要设计目标是远程安装服务器,这些服务器上往往拥有多个包含许多相同文件的安装镜像,单实例存储可以将它们统一起来。但和硬链接不同,每个文件仍然是独立的,更改任何一个副本都不会影响其它文件。和写入时复制类似,该技术不会立即完成内存复制,直到某个副本被更改。[20]
[编辑] 加密文件系统(EFS)
- 加密文件系统(EFS)提供对 NTFS 卷上任意文件和文件夹的用户透明的强保护。 加密文件系统与 EFS 服务、Microsoft 的加密应用程序接口(CryptoAPI)以及 EFS 文件运行时库(FSRTL)联合工作。
- EFS 使用块对称密钥(也被称为“文件加密密钥(FEK)”)加密文件,这比起使用非对称密钥加密在加密和解密大量数据时消耗的时间较少。该对称密钥使用一个和加密文件的用户相关的公钥加密文件,加密后的数据储存在被加密文件的可选数据流中。当需要解密文件时,文件系统使用用户的密钥解密储存在文件头中的对称密钥,然后使用该对称密钥解密文件。这些操作在文件系统级别完成,因此对用户来说是透明的。[21] 同时,为了处理用户丢失密钥的情况,加密文件系统中提供了对附加解密密钥的支持,因此恢复代理在需要时仍然可以访问数据。
[编辑] 符号链接
- 符号链接是 Windows Vista 提供的功能。符号链接(也称软链接)在客户端进行解析,因此当共享符号链接时,目标会受到客户端的访问限制,而和服务器无关。
[编辑] 事务 NTFS
- 在 Windows Vista 中,应用程序可以使用事务 NTFS 将一系列对文件的更改归组到一个事务中。事务能够确保所有更改要么同时生效,要么同时作废,并能确保在事务提交完成前,外部应用程序无法获知任何更改。[22]
[编辑] USN 日志
- USN 日志是一项系统管理功能,能够记录卷上文件和文件夹的所有更改。
[编辑] 互操作性
NTFS 具体实现的内部细节被保密,因此这导致第三方开发者试图制作处理 NTFS 的工具变得异常困难。
[编辑] Linux
完整并安全的对 NTFS 的读写功能由 NTFS-3G 驱动程序提供。该驱动程序包含在绝大多数 Linux 发行包 中。同时也存在过时的,大部分仅只读的解决方案:
- Linux 内核 2.2:从版本 2.2.0 开始,可以读取 NTFS 分区。
- Linux 内核 2.6:包含一个由 Anton Altaparmakov(来自剑桥大学)和 Richard Russon 编写的驱动程序,该驱动程序支持读取文件以及在部分情况下的改写文件和调整文件大小。
- NTFSMount:使用 ntfsmount 可以通过一个用户级驱动程序对文件和目录进行有限的读写操作。[23]
- 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 都不允许修改被认为是不安全的卷,以避免发生损坏事故。
[编辑] Microsoft Windows
尽管绝大多数 NTFS 版本的绝大部分都完全向前以及向后兼容,在旧版本的 Microsoft Windows 加载新版本的 NTFS 卷仍然存在不少技术问题。这往往会影响到多重启动,以及外部可携带的硬盘。
例如,在不支持的操作系统上尝试使用带有“先前版本”(严格的说称为卷影副本)的 NTFS 分区,会导致这些先前的版本产生丢失。[24]
[编辑] 其他
eComStation、KolibriOS,以及 Mac OS X 版本 10.3 及以后版本都提供对 NTFS 的只读访问支持(eComStation 有一个测试版本的驱动程序允许写入/删除操作,但通常认为该驱动程序还不安全)。BeOS 有一个基于 NTFS-3G 的的第三方工具,允许完整的 NTFS 读写操作。除了 Linux, NTFS-3G 也能工作在 Mac OS X、FreeBSD、NetBSD、Solaris 以及 Haiku 上。同时,也有一个称为“NTFS4DOS”的商用驱动程序允许在 DOS 下进行读写。[25]Mac OS X 有一个商用的可读写的 NTFS 驱动程序,名称为“Paragon NTFS for Mac OS X”。[26]
[编辑] 和 FAT 的兼容性
Microsoft 当前提供了一个工具(convert.exe),可以将HPFS(仅 Windows NT 3)、FAT16 以及在 Windows2000 以上的 FAT32 卷转换为 NTFS,但没有提供任何其它途径。[27]有许多第三方工具可以安全地重新调整 NTFS 分区的大小。在 Windows Vista 中,Microsoft 添加了收缩和扩展分区的功能,但该功能非常有限,因为该功能不会整理页面文件碎片或标记为不可移动的文件,因此限制了对分区的收缩能力。取消页面文件重新启动或使用第三方的工具进行磁盘碎片整理可能能产生一定效果。
由于历史原因,所有不支持 NTFS 的 Windows 系统内部都将时间记录为本地时区时间,因此当前版本的 Windows 支持其他所有版本的文件系统。而 Windows NT 及以此派生的系统使用通用协调时间(UTC)记录内部时间戳,并在显示时进行必要的转换,也就是说,NTFS 是 UTC 时间。这意味着当在 NTFS 和非 NTFS 分区间移动或复制文件时,操作系统需要转换时间戳。但如果被移动的部分文件使用了夏时制,而其他文件使用了标准时间,则转换会导致不能确定结果。特别是当在本地时区时间更改的短暂时刻中,用户可能会发现部分文件的时间戳错开了一小时。由于夏时制在南北半球的实现不一致,可能会导致在任意 12 个月中产生最多 4 个小时的时间戳错误。[28]
[编辑] 内部实现
在 NTFS 中,所有文件数据——文件名、创建日期、访问权限,以及内容——都作为元数据储存在主文件表中。这种抽象的实现方式使得随着 Windows NT 的发展而添加文件系统功能变得非常容易。一个很典型的例子是为使用 Active Directory(活动目录)的应用程序添加用于索引的字段。
NTFS 允许为名称编码(包括文件名称、流名称、索引名称等)使用任意序列的 16 位值。这意味着支持 UTF-16 码位,但文件系统不会检查某个 UTF-16 序列是否有效(也即允许任意短整数序列,不受 Unicode 标准的限制)。
在内部,NTFS 使用 B+ 树索引文件系统数据。尽管该方式实现较为复杂,但能够在大多数情况下提高文件的查找速度。文件系统日志用于确保文件的元数据完整,而不是孤立的文件内容。相比于使用 FAT 的文件系统,使用 NTFS 的文件系统能够提高可靠性。[29]
主文件表(MFT)包含每个文件及目录的元数据,以及 NTFS 卷的元文件。这其中包括文件名、位置、大小,以及权限。它的结构和算法被设计为可以最小化磁盘碎片。目录项包含一个文件名和一个“文件 ID”,该 ID 表示文件在主文件表中的记录编号。文件 ID 同时包含重复使用计数值,用于检测过期的引用。这种结构非常类似 Files-11 的 W_FID,但 NTFS 的其他结构却有着根本的区别。
[编辑] 元文件
NTFS 包含若干用于定义和组织文件系统的文件。总体来说,这些文件中的绝大多数结构和其它用户文件类似(“$Volume”是最特殊的),但不能被文件系统客户端直接访问。这些元文件用于定义文件、备份文件系统关键数据、缓存文件系统的更改、管理空闲空间的分配、满足 BIOS 的要求、跟踪坏扇区单元,以及储存安全信息和磁盘空间使用情况。
| 区段编号 | 文件名 | 作用 |
|---|---|---|
| 0 | $MFT | 描述卷上的所有文件,包括文件名、时间戳、流名称和数据流所在的簇的编号列表、索引、安全标识符,以及文件属性(如“只读”、“压缩”、“加密”等)。 |
| 1 | $MFTMirr | $MFT 的最开始的几个关键项的副本,通常是 4 项(4KiB)。 |
| 2 | $LogFile | 包含文件系统更改的事务日志,以保护元数据的稳定性。 |
| 3 | $Volume | 包含卷的相关信息,如卷对象标识符、卷标、文件系统版本,以及卷标志(加载、需要扫描、需要调整 $LogFile 大小、在 NT4 上加载、正在更新卷序列号、需要升级结构)。卷序列号储存在 $Boot 文件中。 |
| 4 | $AttrDef | 使用的 NTFS 属性的表,包含名称、编号和描述。 |
| 5 | . | 根目录。 |
| 6 | $Bitmap | 一个位图,用于指示卷上的指定簇正在被使用或空闲。 |
| 7 | $Boot | 卷引导记录,该文件位于卷的第一个簇,其中包含引导代码(用于定位并启动 NTLDR/[[Windows Vista 启动过程#Windows 引导管理器|BOOTMGR)、一个 BIOS 参数区块(其中包含卷序列号),以及 $MFT 和 $MFTMirr 所在的簇编号。 |
| 8 | $BadClus | 包含所有标记为“有坏扇区”的簇的一个文件。该文件用于为 chksdk(磁盘扫描)工具简化簇的管理,用于放置新发现的坏扇区,以及标识未被引用的簇。 |
| 9 | $Secure | 访问控制列表(ACL)数据库,统一将 ACL 存储于该数据库中而非每个文件存储各自的 ACL 以减少总体代价。包含两个索引:$SII——可能是[來源請求]安全 ID 索引,以及 $SDH——安全描述符哈希,用于索引包含实际 ACL 列表的称为 $SDS 的流的位置。[1] |
| 10 | $UpCase | 一个 Unicode 大写字母表,用于确保在 Win32 和 DOS 命名空间下大小写不敏感。 |
| 11 | $Extend | 一个文件系统目录,包含若干不定的可选扩展,如 $Quota、$ObjId、$Reparse、$UsnJrnl 等。 |
| 12 ... 23 | 保留。 | |
| 通常是 24 | $Extend\$Quota | 包含关于磁盘限额的信息。 |
| 通常是 25 | $Extend\$ObjId | 包含用于分布链接跟踪的信息。 |
| 通常是 26 | $Extend\$Reparse | 包含对卷上所有重解析点(如符号链接)的反引用。 |
| 27 ... | file.ext | 常规文件项的开始位置。 |
这些元文件会被 NTFS 专门处理,很难直接查看。需要使用专门为此设计的工具完成实现该功能。
[编辑] 常驻文件和非常驻文件
为了优化通常情况下小数据文件的存储,NTFS 选择在文件大小能够放入 MFT 的情况下直接把文件放入 MFT,而不是使用 MFT 标记包含数据的簇的列表。这种形式被计算机取证工作者称为“常驻数据”。满足条件的数据量和文件的特征高度相关,但通常情况下,一个单流无长度无 ACL 的文件大概包含 700 到 800 个字节。被 NTFS 加密的文件、稀疏文件以及被压缩的文件无法常驻。
由于常驻文件不直接占据簇(“分配单元”),使得 NTFS 卷有个能包含比簇更多的文件。例如,一个 80GB(74.5GiB)的分区,NTFS 格式化为 19,543,064 个 4KiB 的簇。除去系统文件(64MiB 日志文件,一个 2,442,888 字节的位图,以及大约 25 个簇的固定头部),还剩余 19,526,158 个簇可用于文件和索引。由于每个簇有 4 个 MFT 记录,因此卷理论上可以包含将近 4 × 19,526,158 = 78,104,632 个常驻文件。
[编辑] 限制
下面是一些 NTFS 的限制:
- 保留的文件名
- 尽管文件系统支持最长 32767 个 Unicode 字符的的路径[30]。每个路径组成部分(目录或文件名)最多可以有 255 个字符[30]长,但不允许使用某些特定名称,因为 NTFS 将元数据储存在通常(尽管是隐藏的,并且大部分不可访问)的文件夹中。同理,用户也不能使用这些名称作为文件名。这些文件都存在于卷的根目录中(名称也仅在根目录中被保留)。被保留的名称有:$MFT、$MFTMirr、$LogFile、$Volume、$AttrDef、.(点)、$Bitmap、$Boot、$BadClus、$Secure、$Upcase,以及 $Extend[2]。.(点)和 $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 系统调用可能处理,也可能不处理可选数据流。[2]根据操作系统、工具和远程文件系统的情况,文件传输过程可能会无任何提示地丢弃数据流。[2]复制或移动文件的安全方式是使用 BackupRead 和 BackupWrite 系统调用,这些调用允许程序枚举流并验证每个流是否被需要写入目标卷以跳过不需要的流。[2]
- 最大路径长度
- 绝对路径最多允许 32767 个字符[30]。相对路径被限制在 255 个字符。
- 日期范围
- NTFS 使用和 Windows NT 相同的计算方式:64 位时间戳,允许范围从 1601年1月到 60056年5月28日,分辨率是每秒钟一百万个计数单位。
[编辑] 开发者
NTFS 开发者包括:
- Tom Miller
- Gary Kimura
- Brian Andrew
- David Goebel
[编辑] 另请参阅
- 文件系统比较
- Files-11 — ODS-2 非常类似于 NTFS(如相比较于
INDEXF.SYS和$Mft,BITMAP.SYS和$Bitmap) - HPFS,为 OS/2 操作系统开发的文件系统
- ntfsresize
- Samba(软件)
[编辑] 参考文献
- ^ 1.0 1.1 1.2 1.3 1.4 Mark Russinovich.Inside Win2K NTFS, Part 1.Microsoft Developer Network.於2008年4月18日查閱.
- ^ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 Microsoft Corporation.How NTFS Works.於2008年1月27日查閱.
- ^ 3.0 3.1 Richard Russon and Yuval Fledel.NTFS Documentation.於2007年7月1日查閱.
- ^ Custer, Helen(1994).Inside the Windows NT File System.Microsoft Press.ISBN 978-1-55615-660-1.
- ^ File Systems Unraveled: New Technolgy File Systems.How-To Guides,3.pcnineoneone.於2008年6月17日查閱.
- ^ Chris Quirke(2004年5月1日).NTFS vs. FAT32.於2008年6月17日查閱.
- ^ Attachment A: Additional Laptop Security Considerations.Technical Guidance for HIV/AIDS Surveillance Programs.Centers for Disease Control and Prevention, Dept. of Health and Human Services(2004年5月1日).於2008年6月17日查閱.
- ^ Inside Windows NT Disk Defragmenting.Microsoft Technet.Microsoft(March 3,2007).於2008年9月17日查閱.
- ^ Paul Thurrott(2001年2月1日).NTFS Licensee Reports Microsoft Threat, Apology.Windows IT Pro.於2008年6月17日查閱.
- ^ Kozierok, Charles M.(2001年4月17日).Overview and History of NTFS.PCGuide.
- ^ Recovering Windows NT After a Boot Failure on an NTFS Drive.Microsoft(2006年11月1日).
- ^ Loveall, John(2006年).Storage improvements in Windows Vista and Windows Server 2008(PowerPoint),14-20.Microsoft Corporation.於2007年9月4日查閱.
- ^ Sparse Files.MSDN Platform SDK: File Systems.於2005年5月22日查閱.
- ^ Sparse FIles and Disk Quotas.Win32 and COM Development: File Systems.於2007年12月5日查閱.
- ^ MS Windows NT Workstation 4.0 Resource Guide, "POSIX Compatibility"
- ^ John Saville, "What is Native Structured Storage?"
- ^ File Compression and Decompression.MSDN Platform SDK: File Systems.於2005年8月18日查閱.
- ^ "Best practices for NTFS compression in Windows." Microsoft Knowledge Base. Retrieved on 2005-08-18.
- ^ Daily, Sean(1998年1月1日).Optimizing Disks.IDG books.於2007年12月17日查閱.
- ^ Single Instance Storage in Windows 2000(PDF).Microsoft Research and Balder Technology Group.
- ^ How EFS Works, Microsoft Windows 2000 Resource Kit
- ^ Transactional NTFS.MSDN.於2007年2月2日查閱.
- ^ "ntfsmount wiki page on linux-ntfs.org"
- ^ cfsbloggers(2006年7月14日).How restore points and other recovery features in Windows Vista are affected when dual-booting with Windows XP.The Filing Cabinet.於2007年3月21日查閱.
- ^ Recovery information
- ^ Paragon NTFS for MAC OS X - full read and write access to Windows NTFS partitions under Mac OS X
- ^ How to Convert FAT Disks to NTFS.Microsoft Corporation(2001年10月25日).於2007年8月27日查閱.
- ^ "Beating the Daylight Savings Time bug and getting correct file modification times" The Code Project
- ^ "Microsoft TechNet Resource Kit"
- ^ 30.0 30.1 30.2 更精确地说,32767 表示 255个 UTF-16 编码字。某些特殊的 Unicode 字符可能需要两个字的空间
- Bolosky, William J.; Corbin, Scott; Goebel, David; & Douceur, John R. (date). "Single Instance Storage in Windows 2000" (PDF). Microsoft Research & Balder Technology Group, Inc..
- Custer, Helen(1994).Inside the Windows NT File System.Microsoft Press.ISBN 978-1-55615-660-1.
- Nagar, Rajeev(1997).Windows NT File System Internals: A Developer's Guide.O'Reilly.ISBN 978-1-56592-249-5.
[编辑] 外部链接
- 文献:
- Low-level description of NTFS disk structures from the Linux-NTFS project
- NTFS.com – documentation and resources for NTFS
- Microsoft NTFS Technical Reference
- 实现技术:
- NTFS-3G – an open source read/write NTFS driver for Linux, FreeBSD, Mac OS X, NetBSD, Solaris and Haiku.
- Linux-NTFS – an open source project to add NTFS support to the Linux kernel (write support is limited, but can be used for simple tasks), and write POSIX-compatible utilities for accessing and manipulating NTFS (ntfsprogs; includes ntfsls, ntfsresize, ntfsclone, etc). Linux NTFS FAQ and howto
- Captive NTFS – a shim which used the Windows NTFS driver to access NTFS file systems under Linux

