上一篇文章《FAT32文件系统详解》中作者介绍了FAT32文件系统存储数据的原理,接下来作者就介绍一下NTFS文件系统。NTFS、用过Windows系统的人都知道,它是一个很强大的文件系统,支持的功能很多,存储的原理也很复杂。目前绝大多数Windows用户都是使用NTFS文件系统,它主要以安全性和稳定性而闻名,下面是它的一些主要特点。

安全性高:NTFS支持基于文件或目录的ACL,并且支持加密文件系统(EFS)。

可恢复性:NTFS支持基于原子事务概念的文件恢复,比较符合服务器文件系统的要求。

文件压缩:NTFS支持基于文件或目录的文件压缩,可以很方便的节省磁盘空间。

磁盘配额:NTFS支持磁盘配额,可针对系统中每个用户分配磁盘资源。


分析NTFS文件系统的结构

   当用户将硬盘的一个分区格式化为NTFS分区时,就建立了一个NTFS文件系统。NTFS文件系统同FAT32文件系统一样,也是用“簇”为存储单位,一个文件总是占用一个或多个簇。

NTFS文件系统使用逻辑簇号(LCN)和虚拟簇号(VCN)对分区进行管理。

逻辑簇号:既对分区内的第一个簇到最后一个簇进行编号,NTFS使用逻辑簇号对簇进行定位。

虚拟簇号:既将文件所占用的簇从开头到尾进行编号的,虚拟簇号不要求在物理上是连续的。

NTFS文件系统一共由16个“元文件”构成,它们是在分区格式化时写入到硬盘的隐藏文件(以"$"开头),也是NTFS文件系统的系统信息。

如下表:是NTFS的16个元文件介绍

wKiom1LORnDRR2gkAAONDW1H15k691.jpg

如下:是NTFS文件系统大致的结构图

wKiom1LOSaHj-VliAADHhN92UCo824.jpg


分析NTFS文件系统的元文件

   在此,我们先复习一下前面的文章《MBR分区结构和GPT分区结构》,如果磁盘采用的是MBR分区结构的话,则硬盘的第一个扇区是MBR扇区,MBR扇区中有分区表,可以根据分区表得知分区的起始位置(也就是DBR的位置)。如果磁盘采用的是GPT的分区结构,那么磁盘的第一个扇区应该是MBR保留扇区,第二个扇区应该是GPT头,第三个扇区应该是分区表,从分区表中我就可以找到分区的起始位置(既DBR)。因此,作者后面的内容都是从分区起始位置(既DBR)开始的,而不是磁盘的0号扇区。


由于各元文件的内容太多,作者只分析工作中所用到的,如果读者感兴趣可以自行去阅读相关资料。


1、分析$Boot元文件

   $Boot元文件由分区的第一个扇区(既DBR)和后面的15个扇区(既NTLDR区域)组成,其中DBR由“跳转指令”、“OEM代号”、“BPB”、“引导程序”和“结束标志”组成,这里和FAT32文件系统的DBR一样。下图是一个NTFS文件系统完整的DBR。

wKioL1LOTPmiKKYcAAW3ngzJQaw966.jpg

下面我们分析一下DBR中的各参数

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

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

BPB:NTFS文件系统的BPB从DBR的第12个字节开始,占用73字节,记录了有关该文件系统的重要信息,下表中的内容包含了“跳转指令”、“OEM代号”以及“BPB”的参数。