NTFS文件格式--2

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

                                                              图1  MFT的备份
 点此在新窗口浏览图片

1.2.3 NTFS中的$BITMAP(位图)文件
在元文件中,除了$MFT文件还有一个位图文件十分重要。文件$Bitmap标识的是该卷中簇的占用情况。它用一位代表一簇。为0代表此簇空闲,为1代表此簇已使用。这样可以更合理的分配磁盘空间。当文件被删除,它所占用的簇对应的为会被清空(置0)。NTFS通过这个文件管理卷的使用情况。

 

 

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

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

2.2 文件的MFT属性介绍
MFT的内容由不同的属性组合而成。以下是一个真实的MFT记录。现在,我们来剖析一下它的属性内容。
表5是这MFT记录的属性列表。对于每一个MFT记录来说,都会包含几种属性,但不可能包含所有的属性。老师当然根据学生不同的特点设计花名册的属性。

                                                                         表5 NTFS卷上常用属性说明
属性号                              属性名                                                          属性描述   
0X10                              $STANDRD_INFORMATION              (标准属性) 包括基本文件属性,如只读、存档;时间标

                                                                                      记文件的创建时间和最近一次修改的时间;有多少目录指向本文件   
0X20                              $ATTRIBUTE_LIST(属性列表)             当一个文件需要使用多个MFT文件记录时,用来表示该文件的属

                                                                                                           性列表   
0X30                             $FILE_NAME(文件名属性)                    这是以Unicode字符表示的,由于MS-DOS不能正确识别Win32子系

                                                                                                        统创建的文件名,当Win32子系统创建一个文件名时,MTFS会自动

                                                                                                       生成一个备用的MS-DOS文件名,所以一个文件可以有多种文件名属

                                                                                                        性。   
0X40                               $VOLUME_VERSION(卷版本)             卷版本号   
0X50                               $SECURITY_DEscriptOR(安全描述符)     这是为了向后兼容而被保留的,主要用于保护文件以防止未授

                                                                                                                权访问。   
0X60                               $VOLUME_NAME(卷名)                           卷名称或卷标识   
0X70                               $VOLUME_INFORMATION(卷信息)       卷信息   
0X80                               $DATA(数据属性)                                        这是文件的内容   
0X90                               $INDEX_ROOT(索引根属性)                     索引根   
0XA0                              $INDEX_ALLOCATION(索引分配属性)  索引分配   
0XB0                              $BITMAP(位图属性)                                    位图   
0XC0                               $SYMBOLIC_LINK(符号链接)                    符号链接   
0XD0                               $EA_INFORMATION(EA信息)                  扩充属性信息:主要为与OS/2兼容   
0XE0                                 $EA                                                                扩充属性:主要为与OS/2兼容   
0X100                                $OBJECT_ID                                               对象ID:一个具有64个字节的标识符,其中最低的16个字节对卷

                                                                                                                来说是唯一的 

以下是一个实际的MFT记录,我们通过对它的分析向您展示MFT记录的属性。
46  49  4c  45  30  00  03  00     17  cd  13  1a  00  00  00  00    头属性
01  00  01  00  38  00  01  00     b0  01  00  00  00  04  00  00
00  00  00  00  00  00  00  00     06  00  00  00  00  00  00  00
bb  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  01
e0  e3  e1  a0  66  e9  c3  01     e0  e3  e1  a0  66  e9  c3  01
06  00  00  00  00  00  00  00     00  00  00  00  00  00  00  00
00  00  00  00  00  00  00  00     00  00  00  00  00  00  00  00
00  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  01
e0  e3  e1  a0  66  e9  c3  01     e0  e3  e1  a0  66  e9  c3  01
e0  e3  e1  a0  66  e9  c3  01     00  40  00  00  00  00  00  00
00  40  00  00  00  00  00  00     06  00  00  00  00  00  00  00
04  03  24  00  4d  00  46  00     54  00  00  00  00  00  00  00
80  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  00
00  1c  ff   01  00  00  00  00     00  1c  ff   01  00  00  00  00
21  48  06  24  31  01  f3  aa      02  31  01  fd  7a  05  31  01
f3  38  02  31  01  c3  4b  05      00  a2  6b  81  d0  50  3d  e1
b0  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  00
00  10  00  00  00  00  00  00     00  10  00  00  00  00  00  00
31  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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值