无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 4720|回复: 8
打印 上一主题 下一主题

【转帖】 NTFS文件系统

[复制链接]
跳转到指定楼层
1#
发表于 2009-8-30 10:22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
NTFS概述
  NTFS (New Technology File System)是 Windows NT 操作环境和 Windows NT 高级服务器网络操作系统环境的文件系统。NTFS 的目标是提供:可靠性,通过可恢复能力(事件跟踪)和热定位的容错特征实现;增加功能性的一个平台;对 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 从长文件名的开始字符中产生的。
  convert命令将FAT32无损转成NTFS格式
  将FAT 卷转换成 NTFS。 CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X] volume 指定驱动器号(后面跟一个冒号)、 装载点或卷名,但不能反过来无损操作。
  例如,将D盘转换为NTFS格式,则需命令 convert d:/fs:ntfs。
NTFS的特点
  ·NTFS可以支持的分区(如果采用动态磁盘则称为卷)大小可以达到2TB。而Win 2000中的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使用一个“变更”日志来跟踪记录文件所发生的变更。
  ·还有诸如加密文件数据等等,和系统服务相关的东西不少。
NTFS的优点
  1.具备错误预警的文件系统
  [3]在NTFS分区中,最开始的16个扇区是分区引导扇区,其中保存着分区引导代码,接着就是主文件表(Master File Table,以下简称MFT),但如果它所在的磁盘扇区恰好出现损坏,NTFS文件系统会比较智能地将MFT换到硬盘的其他扇区,保证了文件系统的正常使用,也就是保证了Windows的正常运行。而以前的FAT16和FAT32的FAT(文件分配表)则只能固定在分区引导扇区的后面,一旦遇到扇区损坏,那么整个文件系统就要瘫痪。
  但这种智能移动MFT的做法当然并非十全十美,如果分区引导代码中指向MFT的部分出现错误,那么NTFS文件系统便会不知道到哪里寻找MFT,从而会报告“磁盘没有格式化”这样的错误信息。为了避免这样的问题发生,分区引导代码中会包含一段校验程序,专门负责侦错。
  2.文件读取速度更高效
  恐怕很多人都听说NTFS文件系统在安全性方面有很多新功能,但你可否知道:NTFS在文件处理速度上也比FAT32大有提升呢?
  对DOS略知一二的读者一定熟悉文件的各种属性:只读、隐藏、系统等。在NTFS文件系统中,这些属性都还存在,但有了很大不同。在这里,一切东西都是一种属性,就连文件内容也是一种属性。这些属性的列表不是固定的,可以随时增加,这也就是为什么你会在NTFS分区上看到文件有更多的属性.
  NTFS文件系统中的文件属性可以分成两种:常驻属性和非常驻属性,常驻属性直接保存在MFT中,像文件名和相关时间信息(例如创建时间、修改时间等)永远属于常驻属性,非常驻属性则保存在MFT之外,但会使用一种复杂的索引方式来进行指示。如果文件或文件夹小于1500字节(其实我们的电脑中有相当多这样大小的文件或文件夹),那么它们的所有属性,包括内容都会常驻在MFT中,而MFT是Windows一启动就会载入到内存中的,这样当你查看这些文件或文件夹时,其实它们的内容早已在缓存中了,自然大大提高了文件和文件夹的访问速度。
  3.磁盘自我修复功能
  NTFS利用一种“自我疗伤”的系统,可以对硬盘上的逻辑错误和物理错误进行自动侦测和修复。在FAT16和FAT32时代,我们需要借助Scandisk这个程序来标记磁盘上的坏扇区,但当发现错误时,数据往往已经被写在了坏的扇区上了,损失已经造成。
  NTFS文件系统则不然,每次读写时,它都会检查扇区正确与否。当读取时发现错误,NTFS会报告这个错误;当向磁盘写文件时发现错误,NTFS将会十分智能地换一个完好位置存储数据,操作不会受到任何影响。在这两种情况下,NTFS都会在坏扇区上作标记,以防今后被使用。这种工作模式可以使磁盘错误可以较早地被发现,避免灾难性的事故发生。
  有些人发现当把磁盘转换为NTFS文件系统后,用磁盘扫描程序就很难发现磁盘错误了。经过前面的介绍,你知道这是为什么了吗?
  4.“防灾赈灾”的事件日志功能
  在NTFS文件系统中,任何操作都可以被看成是一个“事件”。比如将一个文件从C盘复制到D盘,整个复制过程就是一个事件。事件日志一直监督着整个操作,当它在目标地——D盘发现了完整文件,就会记录下一个“已完成”的标记。假如复制中途断电,事件日志中就不会记录“已完成”,NTFS可以在来电后重新完成刚才的事件。事件日志的作用不在于它能挽回损失,而在于它监督所有事件,从而让系统永远知道完成了哪些任务,那些任务还没有完成,保证系统不会因为断电等突发事件发生紊乱,最大程度降低了破坏性。
  5.ntfs动态磁盘功能
  动态磁盘是从Windows 2000时代开始的新特性,Windows Server 2003继续使用了这个相当棒的特性。相比基本磁盘,它提供更加灵活的管理和使用特性。您可以在动态磁盘上实现数据的容错、高速的读写操作、相对随意的修改卷大小等操作,而不能在基本磁盘上实现。动态磁盘没有卷数量的限制,只要磁盘空间允许,您可以在动态磁盘中任意建立卷。动态磁盘,我们可以将数块磁盘中的空余磁盘空间扩展到同一个卷中来增大卷的容量。基本磁盘的读写速度由硬件决定,不可能在不额外消费的情况下提升磁盘效率。在动态磁盘上创建带区卷来同时对多块磁盘进行读写,显著提升磁盘效率。
  使用Windows XP 2000 2003等系统安装盘给硬盘分区时,往往发现不管硬盘大小,不管分区大小,最后总有8M的空间被剩余下来。这8M空间是用来转换成动态磁盘的。创建Raid时必须要有不小于8M的动态磁盘,所以Windows操作系统在进行分区时会自动留下8M的空间。
  基本磁盘不可容错,如果没有及时备份而遭遇磁盘失败,会有极大的损失。在动态磁盘上创建镜像卷,所有内容自动实时被镜像到镜像磁盘中,即使遇到磁盘失败也不必担心数据损失了。在动态磁盘上创建带有奇偶校验的带区卷,来保证提高性能的同时为磁盘添加容错性。
  动态磁盘提供了基本磁盘不具备的一些特性,例如创建可跨越多个磁盘的卷(跨区卷和带区卷)和创建具有容错能力的卷(镜像卷和 RAID-5 卷)的能力。动态磁盘上的所有卷都是动态卷。有五种类型的动态卷:简单卷、跨区卷、带区卷、镜像卷和 RAID-5 卷。镜像卷和 RAID-5 卷具有容错功能,仅在运行 Windows 2000 Server、Windows 2000 Advanced Server、Windows 2000 Datacenter Server 或 Windows Server 2003 操作系统的计算机上可用。不过,也可以通过运行 Windows XP Professional 的计算机在这些操作系统上远程创建镜像卷和 RAID-5 卷。不管动态磁盘使用主启动记录 (MBR) 还是 GUID 分区表 (GPT) 分区样式,都可以创建最多 2,000 个动态卷,但是动态卷的推荐值是 32 个或更少。
  6.我是否需要哪些附加的功能?
  其实,NTFS还提供了磁盘压缩、数据加密、磁盘配额(在“我的电脑”中右击分区并并行“属性”,进入“配额”选项卡即可设置)、动态磁盘管理等功能,这些功能在很多报刊杂志上介绍的比较多了,这里不再详细介绍。
  NTFS提供了为不同用户设置不同访问控制、隐私和安全管理功能。如果你的系统处于一个单机环境,比如家用电脑,那么这些功能对你意义不是很大。
NTFS使用注意事项
  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大硬盘数据恢复修复过程:该硬盘为只有一个NTFS分区的数据盘,先在DOS下用扇区编辑软件查看LBA0--63扇区,结果发现分区表和63扇区都有错误,1—62扇区间有大量扇区被写上不明代码,87-102扇区不正常,先手工修复分区表,恢复63引导扇区,删除1—62扇区间的代码。87-102扇区之间暂不处理,到WINDOWS下检查,结果还是出现同样的提示,试用恢复软件1,可以看到目录结构,再试FINALDATE,这个软件此时太不尽人意;用恢复软件1选择某目录进行试恢复,结果28个试恢复文件只恢复2个,其余的全部为0字节,恢复工作陷入困境。再次对79-102扇区进行分析,79扇区面目全非,被严重篡改破坏,80-86扇区被清空,87-102扇区的内容也不正常。经过一番苦思冥想,对某些扇区进行备份后做清除,备份被放到1-62扇区之间,以备不测时改回原样。
[编辑本段]在网站架设中因NTFS产生的故障和解决方式
  我们知道,在Windos 2000/2003 Server系统NTFS分区中的文件或文件夹,其默认权限主要是管理员等系统用户账户来添加的。而用户访问网站却是通过“Internet来宾帐户”来完成的。该账户在安装IIS后会自动创建,它并不会自动拥有NTFS中文件(夹)的访问权限。这样用户访问网站时,如果网站的内容不是放在默认的WWW中,那么则很可能因为“Internet来宾”无法操作而出现无法匿名访问等问题。[4]
  故障解决
  由此看来,问题的症结都是因为采用了NTFS分区格式。那么只要以后不采用NTFS格式,而使用传统的Fat32格式,问题不就是解决了吗?确实如此,如果使用Fat32格式,那么则不会再出现因为权限设置的问题导致网站无法访问。但是另外一个问题也随之而来,Fat32分区没有安全配置,无法对文件的操作权限进行管理,使得安全性和性能得到了下降。
  那么最佳的解决方法是什么呢?那就是给网站文件夹重新设置权限。打开网站文件所存放的目标文件夹属性窗口,切换到“安全”标签,在这里我们可以看到只有Administrators、System、Users等组显示在其中。此时,我们需要单击“添加”按钮,在打开的“选择用户或组”窗口中单击“高级”按钮,然后再单击“立即查找”命令,这样即会在“搜索结果”中显示搜索到的系统中所有的账户或组名称,我们只需要选中其中的“IUSR_计算机名称”账户(注意,下划线后面的内容和计算机名称相同),单击“确定”按钮返回权限设置窗口。这时候,我们就可以看到添加进来的“Internet来宾帐户”了。如果只是普通的静态页面,那么只需分配其“读取和运行”、“列出文件夹目标”等控制能力较低的权限即可;如果是动态asp类型的页面,需要互动的,那么则要拥有“修改”、“写入”等权限,分配好权限后单击“确定”按钮保存设置。
  这样的故障还会在一些动态网站中出现,一些基于asp、asp.net等语言下编写的动态网站,可以将asp文件转换成静态的html文件,以提高访问速度,并利于搜索引擎收录,但如果设置的权限级别较低,在转换时将会出错。


[ 本帖最后由 天涯海角1216 于 2009-8-30 11:49 编辑 ]
2#
 楼主| 发表于 2009-8-30 10:30:19 | 只看该作者

全面了解NTFS文件系统结构(一)

解读NTFS

NTFS是一个比FAT复杂的多的文件系统,我们一起努力来把它完整的解读出来
NTFS的引导扇区也是完成引导和定义分区参数,和FAT分区不同,FAT分区的BOOT记录正常,就显示分区没有错误,即使文件不正确,而NTFS分区的BOOT不是分区的充分条件,它要求必须MFT中的系统记录如$MFT等正常该分区才能正常访问。其BPB参数如下表所示。
字节偏移 长度 常用值 意义
0x0B 字 0x0002 每扇区字节数
0x0D 字节 0x08 每簇扇区数
0x0E 字 0x0000 保留扇区
0x10 3字节 0x000000 总为0
0x13 字 0x0000 NTFS未使用,为0
0x15 字节 0xF8 介质描述
0x16 字 0x0000 总为0
0x18 字 0x3F00 每磁盘扇区数
0x1A 字 0xFF00 磁头数
0x1C 双字 0x3F000000 隐含扇区
0x20 双字 0x00000000 NTFS未使用,为0
0x28 8字节 0x4AF57F0000000000 扇区总数
0x30 8字节 0x0400000000000000 $MFT的逻辑簇号
0x38 8字节 0x54FF070000000000 $MFTMirr的逻辑簇号
0x40 双字 0xF6000000 每MFT记录簇数
0x44 双字 0x01000000 每索引簇数
0x48 8字节 0x14A51B74C91B741C 卷标
0x50 双字 0x00000000 检验和
MFT中的文件记录大小一般是固定的,不管簇的大小是多少,均为1KB。文件记录在MFT文件记录数组中物理上是连续的,且从0开始编号,所以,NTFS是预定义文件系统。MFT仅供系统本身组织、架构文件系统使用,这在NTFS中称为元数据(metadata,是存储在卷上支持文件系统格式管理的数据。它不能被应用程序访问,只能为系统提供服务)。其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。这些元数据文件的名字都以“$”开始,所以是隐藏文件,在Windows 2000/XP中不能使用dir命令(甚至加上/ah参数)像普通文件一样列出。在WINHEX中带有NFI.EXE,用此工具可以显示这些记录与文件的对应关系。
这些元数据文件是系统驱动程序管理卷所必需的,Windows 2000/XP给每个分区赋予一个盘符并不表示该分区包含有Windows 2000/XP可以识别的文件系统格式。如果主文件表损坏,那么该分区在Windows 2000/XP下是无法读取的。为了使该分区能够在Windows 2000/XP下能被识别,就必须首先建立Windows 2000/XP可以识别的文件系统格式即主文件表,这个过程可通过高级格式化该分区来完成。Windows以簇号来定位文件在磁盘上的存储位置,在FAT格式的文件系统中,有关簇号的指针包含在FAT表中,在NTFS中,有关簇号的指针则包含在$MFT及$MFTMirr文件中。
NTFS使用逻辑簇号(Logical Cluster Number,LCN)和虚拟簇号(Virtual Cluster Number,VCN)来对簇进行定位。LCN是对整个卷中所有的簇从头到尾所进行的简单编号。用卷因子乘以LCN,NTFS就能够得到卷上的物理字节偏移量,从而得到物理磁盘地址。VCN则是对属于特定文件的簇从头到尾进行编号,以便于引用文件中的数据。VCN可以映射成LCN,而不必要求在物理上连续。

在NTFS卷上,跟随在BPB后的数据字段形成一个扩展BPB。这些字段中的数据使得 Ntldr能够在启动过程中找到主文件表MFT(Master File Tabl )。在NTFS卷上,MFT并不象在FAT 16卷和FAT 32卷上一样,被放在一个预定义的扇区中。由于这个原因,如果在MTF的正常位置中有坏扇区的话,就可以把MFT移到别的位置。但是,如果该数据被破坏,就找不到MFT的位置,Windows 2000假设该卷没有被格式化。
因此,如果一个ntfs的卷提示未格式化,可能并未破坏MFT,依据BPB的各字段的意思是可以重建BPB的。
NTFS的缺省簇的大小
卷大小 每簇的扇区 缺省的簇大小
小于等于512MB 1 512字节
513MB~1024MB(1GB) 2 1024字节(1KB)
1025MB~2048MB(2GB) 4 2048字节(2KB)
大于等于2049MB 8(4KB)

从上面可以看出,也就是说不管驱动器多大 NTFS 簇的大小不会超过 4KB

NTFS文档:文档属性定义

每个文档属性都由以下部分组成:
一个由该属性的实际值组成的被称为“流”的重要的字节序列,元数据可访问该流。
文件中的每个文件属性都可能会有一个名字:在这种情况下,在命令行方式下可以通过语法“文件名:属性名”来访问该流(这也是文件名中不能使用“:”的原因)。Windows NT® 使用以下在元数据文件$AttrDef中预定义的文件属性列表(一般会有一个未命名流,为缺省流,未命名流只能有一个,而命名流可以有多个,NTFS支持多流文件):
10 $STANDARD_INFORMATION (标准信息)
20 $ATTRIBUTE_LIST (属性列表)
30 $FILE_NAME (文件名)
40 $VOLUME_VERSION (卷版本)
50 $SECURITY_DEscriptOR (安全描述符)
60 $VOLUME_NAME (卷名)
70 $VOLUME_INFORMATION (卷信息)
80 $DATA (数据)
90 $INDEX_ROOT (索引根)
A0 $INDEX_ALLOCATION (索引分配)
B0 $BITMAP (位图)
C0 $SYMBOLIC_LINK(符号链接)
D0 $EA_INFORMATION (?信息)
E0 $EA


属性流结构

每个文件属性都分为两部分:尽管这两部分属性在文件记录的属性列表中以倒序方式进行记录,但是为了更好的理解它,让我们按下面的顺序进行介绍:
内容部分:
它的结构总是以属性名开始(N字节长),在属性名之后定义该属性是否为常驻属性。当文件属性的数据流就存储在其属性名后时,它就是常驻属性,这样,对于那些流较小且不会增长的文件属性就可以提供更佳的访问次数。如果一个文件属性是非常驻的,那么其流就存储流的实际大小:
文件属性流在压缩前的大小。
流的初始化大小:
这是文件属性流的压缩后的大小(总是低于分配大小)。如果此流未被压缩,就是它的实际大小 。
注意:
常驻文件属性从不被压缩(也没有压缩引擎号域),因为它的流太小。
信息是足够的:名字长+内容部分的偏移值 =到流的偏移值(常驻属性)或者到运行列表的偏移值(非常驻悔改)。
回复

使用道具 举报

3#
 楼主| 发表于 2009-8-30 10:31:13 | 只看该作者

全面了解NTFS文件系统结构(二)

NTFS文件系统结构分析
在NTFS文件系统中,文件存取是按簇进行分配,一个簇必需是物理扇区的整数倍,而且总是2的整数次方。NTFS文件系统并不去关心什么是扇区,也不会去关心扇区到底有多大(如是不是512字节),而簇大小在使用格式化程序时则会由格式化程序根据卷大小自动的进行分配。
文件通过主文件表(MFT)来确定其在磁盘上的存储位置。主文件表是一个对应的数据库,由一系列的文件记录组成--卷中每一个文件都有一个文件记录(对于大型文件还可能有多个记录与之相对应)。主文件表本身也有它自己的文件记录。
NTFS卷上的每个文件都有一个64位(bit)称为文件引用号(File Reference Number,也称文件索引号)的唯一标识。文件引用号由两部分组成:一是文件号,二是文件顺序号。文件号为48位,对应于该文件在MFT中的位置。文件顺序号随着每次文件记录的重用而增加,这是为NTFS进行内部一致性检查而设计的。
NTFS使用逻辑簇号(Logical Cluster Number,LCN)和虚拟簇号(Virtual Cluster Number,VCN)来进行簇的定位。LCN是对整个卷中所有的簇从头到尾所进行的简单编号。卷因子乘以LCN,NTFS就能够得到卷上的物理字节偏移量,从而得到物理磁盘地址。VCN则是对属于特定文件的簇从头到尾进行编号,以便于引用文件中的数据。VCN可以映射成LCN,而不必要求在物理上连续。
NTFS的目录只是一个简单的文件名和文件引用号的索引,如果目录的属性列表小于一个记录的长度,那么该目录的所有信息都存储在主文件表的记录中,对于大于记录的目录则使用B+树进行管理。

主文件表中的基本文件记录中有一个指针指向一个存储非常驻索引缓冲--包括该目录下所有下一级子目录和文件的外部簇,而B+树结构便于大型目录中文件和子目录的快速查找。
在NTFS中,所有存储在卷上的数据都包含在文件中,包括用来定位和获取文件的数据结构,引导程序和记录这个卷的记录(NTFS元数据)的位图,这体现了NTFS的原则:磁盘上的任何事物都为文件。在文件中存储一切使得文件系统很容易定位和维护数据,而在NTFS中,卷中所有存放的数据均在一个叫做MFT的文件记录数组中,称为主文件表(Master File Table),MFT是由高级格式化产生的。而MFT则由文件记录(File Record)数组构成。File Record的大小一般是固定的,不管簇的大小是多少,均为1KB,这个概念相当于Linux中的inode(i节点)。File Record在MFT文件记录数组中物理上是连续的,且从0开始编号。MFT仅供系统本身组织、架构文件系统使用,这在NTFS中称为元数据(metadata)。其中最基本的前16个记录是操作系统使用的非常重要的元数据文件。这些NTFS主文件表的重要的元数据文件都是以$(美元符号)开始的名字,所以是隐藏文件,在Windows 2000中不能使用dir命令(甚至加上/ah参数)像普通文件一样列出这些元数据文件。实际上File System Driver(ntfs.sys)维护了一个系统变量NTFS Protect System Files用于隐藏这些元数据。但是微软公司也提供了一个OEM TOOL,叫做NFI.EXE,用此工具可以转储NTFS主文件表的重要的元数据文件(元数据:是存储在卷上支持文件系统格式管理的数据。它不能被应用程序来访问,它只能为系统提供服务),使用NFI显示结果如下:

C:\>nfi C: |MORE

而这些元数据文件文件是系统驱动程序装配卷所必需的,WINDOWS 2000给每个分区赋予一个盘符并不表示该分区包含有WINDOWS 2000可以识别的文件系统格式,如果一旦主文件表损坏,那么该分区在WINDOWS 2000下是无法读取的。为了使该分区能够在WINDOWS 2000下能被识别,也就是必须首先建立WINDOWS 2000可以识别的文件系统格式即主文件表,这可通过高级格式化该分区来完成。众所周知,Windows以簇号来定位文件在磁盘存储的位置,在FAT格式的文件系统中有关簇号的指针是包含在FAT表中的,而在NTFS中有关簇号的指针是包含在$MFT及$MFTMirr文件中的。
NTFS元文件
伴随着以上这些新增功能的是更多的用于存放与功能相关的数据的元文件。最后,在下面的表中罗列出NTFS5中所有的元文件:

每个MFT记录都对应着不同的文件,如果一个文件有很多属性或是分散成很多碎片,就很可能需要多个文件记录。这时,存放其文件记录位置的第一个记录就叫做“基文件记录”(base file record)。
MFT中的第1个记录就是MFT自身。由于MFT文件本身的重要性,为了确保文件系统结构的可靠性,系统专门为它准备了一个镜像文件($MftMirr),也就是MFT中的第2个记录。
第3个记录是日志文件($LogFile)。该文件是NTFS为实现可恢复性和安全性而设计的。当系统运行时,NTFS就会在日志文件中记录所有影响NTFS卷结构的操作,包括文件的创建和改变目录结构的命令,例如复制,从而在系统失败时能够恢复NTFS卷。
第4个记录是卷文件($Volume),它包含了卷名、被格式化的卷的NTFS版本和一个标明该磁盘是否损坏的标志位(NTFS系统以此决定是否需要调用Chkdsk程序来进行修复)。
第5个记录是属性定义表($AttrDef,attribute definition table),其中存放了卷所支持的所有文件属性,并指出它们是否可以被索引和恢复等。
第6个记录是根目录(\),其中保存了存放于该卷根目录下所有文件和目录的索引。在访问了一个文件后,NTFS就保留该文件的MFT引用,第二次就能够直接进行对该文件的访问。
第7个记录是位图文件($Bitmap)。NTFS卷的分配状态都存放在位图文件中,其中每一位(bit)代表卷中的一簇,标识该簇是空闲的还是已被分配了的,由于该文件可以很容易的被扩大,所以NTFS的卷可以很方便的动态的扩大,而FAT格式的文件系统由于涉及到FAT表的变化,所以不能随意的对分区大小进行调整。
第8个记录是引导文件($Boot),它是另一个重要的系统文件,存放着Windows 2000/XP的引导程序代码。该文件必须位于特定的磁盘位置才能够正确地引导系统。该文件是在Format程序运行时创建的,这正体现了NTFS把磁盘上的所有事物都看成是文件的原则。这也意味着虽然该文件享受NTFS系统的各种安全保护,但还是可以通过普通的文件I/O操作来修改。
第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记录是是系统保留记录,用于将来扩展。
MFT的前16个元数据文件是如此重要,为了防止数据的丢失,NTFS系统在该卷文件存储部分的正中央对它们进行了备份,参见下图。
  
NTFS把磁盘分成了两大部分,其中大约12%分配给了MFT,以满足其不断增长的文件数量。为了保持MFT元文件的连续性,MFT对这12%的空间享有独占权。余下的88%的空间被分配用来存储文件。而剩余磁盘空间则包含了所有的物理剩余空间--MFT剩余空间也包含在里面。MFT空间的使用机制可以这样来描述:当文件耗尽了存储空间时,Windows操作系统会简单地减少MFT空间,并把它分配给文件存储。当有剩余空间时,这些空间又会重新被划分给MFT。虽然系统尽力保持MFT空间的专用性,但是有时不得不做出牺牲。尽管MFT碎片有时是无法忍受的,却无法阻止它的发生。
那么NTFS到底是怎么通过MFT来访问卷的呢?首先,当NTFS访问某个卷时,它必须“装载”该卷:NTFS会查看引导文件(在图中的$Boot元数据文件定义的文件),找到MFT的物理磁盘地址。然后它就从文件记录的数据属性中获得VCN到LCN的映射信息,并存储在内存中。这个映射信息定位了MFT的运行(run或extent)在磁盘上的位置。接着,NTFS再打开几个元数据文件的MFT记录,并打开这些文件。如有必要NTFS开始执行它的文件系统恢复操作。在NTFS打开了剩余的元数据文件后,用户就可以开始访问该卷了。
文件和目录记录
NTFS将文件作为属性/属性值的集合来处理,这一点与其他文件系统不一样。文件数据就是未命名属性的值,其他文件属性包括文件名、文件拥有者、文件时间标记等。下图显示了一个用于小文件的MFT记录。
  
每个属性由单个的流(stream)组成,即简单的字符队列。严格地说,NTFS并不对文件进行操作,而只是对属性流进行读写。NTFS提供对属性流的各种操作:创建、删除、读取(字节范围)以及写入(字节范围)。读写操作一般是针对文件的未命名属性的,对于已命名的属性则可以通过已命名的数据流句法来进行操作。
一个文件通常占用一个文件记录。然而,当一个文件具有很多项属性值或很零碎的时候,就可能需要占用一个以上的文件记录。这种情况下,第一个文件记录是其基本的文件记录,存储有该文件需要的其它文件记录的位置。小文件和文件夹(典型的如1500字节或更少)将全部存储在文件的MFT记录里。
  
文件夹记录包括索引信息,小文件夹记录完全存储在MFT结构内,然而大的文件夹则被组织成B+树结构,用一个指针指向一个外部簇,该簇用来存储那些MFT内存储不了的文件夹的属性。
回复

使用道具 举报

4#
 楼主| 发表于 2009-8-30 10:32:42 | 只看该作者

NTFS 分区引导扇区

NTFS 引导扇区



在NTFS卷上,BPB后面的数据字段构成扩展BPB。启动过程中,这些字段中的数据可以让Ntldr(NT loader程序)找到主文件表(MFT)。在NTFS卷上,MFT不会放在特定的预定义扇区上(和FAT16或FAT32不一样)。因此,如果MFT通常的位置有坏扇区,它可以移动。然而,如果扩展BPB数据遭到破坏,MFT无法定位,Windows NT/2000就认为该卷未格式化。
下面的例子演示了运行Windows 2000时一个NTFS卷格式化后的引导扇区。打印输出分为三节:
  • 字节 0x00– 0x0A 是jump指令和OEM ID(粗体显示)。
  • 字节 0x0B–0x53 是BPB和扩展BPB。
  • 剩余的代码是自举代码和扇区结束标记(粗体显示)。


下面的表格描述了NTFS卷上BPB和扩展BPB的字段。这些字段和它们在FAT16、FAT32卷上一样,开始于0x0B, 0x0D, 0x15,0x18, 0x1A和0x1C。示例值对应这个例子中的数据。




保护引导扇区因为一个工作正常的系统依赖引导扇区来访问一个卷,所以强烈推荐你经常性的运行Chkdsk那样的磁盘扫描工具,同时如果你无法访问一个卷就备份所有的数据文件以免数据丢失。

[ 本帖最后由 天涯海角1216 于 2009-8-30 10:51 编辑 ]
回复

使用道具 举报

5#
发表于 2009-9-2 08:23:53 | 只看该作者
文章不错,支持一下!
回复

使用道具 举报

6#
发表于 2010-1-28 15:33:53 | 只看该作者
补充一下NTFS BPB的24~27H内容(目前网上都是直接转载,所以大家全少了这几个字节)
0024~0027 BIOS Driver Number db 80,00,80,00;也就是BIOS磁盘号,目前衡定为8080。
回复

使用道具 举报

7#
发表于 2010-1-28 16:22:12 | 只看该作者
不错的东西,比较详细。收藏!!!
回复

使用道具 举报

8#
发表于 2010-1-29 11:57:05 | 只看该作者
天涯海角1216  你是修硬盘的吗?
回复

使用道具 举报

9#
发表于 2010-1-29 11:57:40 | 只看该作者
不错,就算我看不明,也要顶下!文章好啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-29 05:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表