1 NTFS文件系统结构分析
NTFS文件系统的结构以卷为基础,卷由逻辑分区组成。卷以簇为最小存储管理单元,对磁盘空间和文件对象进行有机操作。簇的大小称卷因子,每簇可按需要分配1、2、4或8扇区,为簇2的幂且是整数倍,每扇区512字节,由操作系统建立分区时格式化生成。当分区空间超过2 G时,NTFS默认簇是8扇区。NTFS文件系统使用逻辑簇号和虚拟簇号对卷进行管理。逻辑簇号是对卷上所有簇进行顺序编号,虚拟簇号是对文件占用簇的编号,以便于引用文件中的数据。NTFS将卷定义为4个区域:分区引导扇区、主文件表、系统文件和文件数据区[1]。
分区引导扇区位于卷的首扇区,包括分区的引导程序和BIOS参数块(BPB),BPB表中的参数是在建立文件系统时由操作系统生成的,系统根据BPB中参数得到卷的重要信息,对分区引导扇区、主文件表、文件数据等进行卷逻辑地址定位。如果BPB参数丢失,NTFS无法完成数据的定位,文件系统将不能正常使用。
主文件表(MFT)是由一系列文件记录组成,与文件数据区中的文件相对应的关系数组,是NTFS的控制中心。NTFS通过文件记录来描述数据文件的各种属性并确定其在磁盘上的存储位置。MFT的前16个文件记录属于系统文件,称为元文件,用于存放系统的元数据。元文件在主文件表中地址固定不变,而对其他文件和文件夹的文件记录在主文件表中的地址则无具体要求。
文件记录由记录头、属性列表和结束标志组成。以“46 49 4C 45”为开始标志,“FF FF FF FF”为结束标志,大小为1 KB。NTFS将数据文件作为属性/属性值的集合来处理,属性的内容是属性值(流),由简单字符队列组成。NTFS并不对文件数据进行操作,而通过对属性流读写来对文件进行创建、读写、删除等操作。
当文件和文件夹的数据较小时,其所有属性和属性值都可直接存放在文件记录中,称为常驻属性。当文件或文件夹的属性太大而不能直接存放在文件记录中时,称为非常驻属性。NTFS将从主文件表之外的磁盘空间中为非常驻属性值分配存储区域,称为运行。运行主要说明文件在文件数据区簇的分配情况,由多个运行项组成,一个运行项包含一个虚拟簇号,是属性数据内部簇的顺序编号;一个逻辑簇号,是数据储存在磁盘上的位置;以及数据在磁盘上所占用空间的连续簇的数量[2]。利用文件的逻辑簇号和卷因子相乘得到文件在卷