NTFS(New Technology File System)是
Windows NT内核的系列
操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的
磁盘格式,提供长文件名、
数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。
简介
NTFS文件系统最早出现于1993年的
Windows NT操作系统中,它的出现大幅度地提高了微软原来的FAT文件系统的性能。
NTFS是一个日志文件系统,这意味着除了向磁盘中写入信息,该文件系统还会为所发生的所有改变保留一份日志。这一功能让NTFS文件系统在发生错误的时候(比如系统崩溃或电源供应中断)更容易恢复,也让这一系统更加强壮。在这些情况下,NTFS能够很快恢复正常,而且不会丢失任何数据。在很少出错情况下,微软表示你需要运行CHKDSK修复程序来对磁盘卷进行维护的概率特别低,其概率不到1%。
功能
NTFS文件系统所具备3个功能:错误预警功能、
磁盘自我修复功能和日志功能。
错误预警功能:在NTFS分区中,如果MFT所在的磁盘扇区恰好出现损坏,NTFS文件系统会比较智能地将MFT换到硬盘的其他扇区,保证了文件系统的正常使用,也就是保证了系统的正常运行。而FAT16和FAT32的FAT则只能固定在分区引导扇区的后面,一旦遇到扇区损坏,那么整个文件系统就要瘫痪。
磁盘自我修复功能:NTFS可以对硬盘上的逻辑错误和物理错误进行自动侦测和修复。在每次读写时,它都会检查扇区正确与否。当读取时发现错误,NTFS会报告这个错误;当向磁盘写文件时发现错误,NTFS会换一个完好位置存储数据。
日志功能:在NTFS文件系统中,任何操作都可以被看成是一个“事件”。事件日志一直监督着整个操作,当它在目标地,发现了完整文件,就会标记“已完成”。假如复制中途断电,事件日志中就不会记录“已完成”,NTFS可以在通电后重新完成刚才未完成的事件。
特点
1、安全性
NTFS文件系统能够轻松指定用户访问某一文件或目录、操作的权限大小。NTFS能用一个随机产生的密钥把一个文件加密,只有文件的所有者和管理员掌握解密的密钥,其他人即使能够登录到系统中,也没有办法读取它。NTFS采用用户授权来操作文件,事实上这是网络操作系统的基本要求有给定权限的用户才能访问指定的文件。NTFS还支持加密文件系统(EFS)以阻止未授权的用户访问文件。
2、容错性
NTFS使用了一种被称为事务登录的技术跟踪对磁盘的修改。因此,NTFS可以在几秒钟内恢复错误。
3、稳定性
NTFS文件系统的文件不易受到病毒和系统崩溃的侵袭。这种抗干扰能力直接源自于Windows NT操作系统的高度安全性能,NTFS文件系统只能被WindowsNT以及以NT为内核的Windows 2000/XP以上系统所识别。即使FAT和NTFS两种文件系统在一个磁盘中并存时,NTFS采用与FAT不同的方法来定位文件映像,克服了FAT文件系统存在许多闲置扇区空间的缺点。
4、向下的可兼容性
NTFS文件系统可以存取FAT文件系统和HPFS文件系统的数据,如果文件被写入
可移动磁盘(特别是软盘)时,它将自动采用FAT文件系统。
5、可靠性
NTFS把重要交易作为一个完整交易来处理,只有整个交易完成之后才算完成,这样可以避免数据丢失。如向NTFS分区中写文件时,会在内存中保留文件的一份拷贝,然后检查向磁盘中所写的文件是否与内存中的一致。如果两者不一致,操作系统就把相应的扇区标为坏扇区而不再使用它(簇重映射),然后用内存中保留的文件拷贝重新向磁盘上写文件。如果在读文件时出现错误,NTFS则返回一个读错误信息,并告知相应的应用程序数据已经丢失。
6、大容量
NTFS彻底解决存储容量限制,最大可支持16EB。(1024B=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB,1024TB=1PB,1024PB=1EB)。NTFS的簇大小一般从512字节到4KB。
7、长文件名
NTFS允许长达255个字符的文件名,突破FAT的8.3标准限制(FAT规定主文件名为8个字符扩展名为3个字符)。NTFS文件系统的最大缺点就是它只能被WindowsNT/2000/XP以上系统、Linux系统所识别。虽然NTFS文件系统可以存取FAT文件系统的文件,但它的文件却不能被FAT文件系统所存取,当系统崩溃时我们只有用软盘、光盘或U盘启动,启动后他们用的FAT或FAT32文件系统是是无法访问NTFS文件系统的给数据抢救带来不便。
系统结构
NTFS和FAT32文件系统在结构上几乎是完全不同的两种文件系统,NTFS自身具有很多新的特征,比如安全性、容错性、文件压缩和磁盘配额等,都是相对其他系统特殊的地方。NTFS分区主要由引导扇区、主文件表(Master File Table,MFT)、系统文件和文件存储区域等4个部分组成。
1、NTFS数据存储结构
在NTFS文件系统中,对文件进行存取都是按照簇分配的,而每个簇都是物理扇区的整数倍,并且簇大小是物理扇区的2的整数次方,但NTFS文件系统里,簇的大小则是由格式化程序根据卷的大小自动分配。NTFS要使用逻辑簇号(logicalcluster number,简称LCN)和虚拟簇号(virtualcluster number,简称VCN)来对簇进行定位,同时,通过LCN来对整个卷中的所有簇从头到尾按照顺序进行编号,将卷因子乘以LCN,就可以得到卷上物理字节的偏移量,从而可去顶物理磁盘的详细地址。VCN则是对特定文件的簇从头到尾按照顺序进行编号,方便引用文件中的数据。在NTFS中,卷上的所有的数据信息都存储在文件中,这当中包含了引导程序(即用来获取及定位文件的一种数据结构)以及位图文件(记录卷使用情况和大小)。一般来说,不论簇的大小会是多少,文件记录的大小都将是固定不变的,且为1KB。
2、分区引导扇区
在操作系统引导的过程中,分区引导扇区起着很重要的作用,其中存储着和卷文件相关的结构信息和启动引导程序等。操作系统在建立文件系统时,生成的BPB参数记录着NTFS系统中的很多重要信息,包含了每簇扇区数、分区的扇区总数、MFT的起始逻辑簇号、文件系统标识等信息。在NTFS中,分区上的所有数据都是以文件的形式存储的。
3、主文件表MFT
主文件表MFT在NTFS文件系统中处于最核心、最重要的地位,通过MFT可以确定所有文件在磁盘上的详细存储位置。主文件表由一系列文件记录组成,是一个与文件对应的数据库,卷中的每一个文件都包含着一个文件记录,其中的第一个文件记录是基本文件记录,它主要存储着其它扩展文件记录的一些详细信息。MFT文件记录数组中的文件记录在物理上是连续的,并且都是从0开始编号。MFT仅供系统自身构架、组织文件系统使用,被称作元数据。所有的元文件名字都是以“$”开始,其都是隐藏文件。MFT表中的前16个元数据是最重要的。为了防止数据的丢失,在卷存储区中,NTFS系统对它们进行了备份。
4、NTFS文件属性
NTFS的文件记录属性一般可以分为两种:即常驻属性和非常驻属性。如果属性值是存储在文件记录中,这些属性即称作常驻属性;反之,如果属性值存储在文件记录之外,这些属性即称作非常驻属性。属性头的前4个字节是属性类型,其中包含着描述文件基本信息的属性(如文件的读写特性、文件的创建时间以及修改时间等)、文件名属性(如文件名及其长度、分配空间的大小、文件实际占用空间的大小和文件的最后访问时间等)和用于描述文件内容的数据属性等内容。
系统优点
NTFS所以被广泛应用,除了因为Microsoft公司本身在操作系统市场的绝对优势,其本身也具有诸多优点:
1、NTFS中的所有文件是以key-value的形式存储和组织的,能够迅速地通过文件属性key来寻找和定位任意文件的value值,提高了操作系统对文件数据的处理效率。
2、为系统文件或重要文件建立
安全描述符,凡是通过操作系统或API对文件进行修改和破坏的行为,都受到操作系统的保护。近年来出现的绕过操作系统或者直接访问硬件磁盘闪存等行为,暂时不能通过文件系统进行保护。
3、NTFS不绑定某个硬件磁盘扇区,当发现磁盘受到破坏或无法读取数据时,将通过操作系统相关机制对扇区或卷进行复位。文件系统的这种独立性,使得NTFS本身具有更高的安全性。
4、具有可扩容的卷空间。操作系统将所有数据按照文件的形式存储和统一管理,目的之一是实现连续数据的非连续存储。在不对信息进行分类区分而是统一管理下,卷的状态和管理更加容易进行管理。
NTFS & FAT
概念
FAT是
文件分配表的英文缩写。自1981年首次问世以来,FAT已经成为一个历经沧桑的计算机术语。由于时代原因,包括Windows NT、Window 98、Mac OS以及多种UNIX版本在内的大多数操作系统均对FAT提供支持。FAT文件系统限制使用
8.3格式的文件命名规范,在一个文件名中,句点之前部分的最大长度为8个字符,句点之后部分的最大长度为3个字符。FAT文件系统中的文件名必须以字母或数字开头,并且不得包含空格。此外,FAT文件名不区分大小写字母。
为弥补FAT在功能上的缺陷,Microsoft创建了一种称作NTFS的新型文件系统技术。NTFS所提供的新增特性包括容错性和增强安全性等等。
兼容性
在确定某一分区所需使用的文件系统类型前,必须首先考虑兼容性问题。如果多种操作系统都将对该分区进行访问,那么必须使用一种所有操作系统均可读取的文件系统。通常情况下,具备普遍兼容性的FAT文件系统可以胜任这种要求。相比之下,只有Windows NT能够支持NTFS分区。
这种限制条件仅适用于本地计算机。举例来说,如果一台计算机上同时安装了Windows NT与Windows 98两种操作系统,并且这两种操作系统都需要对同一个分区进行访问,那么必须通过FAT方式对该分区进行格式化。与此相反,如果这台计算机上只安装了Windows NT一种操作系统,则可以将该分区格式化为NTFS,此时,运行其它操作系统的计算机仍可通过网络方式对该分区进行访问。
卷容量
另一项决定因素为分区物理容量。FAT最大支持2GB分区容量。如果分区容量超过2GB,必须通过NTFS方式对其进行格式化,或者将其拆分为多个容量较小的分区。需要注意的是,NTFS本身所需耗费的资源多于FAT。如果所使用的分区容量小于200MB,应当选择FAT文件系统以避免
NTFS文件系统自身占用过多磁盘空间,NTFS分区的最大容量为16EB。
容错性
NTFS还可在不显示错误消息的情况下自动修复硬盘错误。当Windows NT向NTFS分区中写入文件时,它将在内存中为该文件保留一个备份。当写入操作完成后,Windows NT将再次读取该文件以验证其是否与内存中所存储的备份相匹配。如果两份拷贝内容不一致,Windows NT将把硬盘上的相应区域标记为受损并不再使用这一区域。此后,它将使用存储在内存中的文件拷贝在硬盘的其它位置上重新写入文件。
FAT文件系统未提供任何安全保护特性。FAT所采取的保护措施便是同时维护文件分配表的两份拷贝,如果其中一份拷贝遭到破坏,它将自动使用另一份拷贝对其进行修复。然而,这一功能必须通过诸如Scandisk之类的实用工具方可实现。
安全性
NTFS拥有一套内建安全机制,可以为目录或单个文件设置不同权限。这些权限可以在本地及远程对文件与目录加以保护。如果正在使用FAT文件系统,那么安全特性将通过共享权限加以实现。共享权限将通过网络对文件予以保护,该特性无法提供本地保护措施。假设拥有一台包含几百名用户的服务器,而每名用户又拥有自己的目录,为对其进行管理,可能需要同时维护数以百计的共享权限。这些共享权限可能相互重叠,从而导致更大的复杂性。
系统分区
一种较为理想的解决方案是将系统分区格式化为FAT文件系统。如果对系统安全性的要求不高,则为系统分区指定较小的分区容量并且不在该分区上存放除Windows系统文件以外的任何内容。除非未经授权的用户能够通过物理方式对计算机进行访问,否则,FAT文件系统在安全性方面还是完全值得信赖的。
MFT主控文件表
除了储存用户的文件和目录数据外,NTFS将一些用于磁盘管理的数据也储存在文件中,当初始化一个NTFS磁盘时,NTFS将创建元数据文件。
(一)MFT
主控文件表MFT映射了磁盘上所有文件和目录,包括NTFS的元数据文件。MFT以记录为单位进行划分,其本身也是一个由NTFS用MFT中的记录映射的文件。这样的结构使MFT很容易扩展,使NTFS能很有效率地追踪现存的元数据数量,来决定它们所占用的空间。NTFS在内部使用MFT中的记录来标识文件和目录,这些记录描述了这些元数据的开始位置信息。因为MFT也是文件,当MFT变大而其它的文件使用的簇正好在它原来的结束处之后,MFT必须在磁盘中找另一处未使用的空间,这样就导致MFT文件所映射的簇的顺序不连续了。为了避免MFT碎裂,NTFS在MFT周围保留一定范围的簇不分配给其它的文件和目录,这样,在MFT需要增长时,能增加找到连续簇的机会,也能尽量少的使MFT靠近其它的数据。因此,在磁盘
剩余容量较小时,MFT变得破碎的危险将会增加。
(二)MFT中的记录
NTFS使用属性储存所有的文件和目录信息。属性包括:属性表头和属性数据。表头储存属性的类型、名字和标志,记录着属性数据的位置。MFT中的记录由一个包含关于记录的基本信息的小表头和紧跟着的一些属性组成,这些属性用于描述记录所对应的文件或目录的数据或特性。NTFS将在MFT记录里面直接储存属性数据。存储在MFT记录中的属性称为常驻属性,其它的称为非常驻属性。只有当记录表头、属性表头、属性数据都能放入一个记录时,属性才能是一个常驻属性。因此,1KB(通常的MFT记录大小)是NTFS磁盘上的属性数据长度的上限。如果属性的数据是常驻的,属性表头将指向在MFT记录中的数据的位置。由于属性和大量的数据可能跨越多个MFT记录,而运行要覆盖文件的不同的部分,而运行由多个运行项组成,一个运行项包含一个虚拟簇号(VCN),它是属性数据内部簇的顺序编号;一个逻辑簇号(LCN),它是数据储存在磁盘上的位置;以及数据在磁盘上所占用空间的连续簇的数量。如果一个文件有太多属性要填入MFT记录中,NTFS将分配附加的记录并在基本记录中储存一个属性-列表属性。属性列表指向在附加记录中的属性的位置,列表的每一项对应着一个属性。
磁盘管理:删除文件
当文件被彻底删除后,系统会将其主文件表MFT记录收回,并加上删除标记,同时将该文件所占用的数据区也一并收回,并把元文件中簇的表示信息使用清空,在对应位置上设为0。对删除文件的文件记录和数据区所占用的所有空间都可再分配给其他的文件使用。NTFS系统中的文件在删除后,其原先的数据空间如果没有被新的数据所覆盖的话,只要FILE记录还存在,则将很容易找到文件数据的详细存储位置,并能将这些数据准确的恢复出来。如果删除的文件包含在其他文件夹中,那么文件被删除后,该文件夹也要将该文件的目录项删除。文件删除的后遗留的痕迹也可以从主文件表MFT记录中获取到。
操作系统将文件删除后,那么文件原先占用的文件号可能很快被再次分配,但其数据区中的数据可能要很长时间才被重新分配。
数据恢复
对于数据的恢复,可以根据不同的删除原理进行数据的恢复:
1、文件删除后的恢复
根据分析可知,
NTFS文件系统中,在文件被彻底删除之后,系统会将此文件记录中的状态字节由文件使用标志“01”变为文件删除标志“00”,而其文件名称、文件的大小以及Run List等重要属性都不会发生变化,而且数据区中的内容也不会发生变化,因此可以将文件数据恢复。但是,如果该文件不是使用连续的簇号来存储文件数据,或者文件的数据区已被新的数据所占用,即原数据区被覆盖,那么,文件就很难被恢复出来。如果数据是使用连续的簇号存储,且数据区中的数据没有被新数据覆盖,那么,就可以使用WinHex等常用恢复软件进行恢复。只需要选择数据区的全部内容并进行复制,然后将该文件的数据区中所有十六进制值保存为一个新文件,即可实现文件的恢复。
2、文件格式化后的恢复
文件的格式化其实是给分区重新建立文件系统,
格式化后,分析分区的MFT文件可发现,文件的记录和内容也是完好存在的,其数据区也没有改变。所以,通过RunList就可以找到这些数据,并有可能将其恢复。但是,如果文件记录也被破坏,文件就很难再被恢复出来。
3、文件系统损坏的恢复
当某个分区的文件系统被破坏后,我们是无法打开此分区的,同时系统会提示我们分区没有格式化,需要重新格式化。此时,可以通过WinHex等软件打开分区的DBR扇区(扇区中的数据被全部清零),只要能够找到DBR备份就可以将数据恢复出来。跳转到硬盘的最后一个分区后,找到数据结束标志“55AA”,DBR的备份就存储在分区的最后一个扇区中,将此备份复制到DBR扇区后就可以打开分区了。