当前位置:首页 > 百科知识 > 电子工程 > 正文

NTFS

  NTFS (New Technology File System),是 WindowsNT 环境的文件系统。新技术文件系统是Windows NT家族(如,Windows 2000、Windows XP、Windows Vista、Windows 7和 windows 8.1)等的限制级专用的文件系统(操作系统所在的盘符的文件系统必须格式化为NTFS的文件系统,4096簇环境下)。NTFS取代了老式的FAT文件系统。   NTFS对FAT和HPFS作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能。   该文件系统的详细定义属于商业秘密 ,微软已经将其注册为知识产权产品。

目标

  一、可靠性通过可恢复能力(事件跟踪)和热定位的容错特征实现;

  二、增加功能性的一个平台;

  三、对POSIX需求的支持;

  四、消除FAT和HPFS文件系统中的限制。

详细说明

  NTFS 提供长文件名、数据保护和恢复,并通过目录和文件许可实现安全性。NTFS 支持大硬盘和在多个硬盘上存储文件(称为卷)。例如,一个大公司的数据库可能大得必须跨越不同的硬盘。NTFS 提供内置安全性特征,它控制文件的隶属关系和访问。从DOS或其他操作系统上不能直接访问 NTFS 分区上的文件。如果要在DOS下读写NTFS分区文件的话可以借助第三方软件;现如今,Linux系统上已可以使用NTFS-3G进行对 NTFS 分区的完美读写,不必担心数据丢失。

  Win 2000采用了更新版本的NTFS文件系统NTFS 5.0,它的推出使得用户不但可以像Win 9X那样方便快捷地操作和管理计算机,同时也可享受到NTFS所带来的系统安全性。 NTFS 允许文件名的长度可达 256 个字符。虽然 DOS用户不能访问 NTFS 分区,但是 NTFS文件可以拷贝到 DOS 分区。每个 NTFS文件包含一个可被 DOS 文件名格式认可的 DOS 可读文件名。这个文件名是 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 的时候就不得不进行额外的检查。

版本

  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 年初),Windows Server 2008 R2(有时称作“NTFS 6.1”)以及 Windows 7。

  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可以支持的分区(如果采用动态磁盘则称为卷)大小可以达到2TB。而Windows2000中的FAT32支持分区的大小最大为32GB。

文件系统

  NTFS是一个可恢复的文件系统。在NTFS分区上用户很少需要运行磁盘修复程序。NTFS通过使用标准的事务处理日志和恢复技术来保证分区的一致性。发生系统失败事件时,NTFS使用日志文件和检查点信息自动恢复文件系统的一致性。

文件夹压缩

  NTFS支持对分区、文件夹和文件的压缩。任何基于Windows的应用程序对NTFS分区上的压缩文件进行读写时不需要事先由其他程序进行解压缩,当对文件进行读取时,文件将自动进行解压缩;文件关闭或保存时会自动对文件进行压缩。

磁盘空间的有效管理

  ·NTFS采用了更小的簇,可以更有效率地管理磁盘空间。在Win 2000的FAT32文件系统的情况下,分区大小在2GB~8GB时簇的大小为4KB;分区大小在8GB~16GB时簇的大小为8KB;分区大小在16GB~32GB时,簇的大小则达到了16KB。而Win 2000的NTFS文件系统,当分区的大小在2GB以下时,簇的大小都比相应的FAT32簇小;当分区的大小在2GB以上时(2GB~2TB),簇的大小都为4KB。相比之下,NTFS可以比FAT32更有效地管理磁盘空间,最大限度地避免了磁盘空间的浪费。

更好的安全性

  ·在NTFS分区上,可以为共享资源、文件夹以及文件设置访问许可权限。许可的设置包括两方面的内容:一是允许哪些组或用户对文件夹、文件和共享资源进行访问;二是获得访问许可的组或用户可以进行什么级别的访问。访问许可权限的设置不但适用于本地计算机的用户,同样也应用于通过网络的共享文件夹对文件进行访问的网络用户。与FAT32文件系统下对文件夹或文件进行访问相比,安全性要高得多。另外,在采用NTFS格式的Win 2000中,应用审核策略可以对文件夹、文件以及活动目录对象进行审核,审核结果记录在安全日志中,通过安全日志就可以查看哪些组或用户对文件夹、文件或活动目录对象进行了什么级别的操作,从而发现系统可能面临的非法访问,通过采取相应的措施,将这种安全隐患减到最低。这些在FAT32文件系统下,是不能实现的。

更多的功能

  ·在Win 2000的NTFS文件系统下可以进行磁盘配额管理。磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。设置磁盘配额后,可以对每一个用户的磁盘使用情况进行跟踪和控制,通过监测可以标识出超过配额报警阈值和配额限制的用户,从而采取相应的措施。磁盘配额管理功能的提供,使得管理员可以方便合理地为用户分配存储资源,避免由于磁盘空间使用的失控可能造成的系统崩溃,提高了系统的安全性。

  NTFS使用一个“变更”日志来跟踪记录文件所发生的变更。

  还有诸如加密文件数据等等,和系统服务相关的不少东西。

系统优点

  (1)更安全的文件保障,提供文件加密,能够大大提高信息的安全性。

  (2)更好的磁盘压缩功能。

  (3)支持最大达2TB的大硬盘,并且随着磁盘容量的增大,NTFS的性能不像FAT那样随之降低。

  (4)可以赋予单个文件和文件夹权限。对同一个文件或者文件夹为不同用户可以指定不同的权限。在NTFS文件系统中,可以为单个用户设置权限。

  (5)NTFS文件系统中设计的恢复能力无需用户在NTFS卷中运行磁盘修复程序。在系统崩溃事件中,NTFS文件系统使用日志文件和复查点信息自动恢复文件系统的一致性。

  (6)NTFS文件夹的B-Tree结构使得用户在访问较大文件夹中的文件时,速度甚至比访问卷中较小的文件夹中的文件还快。

  (7)可以在NTFS卷中压缩单个文件和文件夹。NTFS系统的压缩机制可以让用户直接读写压缩文件,而不需要使用解压软件将这些文件展开。

  (8)支持活动目录和域。此特性可以帮助用户方便灵活地查看和控制网络资源。

  (9)支持稀疏文件。稀疏文件是应用程序生成的一种特殊文件,文件尺寸非常大,但实际上只需要很少的磁盘空间,也就是说,NTFS只需要为这种文件实际写入的数据分配磁盘存储空间。

  (10)支持磁盘配额。磁盘配额可以管理和控制每个用户所能使用的最大磁盘空间。

注意事项

  NTFS是微软Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式。除了在局域网安装了NT系列的用户们使用NTFS外,随着NT内核的桌面系统Windows2000和XP的普及,很多个人用户也开始把自己的分区格式化为NTFS。

  在一般情况下,NTFS的格式不能被Windows9X识别,而且在安装、操作方面也有差异,所以个人用户在使用这种磁盘格式的时候,必须留意下面的注意事项:

  一、NT内核的系统应始终使用NTFS 吗?

  NTFS是微软推荐在NT系列上使用的文件系统,但是,会有一些特殊的原因使用其他文件系统。如果计划用其他操作系统(包括MS-DOS)访问文件,则应把引导的分区,即C盘选择格式为 FAT(包括FAT32)文件系统。如果使用的是NTFS文件系统并要与Windows NT进行双重引导,那么在继续Windows 2000或XP的安装之前,必须要为Windows NT安装SP4或更高版本的补丁。

  二、转化NTFS和其他分区格式的技巧

  一台机器用PQ7把一个分区由NTFS转换成FAT32格式,完成后发现该盘中的中文名的文件夹全部变成问号,打不开了。此时想转回来时发现提示磁盘错误,用Windows的磁盘扫描和DOS的CHKDSK检查后仍无法转换,里面有其下载的几百M的文件,已经搞的面目全非了。

  其实,如果NTFS的分区容量很大且内有大量的数据存在的话,用直接转换的方式不仅缓慢,而且是很危险的——因为在每一个步骤里,转换的工具程序都要先读取扇区信息、拷贝到临时目录、转化格式再从临时目录读数据重新写入转换好的空间,再校验……这样的操作其实和低级格式化硬盘或是刷新主板的BIOS差不多危险,一旦发生掉电或是瞬间的数据量过大传输溢出缓冲区导致的死机,重新开机后可能就会丢失分区的所有信息,或是破坏引导区数据甚至是损坏硬盘。

  如果硬盘其他分区有足够的空间,用拷贝后删除文件再转化的方法,会事半功倍。具体的操作就是先在其他分区建立一个目录,然后转到你的NTFS分区,选定全部文件,用复制粘贴的方法进行转移数据。然后把NTFS分区的数据清空,再进行转化格式就快很多,也安全得多了;从FAT的格式转换到NTFS也是一样道理。这种拷贝,比直接转换分区格式读读写写、又校验数据的那种繁琐过程快很多,可以在转换完成后,把数据拷贝回该分区。

  另外,建议在清空数据后,利用GHOST镜像NTFS或FAT格式的空白分区,得到一个备份文件,以后如果再要转换分区格式利用它来进行就更快。

  三、虚拟内存(页面文件)与NTFS的卷

  很多人装了双硬盘系统甚至是简单的RAID磁盘阵列,使用这种结构的系统同时是需要NTFS支持卷功能的,此时,应该尽量避免页面文件和系统文件在同一分区上,也不要在同一物理磁盘驱动器的不同分区中放置多个页面文件。特别注意避免将页面文件放入容错驱动器,例如镜像卷或 RAID-5 卷,因为页面文件不需要容错,而且一些容错系统将数据写到多个位置,会导致非常缓慢的数据写操作。

  四、虚拟机或是磁盘压缩不适宜使用NTFS

  使用虚拟机时,在NTFS分区引导的机器上使用光盘引导后,在装操作系统的时候,将会出现以下提示:

  Please wait while Setup initializes.

  Scanning system registry...

  Cannot create a temporary directory.

  If you have HPFS or NTFS installed on your hard drive, you will need to create an MS-DOS boot partition to set up Windows.

  因为虚拟机出于兼容的考虑,只内置了最常用的硬件和软件支持,对NTFS格式的支持还不是很好。你使用Windows9X加补丁的方式来读写NTFS分区的话,也可能会导致某些长文件名或是中文名的文件结构被破坏;在使用GHOST备份和恢复的时候也可能会出现莫名其妙的错误。所以,上NTFS还是用NT内核的系列视窗系统好。

  另外,注意压缩过的分区不能转化为NTFS。其实压缩磁盘分区变相增大容量是以系统速度的极大牺牲为代价的;而且还会给以后的系统维护、转换分区格式、升级操作系统等等带来很大麻烦。除非是完全出于备份数据的考虑,其他的应用建议不要使用Windows的分区磁盘压缩功能。

  NTFS数据恢复

  NTFS利用B-Tree文件管理方法来跟踪文件在磁盘上的位置。这种技术比在FAT文件系统中使用的链接表技术具备更多的优越性。文件名是顺序存放的因而查找速度更快。B-tree的数据结构使查找一个条目所需的磁盘访问次数最少。 那么,文件是怎么样被删除了的,在NTFS文件系统下文件的删除原理又是怎么的呢。当在NTFS卷中删除一个文件时,系统至少在三个地方做了改变:

  (1)该文件MFT头偏移16H处的一个字节,该字节为0表示文件被删除,为1表示该文件是正被使用的文件,为2表示其是一个目录,为03的时候表示其为删除目录;

  (2)其父文件夹的INDEX_ROOT属性(90H属性)或者INDEX_ALLOCATION(A0H属性);

  (3)在位图($Bitmap)元数据文件中把该文件所占用的簇对应的位置置0,这样好给其他文件腾出空间。

  既然知道了文件的删除原理,那么我们对文件的恢复就容易了许多。这里我们从删除原理着手,分几步将数据进行恢复:

  第一步:由于文件是通过主文件表MFT来确定其在磁盘上的存储位置的,因此我们首先要找到MFT。

  第二步:找到MFT后,通过分析MFT中的文件记录信息,(对于大型文件还可能有多个记录与之相对应),其中第一个文件记录称为基本文件记录,而当中存储有其他扩展文件记录的一些信息。

  第三步:通过文件记录的INDEX_ROOT索引根、INDEX_ALLOCATION索引分配以及位图Bitmap对被删文件加以确认和定位。找到该文件在数据区中的存储位置。

  第四步:恢复该文件。

  需要注意的是,在文件被删除以后,虽然磁盘中被删文件的相关属性发生了改变。但是在我们对其进行数据恢复时,我们仅仅是将其相关信息复制到了内存,并将相关信息做了修改。也就是说,对于为了修复数据而做的修改,其实并没有写回到原文件属性上。这就有效的避免了被访文件的再次破坏。

  在主文件表中,目录的索引根属性包含一些文件名,它们是到达B-Tree的第二层的索引。在这个索引根属性中的每一个文件名都包含了个指向索引缓冲区的指针。这个索引缓冲区中包含有一些文件名,它们位于索引根属性中的文件的名字之前。通过这种关系,我们可以使它们排在索引缓冲区中的那个文件之前。图4-3 所示,利用这些索引缓冲区,NTFS可以进行折半查找,从而获得更快的文件查找速度。

NTFS文件系统详解

NTFS文件系统结构总览

  当用户将硬盘的一个分区格式化成NTFS分区时,就建立了一个NTFS文件系统结构。NTFS文件系统与FAT文件系统一样,也是用簇为基本单位对磁盘空间和文件存储进行管理的。一个文件总是占有若干个簇,即使在最后一个簇没有完全放满的情况下,也是占用了整个簇的空间,这也是造成磁盘空间浪费的主要原因。文件系统通过簇来管理磁盘管理,并不需要知道磁盘扇区的大小,这样就使NTFS保持了与磁盘扇区大小的独立性,从而使不同大小的磁盘选择合适的簇。

  NTFS分区也被称为NTFS卷,卷上簇的大小,又称为卷因子,其大小是用户在创建NTFS卷时确定的。和FAT文件系统一样,卷因子的大小和文件系统的性能有着非常直接的关系。当一样簇占用的空间太小时,会出现太多的磁盘碎片,这样的空间和文件访问时间上会造成浪费;而相反的当一个簇占用的空间太大时,直接造成了磁盘空间的浪费。因此,最大限度地优化系统对文件的访问速度和最大限度地减少磁盘空间的浪费是确定簇的大小的主要因素。簇的大小一定是扇区大小的整数倍,通常是2(n为整数)。

  NTFS文件系统使用了逻辑簇号(LCN)和虚拟簇号(VCN)对卷进行管理。其中LCN是对卷的第一个簇到最后一个簇进行编号,只要知道LCN号和簇的大小以及NTFS卷在物理磁盘中的起始扇区就可以对簇进行定位,而这些信息在NTFS卷的引导扇区中可以找到,在系统底层也是用这种方法对文件的簇进行定位的。找到簇在磁盘中的物理位置的计算公式是:

  每簇扇区数*簇号+卷的隐含扇区数(卷之前的扇区总数)=簇的起始绝对扇区号

  而虚拟簇号则是将特定文件的簇从头到尾进行编号,这样做的原因是方便系统对文件中的数据进行引用,VCN并不要求在物理上是连续的,要确定VCN的磁盘上的定位需先将其转换为LCN。[1]

  NTFS文件系统的主文件表中还记录了一些非常重要的系统数据,这些数据被称为元数据文件,简称为“元文件”,其中包括了用于文件定位和恢复数据结构、引导程序数据及整个卷的分配位图等信息。NTFS文件系统将这些数据都当做文件进行管理,这些文件用户是不能访问的,它们的文件名的第一个字符都是“$”,表示该文件是隐藏的。在NTFS文件系统中这样的文件主要有16个,包括MFT本身($MFT)、MFT镜像、日志文件、卷文件、属性定义表、根目录、位图文件、引导文件、坏簇文件、安全文件、大写文件、扩展元数据文件、重解析点文件、变更日志文件、配额管理文件、对象ID文件等,这16个元数据文件总是占据着MFT的前16项纪录,在16项以后就是用户建立的文件和文件夹的记录了。

  每个文件记录在主文件表中占据的磁盘空间一般为1KB,也就是两个扇区,NTFS文件系统分配给主文件表的区域大约占据了磁盘空间的12.5%,剩余的磁盘空间用来存放其他元文件和用户的文件。

  $MFT中前16个文件记录总是元文件的记录,并且这16个文件记录的顺序是固定的,下面对这16个记录简单做一个介绍:

  第1个记录就是$MFT自身的记录,也就是说$MFT首先对自己进行管理。

  第2个记录是$MFTMirr的记录,也就是$MFT前4个文件记录的镜像。

  第3个记录是日志文件($LogFile)的记录,该文件是NTFS为实现可恢复性和安全性而设计的。当系统运行时,NTFS就会在日志文件中记录所有影响NTFS卷结构的操作,包括文件的创建和改变目录结构的命令,从而可在系统失败时能够恢复NTFS卷。

  第4个记录是卷文件($Volume)的记录,它包含卷名、NTFS的版本和一个标明该磁盘是否损坏的标志位,NTFS文件系统以此决定是否需要调用Chkdsk程序来进行修复。

  第5个记录是属性定义表($AttrDe,attribute definition table)的记录,其中存放着卷所支持的所有文件属性,并指出它们是否可以被索引和恢复等。

  第6个记录是根目录($ROOT)的记录,其中保存着该卷根目录下的所有文件和目录的索引。在访问一个文件后,NTFS就保留该文件的MFT引用,第二次就能够直接访问该文件。

  第7个记录是位图文件($Bitmap)的记录,NTFS卷的簇使用情况都保存在这个位图文件中,其中每一位(bit)代表卷中的一簇,标识该簇的空间还是已分配。由于该文件可以很容易被扩大,所以,NTFS的卷可以很方便地动态扩大,而FAT格式的文件系统由于涉及FAT表的变化,所以不能随意对分区大小进行调整。

  第8个记录是引导文件($Boot)的记录,该文件中存放着操作系统的引导程序代码。该文件必须位于特定的磁盘位置才能够正确地引导系统,一般都是位于卷的最前面。

  第9个记录是坏簇文件($BadClus)的记录,它记录着该卷中所有损坏的簇号,防止系统对其进行分配使用。

  第10个记录是安全文件($Secure)的记录,它存储着整个卷的安全描述符数据库。NTFS文件和目录都有各自的安全描述符,为节省空间,NTFS将文件和目录的相同描述符存放在此公共文件中。

  第11个记录为大写文件($UpCase,upper case file)的记录,该文件包含一个大小写字符转换表。

  第12个记录是扩展元数据目录($Extended metadata directory)的记录。

  第13个记录是重解析点文件($Extend\$Reparse)的记录。

  第14个记录是变更日志文件($Extend\UsnJrnl)的记录。

  第15个记录是配额管理文件($Extend\Quota)的记录。

  第16个记录是对象ID文件($Extend\ObjId)的记录。

  第17—23记录是系统保留的记录,暂时不用,用于将来扩展。

  第24个记录开始存放用户文件的记录。

NTFS文件系统引导扇区:

  NTFS文件系统的引导扇区是$Boot的第一个扇区,它的结构与FAT文件系统的DBR类似,所以习惯上也称该扇区为DBR扇区。DBR扇区在操作系统的引导过程起着非常重要的作用,如果这个扇区遭到破坏,系统将不能正常启动。

  NTFS文件系统的DBR扇区与FAT文件系统的结构一样。也包括跳转指令、OEM代号、BPB参数、引导程序和结束标志。

  跳转指令

  跳转指令本身占用2字节,它将程序执行流程跳转到引导程序处,

  OEM代号

  这部分占8字节,其内容由创建该文件系统的OEM厂商具体安排,

  BPB参数

  BPB是BIOS Parameter Block的缩写,其含义为BIOS参数块。BPB从DBR的第12个字节开始,到偏移53H结束,占用73字节,记录了有关文件系统的重要信息[1]  。


内容来自百科网