收藏 分享(赏)

NTFS底层结构.doc

上传人:hwpkd79526 文档编号:9296419 上传时间:2019-08-01 格式:DOC 页数:20 大小:91KB
下载 相关 举报
NTFS底层结构.doc_第1页
第1页 / 共20页
NTFS底层结构.doc_第2页
第2页 / 共20页
NTFS底层结构.doc_第3页
第3页 / 共20页
NTFS底层结构.doc_第4页
第4页 / 共20页
NTFS底层结构.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、一、NTFS 系统结构NTFS 是 Windows NT 引入的新型文件系统,如果您是一位熟悉 FAT 磁盘格式的专业人士,您可能会觉得 NTFS 系统的思想蹩脚而晦涩,如果您对 FAT 格式一无所知,那么恭喜您,您会更快的了解这种更有效率的磁盘格式。NTFS 的结构复杂,内容繁多,笔者仅对 NTFS 卷上的底层结构做分析,并提供卷上数据删除的特征状态供大家参考。现在,我们首先来建立了解 NTFS 需要的基本概念。1.0 基本结构及基本概念在 NTFS 中,文件以簇的形式分配。最小的单位为扇区,N 个扇区为一簇。其中,N 的值可以通过 BPB(引导扇区)读出(以下会详细介绍)。1.0.1 卷与

2、簇表 1 卷与簇的关系卷大小(分区大小) 每簇的扇区 缺省的簇大小小于等于 512MB 1 512 字节513MB1024MB(1GB) 2 1024 字节(1KB) 1025MB2048MB(2GB) 4 2048 字节(2KB) 大于等于 2049MB 8 4KB 4 表 1 卷与簇的关系从上面可以看出,也就是说不管驱动器多大 NTFS 簇的大小不会超过 4KB。1.0.2 NTFS 的基本数据结构NTFS 的数据大体上可分为 4 个部分(1) Partition boot sector(引导扇区,又称 BPB),此部分为所有磁盘格式都共有,占用一个扇区,但是具体的内容当然各不相同(见表

3、3)。(2) Master File Table(主文件列表,MFT),它是对卷上所有文件的记录,每一个文件对应一个记录项,理论上占用该卷 12的空间。(3) System files(系统文件),NTFS 系统一共有 16 个系统文件,和 8 个保留文件。(4) File area(数据区),留给用户的空间。Partition boot sector引导扇区 Master File Table主文件列表 System files系统文件 File area用户文件区(数据区) 表 2 NTFS 的磁盘分配情况1.0.3 NTFS 中关于目录的说明NTFS 中目录也是以文件的形式存在的。因此,

4、每一个目录也可以看作一个文件。如果您熟悉 FAT,那么此时您可能会觉得很别扭,因为在 FAT 中,文件是以目录文件的树型结构联系起来的。但是,您必须相信的是,NTFS 将会提供比搜索树更快的读写方式。1.1 引导扇区字节偏移 长度(字节) 常用值 意义 0X00 3 0XEB5290 JMP 指令 0X03 4 NTFS 文件系统 ID 0X0B 2 0X0002 每扇区字节数 0X0D 1 0X08 每簇扇区数 0X0E 2 0X0000 保留扇区 0X10 3 0X000000 总为 0 0X13 2 0X0000 NTFS 未使用,为 0 0X15 1 0XF8 介质描述 0X16 1

5、0X0000 总为 0 0X18 2 0X3F00 每磁道扇区数 0X1A 2 0XFF00 磁头数 0X1C 4 0X3F000000 隐含扇区 0X20 4 0X00000000 NTFS 未使用,为 0 0X24 4 0X80008000 NTFS 未使用,为 0 0X28 8 0X4AF57F0000000000 扇区总数 0X30 8 0X0400000000000000 $MFT 的逻辑簇号 0X38 8 0X54FF070000000000 $MFTMirr 的逻辑簇号 0X40 4 0XF6000000 每 MFT 记录簇数 0X44 4 0X0100000 每索引簇数 0X4

6、8 8 0X14A51B74C91B741C 卷标 0X50 4 0X00000000 校验和 0X54 430 略 引导代码 0X1FE 2 0X55AA 签名 表 3 NTFS 引导扇区说明1.2 MFT(主文件表)MFT 是一个对应的数据库,由一系列的文件记录组成。卷中每一个文件都有一个文件记录(对于大型文件还可能有多个记录与之相对应)。主文件表本身也有它自己的文件记录。如果您还不胜了解,那么我们来打个比喻。假设一个班有 30 个人,老师那里有一本花名册,记录了每个人的名字,年龄,每天出勤的情况和科目成绩等等。把每个人看做每一个文件,那么那本花名册就是这里的 MFT。当然,事实往往是复杂

7、而多变的,MFT 中包含文件的哪些信息?这些信息又是如何关联的?这些问题,我们会一个个解决。现在首先对 MFT 做几点必要的说明:(1)实际上,MFT 自身也是一个文件,因此,主文件列表的第一个记录就是它自身。所以,刚才的例子其实不太贴切,因为事实上,花名册也是人,那么好吧,我们假设这本花名册在老师的脑子里。这样,您可以知道,既然老师也是人,那么其实老师也是一个文件。(2)MFT 的每个记录都有一个编号,这里我们称它为 ID 号。这个 ID 从 0 开始。我们知道MFT 自身是 NTFS 系统的第一个文件,所以文件$MFT 的 ID 号为 0。(3)$MFT 和其他 23 个文件一起(共 24

8、 个),组成所谓的“Metafiles”(元文件,也是之前提到的 System files,系统文件)。这 24 个文件中,前 16(ID 为 0-15)个文件是固定的,剩下的 8 个文件为保留文件。我们可以假设,这 16 个系统文件为此班的任课老师,因为虽然他们也是人,但是属性跟普通的同学不一样,他们管理着整个卷的活动方式,正如老师们管理着整个班级一样。(4)用户的文件(也包括目录)的 MFT 中的 ID 号从 24 开始排。(5)用户每添加一个文件 ID 号加 1,当某文件被删除时,与之对应的 MFT 记录将被空出来,如果此时再次添加文件,系统会优先填充 ID 小的空位。正如,大家上课的时

9、候都会抢前排的位子坐,但是坐定之后就不能换位子了。(6)无论簇的大小,文件记录大小都是 1K,老师脑中的花名册对每个人都是公平的。(7)理论上$MFT 在卷中的分配空间(占 12)。(8)逻辑上,$MFT 在卷中会占用一块连续的空间,但实际情况$MFT 可能会被分散在磁盘的几个不同的区域。甚至,可能在元文件的部分就被拆分开。据笔者分析,这些情况的发生可能由于卷上的文件不断增加,最先开辟的$MFT 文件已经用完,系统会再次开辟空间存放文件记录。另一种情况是,卷是由 FAT 或者其他格式转化而来,当卷空间不足的时候,也可能将 MFT 分散存储。1.2.1 MFT 中的元文件(固定)以下是元文件的列

10、表。其中 ID 为 0-15 的文件为系统文件,用户文件从第 24 个 MFT 记录开始排。序号(ID) 元文件 功能 0 $MFT 主文件列表本身 1 $MFTMirr 主文件表的部分镜像 2 $LogFile 日志文件 3 $Volume 卷文件 4 $AttrDef 属性定义列表 5 $Root 根目录 6 $Bitmap 位图文件 7 $Boot 引导文件 8 $BadClus 坏簇文件 9 $Secure 安全文件 10 $UpCase 大写文件 11-15 $Extend 扩展文件(一共 5 个文件) 16-23 保留 表 4 NTFS 元文件1.2.2 NTFS 中 MFT 的备

11、份在 NTFS 中,因其前 16 个文件的重要性,对它们的 MFT 记录在文件区有一个备份。如图:图 1 MFT 的备份1.2.3 NTFS 中的$BITMAP(位图)文件在元文件中,除了$MFT 文件还有一个位图文件十分重要。文件$Bitmap 标识的是该卷中簇的占用情况。它用一位代表一簇。为 0 代表此簇空闲,为 1 代表此簇已使用。这样可以更合理的分配磁盘空间。当文件被删除,它所占用的簇对应的为会被清空(置 0)。NTFS 通过这个文件管理卷的使用情况。 二、文件记录(MFT 记录)详解相信对 NTFS 您已经有一个大致的了解,但是对老师脑中的花名册是不是充满了好奇和期待呢?简单的说,花

12、名册清楚描述了班里每一个人的状况。描述的每一个项目在这里被叫做属性。NTFS 将文件作为属性、属性值的集合来处理。每个属性由单个的流(stream)组成,即简单的字符排列。严格的说,NTFS 并不对文件进行操作,而只对属性流进行读写。可以想想的是,花名册的大小有限(因为花名册是用来查询的),而文件的属性可能很大(对于那些调皮的学生,老师总要花费更多的心血),因此,当文件属性太大的时候,NTFS 系统会将该属性值存放到卷中某个位置,而花名册中的属性只会记录该属性索引到外部的地址,以及索引区的大小。这种“装不下”的属性又被称为文件的属性又分为“非常驻属性”。与之相反,能够保存在“花名册”中的属性又

13、叫做“常驻属性”。2.1 文件的存储我想我已经清楚的向您展示了 MFT 的全貌,再来回顾一下,文件$MFT 本身是一个文件(老师也是人),但是它亦是卷上每个文件的记录集合(花名册),每个文件拥有 1K 的空间(老师是公平的),用来记录文件属性,包括常驻属性和非常驻属性。那么您现在是不是有老大一个问号,我一直在强调文件的记录,那么文件的真实数据是如何存放的呢?想要知道这一点,就要请您耐心的看完下面对 MFT 属性的介绍。它将向您展示,这本花名册的精妙之处。2.2 文件的 MFT 属性介绍MFT 的内容由不同的属性组合而成。以下是一个真实的 MFT 记录。现在,我们来剖析一下它的属性内容。表 5

14、是这 MFT 记录的属性列表。对于每一个 MFT 记录来说,都会包含几种属性,但不可能包含所有的属性。老师当然根据学生不同的特点设计花名册的属性。属性号 属性名 属性描述 0X10 $STANDRD_INFORMATION(标准属性) 包括基本文件属性,如只读、存档;时间标记,如文件的创建时间和最近一次修改的时间;有多少目录指向本文件 0X20 $ATTRIBUTE_LIST(属性列表) 当一个文件需要使用多个 MFT 文件记录时,用来表示该文件的属性列表 0X30 $FILE_NAME(文件名属性) 这是以 Unicode 字符表示的,由于 MS-DOS 不能正确识别 Win32 子系统创建

15、的文件名,当 Win32 子系统创建一个文件名时,MTFS 会自动生成一个备用的 MS-DOS 文件名,所以一个文件可以有多种文件名属性。 0X40 $VOLUME_VERSION(卷版本) 卷版本号 0X50 $SECURITY_DEscriptOR(安全描述符) 这是为了向后兼容而被保留的,主要用于保护文件以防止未授权访问。 0X60 $VOLUME_NAME(卷名) 卷名称或卷标识 0X70 $VOLUME_INFORMATION(卷信息) 卷信息 0X80 $DATA(数据属性) 这是文件的内容 0X90 $INDEX_ROOT(索引根属性) 索引根 0XA0 $INDEX_ALLOC

16、ATION(索引分配属性) 索引分配 0XB0 $BITMAP(位图属性) 位图 0XC0 $SYMBOLIC_LINK(符号链接) 符号链接 0XD0 $EA_INFORMATION(EA 信息) 扩充属性信息:主要为与 OS/2 兼容 0XE0 $EA 扩充属性:主要为与 OS/2 兼容 0X100 $OBJECT_ID 对象 ID:一个具有 64 个字节的标识符,其中最低的 16 个字节对卷来说是唯一的 表 5 NTFS 卷上常用属性说明以下是一个实际的 MFT 记录,我们通过对它的分析向您展示 MFT 记录的属性。46 49 4c 45 30 00 03 00 17 cd 13 1a

17、00 00 00 00 头属性01 00 01 00 38 00 01 00 b0 01 00 00 00 04 00 0000 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00bb 02 00 00 00 00 00 00 10 00 00 00 60 00 00 00 标准头00 00 18 00 00 00 00 00 48 00 00 00 18 00 00 00 属性e0 e3 e1 a0 66 e9 c3 01 e0 e3 e1 a0 66 e9 c3 01e0 e3 e1 a0 66 e9 c3 01 e0 e3 e1 a0 66 e9 c

18、3 0106 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 00 30 00 00 00 68 00 00 00 文件名00 00 18 00 00 00 03 00 4a 00 00 00 18 00 01 00 属性05 00 00 00 00 00 05 00 e0 e3 e1 a0 66 e9 c3 01e0 e3 e1 a0 66 e9 c3 01 e0 e3 e1 a0 66 e9 c3 01e0 e3 e

19、1 a0 66 e9 c3 01 00 40 00 00 00 00 00 0000 40 00 00 00 00 00 00 06 00 00 00 00 00 00 0004 03 24 00 4d 00 46 00 54 00 00 00 00 00 00 0080 00 00 00 68 00 00 00 01 00 40 00 00 00 01 00 数据流00 00 00 00 00 00 00 00 f1 1f 00 00 00 00 00 00 属性40 00 00 00 00 00 00 00 00 20 ff 01 00 00 00 0000 1c ff 01 00 00

20、00 00 00 1c ff 01 00 00 00 0021 48 06 24 31 01 f3 aa 02 31 01 fd 7a 05 31 01f3 38 02 31 01 c3 4b 05 00 a2 6b 81 d0 50 3d e1b0 00 00 00 48 00 00 00 01 00 10 00 00 00 05 00 位图00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 属性40 00 00 00 00 00 00 00 00 10 00 00 00 00 00 0000 10 00 00 00 00 00 00 00 10

21、00 00 00 00 00 0031 01 40 4b 0f 00 00 00 ff ff ff ff 00 00 00 00 结束标志 MFT 记录中的每一个属性都用不同的颜色标识出来。第一个属性被称为属性头,此属性是每一个 MFT 的都有的(见表 6)。接下来分别是标准头属性、文件名属性(见表 7)、数据流属性(见表 9)和位图属性。这些属性(不包括属性头)的的共性在于,它们的前 8 个字节(我称它为小头属性)的前 4 个字节为此属性的号(属性号与属性名称的对应见下表4),后 4 个字节,代表的是此属性的长度(字节数)。最后,MFT 的结束标志为 ff ff ff ff。以下是几个重要的

22、 MFT 属性介绍(1)MFT 文件记录属性头结构偏移 长度 描述 0X00 4 固定值“FILE” 0X04 2 更新序列号偏移,与操作系统有关 0X06 2 固定列表大小 0X08 8 日志文件序列号 0X10 2 序列号(用于记录文件被反复使用的次数) 0X12 2 硬连接数,跟目录中的项目关联,非常重要的参数 0X14 2 第一个属性的偏移 0X16 2 标志字节 0X18 4 文件记录实时大小(字节) 0X1C 4 文件记录分配大小(字节) 0C20 8 基础记录 (0: itself) 0X28 2 下一个自由 ID 号 0X2A 2 边界 0X2C 4 WINDOWS XP 中使

23、用,本 MFT 记录号 0X30 4 MFT 的使用标记 表 6 文件属性头说明(2)文件名属性偏移 大小 值 描述 0X00 4 0X30 属性类型 0X04 4 0X68 总长度 0X08 1 0X00 非常驻标志(0X00:常驻属性;0X01:非常驻属性) 0X09 1 0X00 属性名的名称长度 0X0A 2 0X18 属性名的名称偏移 0X0C 2 0X00 标志 0X0E 2 0X03 标识 0X10 4 0X4A 属性长度(L) 0X14 2 0X18 属性内容起始偏移 0X16 1 0X01 索引标志 0X17 1 0X00 填充 0X18 8 0500000000000500

24、 父目录记录号(前 6 个字节)+序列号(与目录相关) 0X20 8 e0e3e1a066e9c301 文件创建时间 0X28 8 同上 文件修改时间 0X30 8 同上 最后一次 MFT 更新的时间 0X38 8 同上 最后一次访问时间 0X40 8 0040000000000000 文件分配大小 0X48 8 0040000000000000 文件实际大小 0X50 4 06000000 标志,如目录、压缩、隐藏等 0X54 4 00000000 用于 EAS 和重解析点 0X58 1 04 以字符计的文件名长度,每字节占用字节数由下一字节命名空间确定,一个字节长度,所以文件名最大为 25

25、5 字节长(L) 0X59 1 03 文件名命名空间,见表 8 0X60 2L 24004d004600 以 Unicode 方式标识的文件名 表 7 文件名属性说明 标志 意义 描述 0 POSIX 这是最大的命名空间。它大小写敏感,并允许使用除 NULL(0)和左斜框(/)以外的所有 Unicode 字符作为文件名,文件名最大长度为 255 个字符。有一些字符,如冒号(:),在 NTFS 下有效,但 WINDOWS 不让使用。 1 WIN32 WIN32 和 POSIX 命名空间的一个子集,不区分大小写,可以使用除“*/:500MB)性能很高但在有非常多小文件的小分区上性能较低 在大分区上(500MB)性能很高但在有非常多小文件的小分区上性能较低 在小分区上(500MB)性能较低 在小分区上(256MB)性能最高 磁盘空间节约 最大 最大 一般 在大分区上最低 磁盘数据容错性 最大 最大 最低 一般 表 14 磁盘格式性能比较

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报