NTFS文件系统
+ -

NTFS文件系统MFT属性

2021-07-01 647 0

从上一节可以知道,MFT中的每一项从38开始到最后的1023(从0开始)地址为MFT项的属性.
MFT每项中的属性按使用可分为常驻属性和非常驻属性。由于属性的千差成别,所有属性的结构部分相同,和MFT项类似,属性的前16个字节结构是相同的,16个字节之后因属性不同而不同。

常规属性类型

常用的属性类型如下,其可含有常驻和非常驻属性。

常驻属性类型 MFT属性名 描述
10 $STANDARD_IFORMATION 标准属性,包含文件的基本属性,只读 创建时间、最后访问时间等属性。
20 $ATTRIBUTE_LIST 属性列表
30 $FILE_NAME 文件名属性(UNICODE编码)
40 $OBJECT_ID 对象ID属性,文件或目录的16字节唯一标志
50 $SECURITY_DESCRIPTOR 安全描述符属性,文件的访问控制安全属性
60 $VOLUME_NAME 卷名属性
70 $VOLUME_INFORMATION 卷信息属性
80 $DATA 文件的数据属性
90 $INDEX_ROOT 索引根属性
A0 $INDEX_ALLOCATION 是90属性的扩展版(90属性只能在MFT内记录文件列表,A0属性将文件列表记录到数据区可以记录更多的文件)
B0 $BITMAP 位图属性
C0 $REPARSE_POINT 重解析点属性
D0 $EA_INFORMATION 扩展属性信息
E0 $EA 扩展属性
100 $LOGGED_UTILITY_STREAM EFS加密属性

其中标记的为比较重要的。

常驻属性结构头

常驻属性拥有共同的属性头,如下表:

字节偏移 字节数 含义
00~03 4 属性类型
04~07 4 属性的长度字节数,包括属性头
08~08 1 是否为常驻属性标志
00-常驻
01-非常驻
09~09 1 属性名长度,没有属性名为0
0A~0B 2 属性名位置偏移
0C~0D 2 标志(0表示非压缩、加密、稀蔬
0E~0F 2 属性ID标识
10~13 4 属性内容大小(不包括属性头)
14~15 2 属必内容相对于本属性头起始位置的偏移,也即属性头的长度
16~16 1 索引标志
17~17 1 保留未用

非常驻属性

非常驻属性因为在存储的是可增长的数据流,故它的属性头与常驻属性的0x10偏移地址后不同。

字节偏移 字节数 含义
00~03 4 属性类型
04~07 4 属性的长度字节数,包括属性头
08~08 1 是否为常驻属性标志
00-常驻
01-非常驻
09~09 1 属性名长度,没有属性名为0
0A~0B 2 属性名位置偏移
0C~0D 2 标志(0表示非压缩、加密、稀蔬
0E~0F 2 属性ID标识
10~17 8 簇流的起始VCN(虚拟簇号:Virtual Cluster Number)
18~1F 8 簇流的结束VCN
20~21 2 簇流列表相对于本属性头起始处的偏移
22~23 2 压缩单位大小
24~27 4 未用
28~2F 8 为属性内容分配的空间大小的字节数,是簇的整数倍
30~37 8 该属性的内容实际占用字节数,即属性的实际有效大小
38~3F 8 属性内容初始大小

属性内容

我们在里可以看到,不同的属性内容大小不同。
那么属性内容是怎么存储的呢?这里使用以下规则:

  • 常驻属性由于内容大小固定,故存储在MFT的项中。
  • 非常驻属性存储在用户数据区中,但在MFT的项中记录着的它簇的起始地址,结束地址和实际内容的大小。

簇流

在非常驻性性中有一个名词叫簇流。簇流就是一组连续的扇区,簇流的内容包括1个或多个流项,流项的内容包括起始簇号和流长度。
我们知道文件存储时有时会跨簇进行存储,即文件的内容在磁盘中存储不连续,簇流就是用于记录这些不连续的流空间的。
我们可以假设一个文件存储在簇号91,92,93,95,96,98,99这些簇中,那么簇流中就应该有3项流项,第一部分描述流项的起始地址为91,长度为3;第二项的起始地址为95,长度为2;第三部分的起始地址为98,长度为2.

VCN(虚拟簇号)和LCN(逻辑簇号)区别

NTFS文件系统在描述某一簇时使用虚拟簇号和逻辑簇号来表示。VCN我们可以认为是文件内部的编号,从0开始,而LCN逻辑簇号是从全文件虚拟开始进行编号,也是从0开始。VCN是局部的,LCN是全局的。

VCN的意义

由于文件系统内部使用的是VCN,故在使用时需先将VCN转化成LCN来进行寻址。那么VCN到底有什么意义了?其实是这样的,当一个文件和属性碎片化和严重时,这时一个MFT项无法容纳下它的簇流列表,故需要再次给其分配相同的MFT项,而MFT项中有簇流需要有先后顺序,这时VCN就派上用场了(小的当然在前了,大的在后),而LCN就无法确定其先后顺序。

0 篇笔记 写笔记

NTFS文件系统MFT属性
从上一节可以知道,MFT中的每一项从38开始到最后的1023(从0开始)地址为MFT项的属性.MFT每项中的属性按使用可分为常驻属性和非常驻属性。由于属性的千差成别,所有属性的结构部分相同,和MFT项类似,属性的前16个字节结构是相同的,16个字节之后因属性不同而不同。常规属性类型常用的属性类型如......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!