NTFS底层结构.docx

上传人:b****3 文档编号:2128816 上传时间:2022-10-27 格式:DOCX 页数:17 大小:42.56KB
下载 相关 举报
NTFS底层结构.docx_第1页
第1页 / 共17页
NTFS底层结构.docx_第2页
第2页 / 共17页
NTFS底层结构.docx_第3页
第3页 / 共17页
NTFS底层结构.docx_第4页
第4页 / 共17页
NTFS底层结构.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

NTFS底层结构.docx

《NTFS底层结构.docx》由会员分享,可在线阅读,更多相关《NTFS底层结构.docx(17页珍藏版)》请在冰豆网上搜索。

NTFS底层结构.docx

NTFS底层结构

NTFS底层结构.rar

解析NTFS底层结构

数据重现——文件系统原理精解与数据恢复最佳实践马林 编著

Csdn网:

用户明:

chensjy12345678

一、NTFS系统结构

NTFS是WindowsNT引入的新型文件系统,如果您是一位熟悉FAT磁盘格式的专业人士,您可能会觉得NTFS系统的思想蹩脚而晦涩,如果您对FAT格式一无所知,那么恭喜您,您会更快的了解这种更有效率的磁盘格式。

NTFS的结构复杂,内容繁多,笔者仅对NTFS卷上的底层结构做分析,并提供卷上数据删除的特征状态供大家参考。

   现在,我们首先来建立了解NTFS需要的基本概念。

1.0基本结构及基本概念

在NTFS中,文件以簇的形式分配。

最小的单位为扇区,N个扇区为一簇。

其中,N的值可以通过BPB(引导扇区)读出(以下会详细介绍)。

1.0.1卷与簇

 

卷大小(分区大小) 每簇的扇区 缺省的簇大小   

小于等于512MB 1 512字节   

513MB~1024MB(1GB) 2 1024字节(1KB)   

1025MB~2048MB(2GB) 4 2048字节(2KB)   

大于等于2049MB 8 4KB 

表1 卷与簇的关系

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

1.0.2 NTFS的基本数据结构

NTFS的数据大体上可分为4个部分

(1) Partitionbootsector(引导扇区,又称BPB),此部分为所有磁盘格式都共有,占用一个扇区,但是具体的内容当然各不相同(见表3)。

(2) MasterFileTable(主文件列表,MFT),它是对卷上所有文件的记录,每一个文件对应一个记录项,理论上占用该卷12%的空间。

(3) Systemfiles(系统文件),NTFS系统一共有16个系统文件,和8个保留文件。

(4) Filearea(数据区),留给用户的空间。

 Partitionbootsector引导扇区

MasterFileTable主文件列表

Systemfiles系统文件

 Filearea用户文件区(数据区) 

表2 NTFS的磁盘分配情况

1.0.3NTFS中关于目录的说明

NTFS中目录也是以文件的形式存在的。

因此,每一个目录也可以看作一个文件。

如果您熟悉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 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 每索引簇数   

0X48 8 0X14A51B74C91B741C 卷标   

0X50 4 0X00000000 校验和   

0X54 430 略 引导代码   

0X1FE 2 0X55AA 签名 

表3 NTFS引导扇区说明

1.2MFT(主文件表)

MFT是一个对应的数据库,由一系列的文件记录组成。

卷中每一个文件都有一个文件记录(对于大型文件还可能有多个记录与之相对应)。

主文件表本身也有它自己的文件记录。

如果您还不胜了解,那么我们来打个比喻。

假设一个班有30个人,老师那里有一本花名册,记录了每个人的名字,年龄,每天出勤的情况和科目成绩等等。

把每个人看做每一个文件,那么那本花名册就是这里的MFT。

当然,事实往往是复杂而多变的,MFT中包含文件的哪些信息?

这些信息又是如何关联的?

这些问题,我们会一个个解决。

现在首先对MFT做几点必要的说明:

(1)实际上,MFT自身也是一个文件,因此,主文件列表的第一个记录就是它自身。

所以,刚才的例子其实不太贴切,因为事实上,花名册也是人,那么好吧,我们假设这本花名册在老师的脑子里。

这样,您可以知道,既然老师也是人,那么其实老师也是一个文件。

(2)MFT的每个记录都有一个编号,这里我们称它为ID号。

这个ID从0开始。

我们知道MFT自身是NTFS系统的第一个文件,所以文件$MFT的ID号为0。

(3)$MFT和其他23个文件一起(共24个),组成所谓的“Metafiles”(元文件,也是之前提到的Systemfiles,系统文件)。

这24个文件中,前16(ID为0-15)个文件是固定的,剩下的8个文件为保留文件。

我们可以假设,这16个系统文件为此班的任课老师,因为虽然他们也是人,但是属性跟普通的同学不一样,他们管理着整个卷的活动方式,正如老师们管理着整个班级一样。

(4)用户的文件(也包括目录)的MFT中的ID号从24开始排。

(5)用户每添加一个文件ID号加1,当某文件被删除时,与之对应的MFT记录将被空出来,如果此时再次添加文件,系统会优先填充ID小的空位。

正如,大家上课的时候都会抢前排的位子坐,但是坐定之后就不能换位子了。

(6)无论簇的大小,文件记录大小都是1K,老师脑中的花名册对每个人都是公平的。

(7)理论上$MFT在卷中的分配空间(占12%)。

(8)逻辑上,$MFT在卷中会占用一块连续的空间,但实际情况$MFT可能会被分散在磁盘的几个不同的区域。

甚至,可能在元文件的部分就被拆分开。

据笔者分析,这些情况的发生可能由于卷上的文件不断增加,最先开辟的$MFT文件已经用完,系统会再次开辟空间存放文件记录。

另一种情况是,卷是由FAT或者其他格式转化而来,当卷空间不足的时候,也可能将MFT分散存储。

1.2.1MFT中的元文件(固定)

以下是元文件的列表。

其中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.2NTFS中MFT的备份

在NTFS中,因其前16个文件的重要性,对它们的MFT记录在文件区有一个备份。

如图:

 theoreticallyMFTgrowsinthatdirectionMFT理论上的增长区

图1 MFT的备份

1.2.3NTFS中的$BITMAP(位图)文件

在元文件中,除了$MFT文件还有一个位图文件十分重要。

文件$Bitmap标识的是该卷中簇的占用情况。

它用一位代表一簇。

为0代表此簇空闲,为1代表此簇已使用。

这样可以更合理的分配磁盘空间。

当文件被删除,它所占用的簇对应的为会被清空(置0)。

NTFS通过这个文件管理卷的使用情况。

二、文件记录(MFT记录)详解

FILERecord

Header

Attribute

Attribute

...

EndMarker(0xFFFFFFFF)

Offset

Size

OS

Description

0x00

4

 

Magicnumber'FILE'

0x04

2

 

Offsettotheupdatesequence

0x06

2

 

SizeinwordsofUpdateSequenceNumber&Array(S)

0x08

8

 

$LogFileSequenceNumber(LSN)

0x10

2

 

Sequencenumber

0x12

2

 

Hardlinkcount

0x14

2

 

OffsettothefirstAttribute

0x16

2

 

Flags

0x18

4

 

RealsizeoftheFILErecord

0x1C

4

 

AllocatedsizeoftheFILErecord

0x20

8

 

FilereferencetothebaseFILErecord

0x28

2

 

NextAttributeId

0x2A

2

XP

Alignto4byteboundary

0x2C

4

XP

NumberofthisMFTRecord

 

2

 

UpdateSequenceNumber(a)

 

2S-2

 

UpdateSequenceArray(a)

(a)Theoffsettothesetwofieldsdependsonyouroperatingsystem.

相信对NTFS您已经有一个大致的了解,但是对老师脑中的花名册是不是充满了好奇和期待呢?

简单的说,花名册清楚描述了班里每一个人的状况。

描述的每一个项目在这里被叫做属性。

NTFS将文件作为属性、属性值的集合来处理。

每个属性由单个的流(stream)组成,即简单的字符排列。

严格的说,NTFS并不对文件进行操作,而只对属性流进行读写。

   可以想想的是,花名册的大小有限(因为花名册是用来查询的),而文件的属性可能很大(对于那些调皮的学生,老师总要花费更多的心血),因此,当文件属性太大的时候,NTFS系统会将该属性值存放到卷中某个位置,而花名册中的属性只会记录该属性索引到外部的地址,以及索引区的大小。

这种“装不下”的属性又被称为“非常驻属性”。

与之相反,能够保存在“花名册”中的属性又叫做“常驻属性”。

2.1文件的存储

我想我已经清楚的向您展示了MFT的全貌,再来回顾一下,文件$MFT本身是一个文件(老师也是人),但是它亦是卷上每个文件的记录集合(花名册),每个文件拥有1K的空间(老师是公平的),用来记录文件属性,包括常驻属性和非常驻属性。

那么您现在是不是有老大一个问号,我一直在强调文件的记录,那么文件的真实数据是如何存放的呢?

想要知道这一点,就要请您耐心的看完下面对MFT属性的介绍。

它将向您展示,这本花名册的精妙之处。

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1