[电脑基础知识]NTFS文件系统.doc

上传人:sccc 文档编号:4558895 上传时间:2023-04-27 格式:DOC 页数:42 大小:6.76MB
返回 下载 相关 举报
[电脑基础知识]NTFS文件系统.doc_第1页
第1页 / 共42页
[电脑基础知识]NTFS文件系统.doc_第2页
第2页 / 共42页
[电脑基础知识]NTFS文件系统.doc_第3页
第3页 / 共42页
[电脑基础知识]NTFS文件系统.doc_第4页
第4页 / 共42页
[电脑基础知识]NTFS文件系统.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《[电脑基础知识]NTFS文件系统.doc》由会员分享,可在线阅读,更多相关《[电脑基础知识]NTFS文件系统.doc(42页珍藏版)》请在三一办公上搜索。

1、NTFS文件系统NTFS(New Technology File System,新技术文件系统),是以MFT(Master File Table,主文件表或主索引记录)为核心,将整个分区的系统文件和用户文件有机地组织起来的文件系统。NTFS最基本的原则:磁盘上任何对象包括目录都是一种文件,都使用文件记录进行管理。所有与文件相关的项目,包括数据都被认为是属性。属性分常驻(在记录中)和非常驻两种,非常驻的大文件夹使用B树结构进行管理。簇是NTFS最小的基本单位,一个1字节的文件也要占用一簇的空间。流是NTFS最基本的存储单元,是文件属性和属性值的集合。MFT文件MFT的位置和作用:MFT文件和它的

2、备份,位于NTFS分区中部,前后都是数据区,能更好地受到保护。与FAT系统先放文件分配表,后接数据区的做法不同。XP系统的NTFS分区,大致布局如下图:DBR引导区用户数据MFT区用户数据MFT部分记录备份用户数据DBR备份分区所有的文件,其相关的文件信息都保存在MFT中。小于1K的小文件(目录),其整个内容都保存在MFT中。大于1K的大文件(目录),只有它的起始信息保存在MFT中。在NTFS中,文件通过主文件表MFT定位。MFT是组织、架构NTFS文件系统最主要的数据库文件,对NTFS分区的性能有着至关重要的影响。ID编号(MFT Entry Value,文件号):分区中的所有文件和目录(包

3、括MFT文件自身),都被系统ID编号(编号0为MFT文件),并将它们的各类属性、起始信息或全部内容,以文件记录的形式,保存在MFT中。分区高级格式化成NTFS文件系统时,首先建立了一个主文件表MFT。在MFT文件中,会预先建立16个重要的文件(MFT记录的ID编号固定为0-15)和8个保留文件(MFT记录的ID编号固定为16-23),这24个文件是被称为元文件(Metafiles)或元数据(metadata)的系统文件(具体内容见后面),供系统本身组织、架构文件系统使用。而用户的文件在MFT中的ID编号从24后开始排,用户每添加一个文件,ID号加1。当某文件被删除时,与之对应的MFT记录将被空

4、出来,如果此时再添加文件,系统会优先填充ID小的空位。MFT尽量保持其物理上的连续性,可将磁盘碎片降至最低。 MFT的大小和记录结构:MFT文件在创建时非常小(大约16KB),其大小是随着磁盘文件的增加而增加。MFT文件默认占用该分区12(1/8)的空间(MFT区域)。当用户文件空间不足时,系统会把MFT空间分配给用户文件。当有剩余空间时,这些空间又会被重新划分给MFT。MFT的每一编号对应一个MFT的文件记录(File Record,FR),又称文件记录段 (FRS)。一个MFT文件记录的大小一般为1KB(两扇区)。每一个或多个文件记录对应本分区一个文件。第一个MFT文件记录就是MFT本身。

5、文件记录由记录头和属性列表组成(见下图):MFT记录头(属性头):为前部为一个包含几十个字节的具有固定的大小和结构的部分,是每一个MFT记录都有的。起始字节是46 49 4C 45,相应的ASCII码是FILE。属性列表(list):为MFT记录的主体,长度可变,起始偏移为0x30(相对于记录首字节的偏移),用于存放文件各种属性(大小、位置、时间等)。属性的内容详见后面。常见的是标准属性(0x10)、文件名属性(0x30)、数据流属性(0x80)和位图属性(0xB0)等,一个文件记录至少包含0x10和0x30属性。而每一属性又都有属性头(header)和属性体(body)的结构。MFT的结束标

6、志为FF FF FF FF(严格说是上面属性的结束,下一个属性开始)。一个文件记录的简单结构示意图: 一个文件记录文件记录头文件属性列表属性1属性头属性体属性2属性头属性体属性3属性头属性体结束标志FF FF FF FF每一个属性都含有属性头(header)和属性值(body,内容)两部分。 $MFT文件首扇(即MFT自身的记录,属性有0x10 0x30 0x80 0xB0,以颜色为区分):各种文件和目录的MFT基本文件记录:1小文件、小目录(1K以下):不管它是在根目录下还是在多层文件夹中,它们的信息以及内容都只用MFT基本文件记录来保存,没有外部簇(见下面的MFT结构图)。2大文件(1K以

7、上):在它的MFT基本文件记录中,其80数据属性有数据运行(data runs)指针(包含数据所在的地址和大小),指向它在MFT外的数据内容,但这些运行不是索引块记录,只是数据簇。3大目录:它既在MFT中有一基本文件记录,又在MFT外有一个或多个的索引块记录。大目录的MFT记录中,其索引根属性(90属性),里面仅包含少数下级目录的索引项;而多数的下级文件(夹)的索引项,是保存在MFT之外的簇中。这些外部簇(即索引块),是由90属性后的索引分配属性(A0属性)指引出来的。在A0属性里包含有指向索引块的运行(data runs)指针(同80属性的data runs含义一样)。每一个运行指向一个或连

8、续的多个索引块,被称为一个连续的“片断”( Fragment)。在MFT记录中,90属性是目录的标志,A0属性是大目录的标志。4元文件:如$LogFile、$Bitmap、$Boot和$MFT等,它们都是大文件。如$MFT文件,它就包括了所有的MFT文件记录。在MFT中 ID号为7的$Boot文件,其“data runs”内容位于分区开头的逻辑0扇至15扇,共16个保留扇区(逻辑0扇即分区启动扇区)。在MFT中,ID号为5的元文件$Root,为一个大目录(即分区根目录),有自己多达几簇的索引块记录。因为它的MFT记录中,无80属性,只有90属性(索引根)和A0属性(索引分配)。一句话就是,不管

9、大小目录还是大小文件,它的基本文件记录都在MFT中保存。任何大目录或大文件,都能在MFT找到它的最初线索。MFT结构示意图:MFT记录和索引块记录的区别:记录(Record)类型有MFT文件记录、索引块记录、日志记录等。MFT文件记录(FR):以“FILE”签名的扇区都是MFT文件记录,且都位于MFT区域中。索引块记录(目录项记录):为大目录的索引,以49 4E 44 58开头,ASCII码为“INDX”。一般为1簇(一般为4K,即8扇)大小,大多位于MFT之前。一个目录可以拥有多个索引块。由标准索引头和多个索引项组成,记录其下子目录和文件的名称和地址、大小等信息。作为MFT记录外部簇的索引块

10、,是由它的MFT基本文件记录(即大目录在MFT中的起始记录)的A0属性(索引分配属性)中的运行指针(含地址和大小)引出来的。有多重目录的,一层一层地索引下去,直到各文件的数据区域。MFT的基本特点:1. 卷中所有文件通过MFT来确定其在磁盘上的存储位置。2NTFS系统的高效,与MFT文件记录在磁盘上存储的连续性关系很大。MFT文件记录数组(从0开始编号)在物理上是连续的,但空间不足时MFT会产生碎片,磁盘碎片整理程序无法对MFT进行整理。一般一旦发生MFT损坏,你硬盘上的数据就会丢失。3.一个文件的MFT记录中,如果有80属性,它就是一个文件;有90属性及A0属性,它就是一个目录。MFT的分配

11、状态也在一个$BITMAP属性文件中进行描述。4. 如果一个文件的属性较多,可以使用多个记录,第一个记录被称为基本文件记录(Base File Record)或基本MFT项,存储有其它相关文件记录的位置、大小等信息。5.所有的记录包括目录记录、日志记录等,第一个区域都有相同的签名(如FILE、INDX)。如果发现错误,可能将其改写成“BAAD”的字样。6. 修正值(Fixup Value):MFT记录、目录项记录和日志记录的每个扇区的结束两个字节都有一个修正值,用来确定记录是否被完全正确地写入存储设备。详见后面更新序列号及数组部分。7. 文件引用号(File Reference Number,

12、也称文件索引号):MFT中每个文件都有64bit的唯一标识。它由两部分组成:一是48位的文件ID编号(MFT Entry Value,文件号)。二是文件顺序号(Sequence Number,SN),16位,随每次文件记录的重用而增加,这是NTFS为进行内部一致性检查而设计的。MFT的其它特点:1. 系统盘的MFT文件,通常要大于存储盘的MFT文件,因为系统盘的小文件更多。2.能保存在MFT中的小文件,其内容实际上只能在0.5K左右,因为两扇区的记录空间除了MFT头和10、30等常规属性外,不足以保存接近1K(如0.9K)的数据内容。而保存在MFT中的小目录,其索引根属性(90属性)一般只能达

13、到0.7K左右。所以,超过0.5K左右的小文件,还有在记录中有两个30属性的小文件,以及90属性超过0.7K左右的小目录,一般都只能像大文件和大目录一样,需要自己的外部簇链接了。3在Windows 2000/XP中MFT不能使用dir命令(包括加上/ah参数)查看。微软公司因此提供了一个NFI.EXE,用此工具可以转储NTFS主文件表的重要的元数据文件。在WINHEX中带有NFI.EXE,用此工具可以显示这些记录与文件的对应关系。DOS下使用NFI:C:nfi C: |MORE。4MFT空间的管理:可以在HKEY_LOCAL_MACHINESYSTEMCurrentControlSet Con

14、trol FileSystem中增加一个类型为REG_DWORD的NtfsMftZoneReservation,它的缺省值是1,其范围是1-4(1表示MFT占整个卷的12.5%,2表示25%,3表示37.5%,4表示50%)。实际上这个值已远大于分区的MFT实际分配和使用大小,现在几百G的硬盘,一个分区的MFT一般就是几十百来兆。5注意:从FAT转换过来的NTFS,性能有折扣。如果分区是从FAT32转换为NTFS文件系统的(使用命令为“CONVERT 驱动器盘符 /FS:NTFS”),不仅MFT会很容易出现磁盘碎片(MFT记录不再是连续的),更糟糕的是,磁盘碎片整理工具往往不能整理这个分区中的

15、MFT,严重地影响系统的性能和降低了文件的可恢复性。因此,建议将分区直接格式化为NTFS文件系统。NTFS5中所有的元文件:元文件的文件名都以“$”开头,是存储在卷上支持NTFS格式管理的数据,是隐藏文件,不能被应用程序访问,只能为系统提供服务。元文件在MFT中的ID编号为0-23号。序号元文件功能0$MFT主文件表本身1$MFTMIRR主文件表的部分镜像2$LOGFILE日志文件3$VOLUME卷文件4$ATTRDEF属性定义列表5$ROOT根目录6$BITMAP位图文件7$BOOT引导文件8$BADCLUS坏簇文件9$SECURE安全文件10$UPCASE大写文件11$EXTEND MET

16、ADATA DIRECTORY扩展元数据目录12$EXTEND$REPARSE重解析点文件13$EXTEND$USNJRNL变更日志文件14$EXTEND$QUOTA配额管理文件15$EXTEND$OBJID对象ID文件16-23保留23用户文件和目录MFT中的第1个记录就是MFT自身,也就是将整个MFT看做一个文件。鉴于MFT的重要性,系统专门为它准备了一个镜像文件($MftMirr),也就是MFT中的第2个记录。第3个记录是日志文件($LogFile)。该文件是NTFS为实现可恢复性和安全性而设计的。当系统运行时,NTFS就会在日志文件中记录所有影响NTFS卷结构的操作,包括文件的创建和改

17、变目录结构的命令,例如复制,从而在系统失败时能够恢复NTFS卷。第4个记录是卷文件($Volume),它包含了卷名、被格式化的卷的NTFS版本和一个标明该磁盘是否损坏的标志位(NTFS系统以此决定是否需要调用Chkdsk程序来进行修复)。第5个记录是属性定义表($AttrDef,attribute definition table),其中存放了卷所支持的所有文件属性,并指出它们是否可以被索引和恢复等。第6个记录是根目录($Root ),其中保存了存放于该卷根目录下所有文件和目录的索引。在访问了一个文件后,NTFS就保留该文件的MFT引用,第二次就能够直接访问该文件。 第7个记录是位图文件($B

18、itmap)。NTFS卷的分配状态都存放在位图文件中,其中每一位(bit)代表卷中的一簇,标识该簇是空闲的还是已被分配了的,由于该文件可以很容易的被扩大,所以NTFS的卷可以很方便的动态的扩大,而FAT格式的文件系统由于涉及到FAT表的变化,所以不能随意的对分区大小进行调整。第8个记录是引导文件($Boot),它是另一个重要的系统文件,存放着Windows系统的引导程序代码。该文件必须位于分区逻辑0扇才能够正确地引导系统。它由Format程序创建的,虽然享受NTFS系统的各种安全保护,但还是可以通过普通的文件I/O操作来修改。第9个记录是坏簇文件($BadClus),它记录了磁盘上该卷中所有的

19、损坏的簇号,防止系统对其进行分配使用。第10个记录是安全文件($Secure),它存储了整个卷的安全描述符数据库。NTFS文件和目录都有各自的安全描述符,为了节省空间,NTFS将具有相同描述符的文件和目录存放在一个公共文件中。第11个记录为大写文件($UpCase,upper case file),包含一个大小写字符转换表。第1216个记录见表中解释。第1723记录是是系统保留记录,用于将来扩展。第25个和之后记录即为非系统的用户文件。NTFS的管理方法B树结构:大于一个MFT记录的文件夹,使用B树(B-Tree)结构进行管理。MFT文件的索引分配属性(A0属性)中,都包含了一个指向外部簇(索

20、引缓冲区)的指针。非常驻的外部簇用来存储那些MFT内存储不了的下一级子目录和文件。如下图:FAT文件系统簇号指针在FAT表中,而NTFS中簇号指针包含在$MFT和$MFTMirr文件中。在目录中查找文件是按B树的搜索方法,先搜索根节点(根目录),然后根据文件名确定在哪个子节点区域中,然后再以子节点为当前的根节点去搜索,直到找到文件为止。查找速度甚至比访问较小的文件夹中的文件还快。属性分常驻属性和非常驻属性:小文件和目录将全部(内容或索引信息)存储在MFT基本的文件记录里,其属性就称为常驻属性(resident attribute)。标准信息、文件名和索引根等属性总是常驻属性。NTFS对常驻属性

21、的访问时间短。大文件(目录)如果属性值超过1KB时,在基本的文件记录中就用一个指针指向MFT基本文件记录之外的一个外部簇,以此形成B-Tree(B树)结构。值存储在运行中而不是在MFT文件记录中的属性称为非常驻属性(nonresident attribute)。这些外部簇通常称为一个运行(run或Data Run)或一个盘区(extent),它们可用来存储属性(如索引项)或属性值(如文件数据)。非常驻数据Runlist(运行列表)的解析:表示非驻留数据(外部簇)位置信息的Runlist,由若干个Run (data runs,数据流)组成。每个流(run)描述的第一个字节表示两个数据的占用字节数

22、:高4Bit描述数据的起始簇号,低4Bit则指明了数据占用的簇的数目(流尺寸)。它们都是可变长度的。即:1.若数据的值小于128,则占用1个字节。2.若数据的值大于128但小于32768,则占用2个字节。(2的16次幂除以2)3.若数据的值大于32768但小于8388608,则占用3个字节。(2的24次幂除以2)4.若数据的值大于8388608,则占用4个字节。第一个run的起始簇号,是从逻辑0簇到第一个run的起点间的簇数,为LCN。值得注意的是,从第二个Run开始,起始簇号是从上一个Run的起点开始计数的,而不是相对于分区开头的第0簇。下面是一个Runlist 的例子(数据均用16进制表示

23、):RunList: 21 20 ED 5 22 48 7 48 22 21 28 C8 DB (一共有三个run)。数据块起始簇号数据块长度(单位:簇)第一个数据块5EDH20H(用1字节表示)第二个数据块5ED2248=2835H748H(用2字节表示)第三个数据块2835DBC8=103FDH28H(用1字节表示)运行(data runs)的其它特性:当一个流描述的第一个字节为0里就表示该流已经结束。非常驻的可增长的属性有数据、属性列表等。标准信息和文件名属性总是常驻的。每个文件都可以存在多个数据流,如果属性值增加后,将再分配一个运行来存储它。数据流(alternate data str

24、eams,NTFS交换数据流,简称ADS):每个属性和属性值由单个的流(stream)组成,数据流就是文件属性和属性值的集合。在NTFS分区中最基本的存储单元就是数据流(如运行或外部簇片断)。NTFS提供对属性流(文件名、时间标记等)的各种操作:创建、删除、读写等。严格地说,NTFS并不对文件进行操作,而只是对属性流进行读写。删除一个文件,其数据流也将同时被删除。LCN和VCN:NTFS使用逻辑簇号(LCN,Logical Cluster Number)和虚拟簇号(VCN,Virtual Cluster Number)来对簇进行定位。LCN是对整个卷中的所有的簇从头到尾进行简单编号,VCN是对

25、特定文件的簇从头到尾进行编号,以便引用文件中的数据。数据运转:每个LCN的连续模块都被赋予了一个数据运转,它包含一个VCN,一个LCN和一个长度。 当NTFS需要在磁盘上找到一个对象时,就查看数据运转中的VCN来得到LCN。VCN可以映射成LCN,而不要求在物理上连续。要定位磁盘上的流,就必须在数据运转的帮助下把VCN转换成LCN。一个非常驻数据类属性(0x80H、0xA0H)有多个运行(run)或盘区时,NTFS通过VCN-LCN之间的映射关系来记录它们的情况,在其属性中会标明开始和结束的VCN。MFT文件有碎片时,其文件记录存储在磁盘的不连续区域。但系统仍能找到这些记录,靠的就是VCN-L

26、CN的映射关系。其它文件碎片也是一样。NTFS分区读写流程:当NTFS访问某个分区时,它必须“装载”该分区:首先从主分区表找到NTFS分区,再读取位于分区首扇的$Boot文件的第一个扇区(启动扇区),从其中的BPB数据中获得$MFT所在的位置,读取第一个MFT记录(MFT本身)。然后再读取编号为5的 MFT记录($Root文件的记录),通过它打开分区根目录文件($Root),以便定位文件(夹)在磁盘上的位置。接着NTFS再打开$Bitmap等几个元文件的MFT的记录,之后用户就可以访问该卷了。$Boot文件:$Boot文件作为NTFS分区引导时被执行的第一段代码,它是NTFS分区中唯一一个位置

27、固定不变的文件,占据分区的逻辑0-15扇。它的第一个扇区(DBR或OBR、EBR),包含了BPB(BIOS参数记录块,记录了分区尺寸、$MFT文件位置等)和卷启动代码(装载OS的NTLDR,再让它继续装载系统其他部分)。文件系统驱动程序必须读取其中的数据才能定位$MFT,才能对整个分区进行操作。$Boot文件首扇结构(NTFS分区启动扇区。注意:它虽以55AA结束,但它不是分区表):偏移地址占用字节数描述0H3跳转到启动例程的指令(EB 52 90)3H4NTFS分区标志:“NTFS”BH2每扇区字节数DH1每簇扇区数EH2保留扇区数10H1FAT个数(为了与FAT/FAT32的BPB兼容,值

28、为0)11H2根目录项数,值为013H2分区扇区数,值为015H1存储介质(扇区为F8)16H2每个FAT占用扇区数,值为018H2每道扇区数1AH2磁头数1CH4隐藏扇区数20H4分区扇区数,值为024H1物理设备号(每一个硬盘为80H)25H1未用26H2保留,值为80H28H8分区扇区数-130H8$MFT第一簇簇号38H8$MFTMirr第一簇簇号40H1每个文件记录占用的簇数44H4每个目录项存储区占用的簇数48H8分区序列号C盘逻辑0扇截图($Boot文件首扇,即DBR扇区):NTFS分区启动扇区(逻辑0扇)的BPB部分的解释: 定位$MFT文件:根据上表可知,$MFT文件第一簇簇

29、号,在$boot首扇偏移0x30处标明(占用8个字节)。以上面C盘DBR扇区图为例,它的第1簇簇号为00 00 0C,其十六进制数表示为0xC0000H(十六进制数为“低位在前,高位在后”),即第786432簇。786432簇86291456扇, $MFT文件首个记录位于本分区第6291456扇区。现在一般的分区多为此数。NTFS分区的簇大小一般为4K,簇因子(是每簇所包含扇区的数目)为8。而在上面的BPB示意图中,所示分区的簇大小为80H扇,簇因子为128,所以第16384簇(0x4000H)就是第2097152扇区,保存有$MFT文件首个记录。其它重要的分区信息,如每扇区字节数、$MFTM

30、irr第一簇簇号、每个目录项存储区(索引块)占用的簇数、分区扇区数(因为未包括分区最后一扇的DBR备份扇区,所以需减1)等,都可以在$Boot文件首扇(DBR或EBR)中找到。MFT文件记录的属性属性类型在元文件$AttrDef中定义了下列常用的文件属性(NTFS的标准属性):10H标准信息属性Standard information (常规文件属性,时间等)20H属性列表属性Attribute list(其他存储记录的索引,即外部簇)30H文件名属性File Name (长、短文件名信息的描述)40H卷版本属性(NT)对象标识符属性(2K)Volume VersionObject ID (对

31、象ID)50H安全性描述属性Security descriptor (NTFS安全对象的描述)60H卷名属性Volume name (卷的名称)70H卷信息属性Volume information (卷的版本和状态)80H数据内容属性Data (容纳文件数据。属性头部分描述位置和大小;数据部分,支持加密、压缩等)90H索引根目录属性(根索引)Index Root(目录内容的索引,相当于全部对象的File_Name属性的副本)A0H索引分配表属性Index Allocation (非常驻的$Index_Root,分支索引)B0H镜像属性(位图)BitMap (属性位图)C0H链节属性 (NT)修

32、复点属性(2K)Symlink(符号链接)Repairse PointD0HHPFS扩展属性信息属性HPFS extended attributes information E0HHPFS扩展属性HPFS extended attributesF0H所有权设置属性(NT)Property set100H日志作用流属性(2K)Logged Utility Stream每个文件记录中都有多个属性,这些属性相对独立,可以直接使用。MFT记录常见的属性类型(以属性区域开头标志字节为名,H为十六进制省写):10H属性(标准属性信息) 30H属性(文件名) 90H属性(索引根) 常驻属性80H属性(数据)

33、 A0H属性(索引分配) B0H属性(位图) 非常驻属性一个MFT记录的属性示意图(其属性依次是:MFT记录头、10H、30H、80H、90H属性):各属性可用属性区域开头的标志字节代称,如10属性。WINHEX中的各属性用颜色区分。同种颜色较浅区域为此属性的属性头,较深区域为此属性的属性内容(属性体或属性值)。属性的一般特点:从一个属性的偏移00H03H的4个字节,为该属性的类型标志。每个MFT记录的属性数量和种类都可能不同;不同的属性其结构和含义也各不相同。流较小且不会增长的文件,它的数据流就存储在其属性名后,这属性就是常驻属性。如果一个文件属性是非常驻的,那么其流就存储在一个或多个扩展或

34、运行中。MFT中元文件的属性集(具体情况下,有些元文件所具有的属性稍有不同):序号元文件属性集0$MFT0X10 0X30 0X80 0XB01$MFTMIRR0X10 0X30 0X802$LOGFILE0X10 0X30 0X803$VOLUME0X10 0X30 0X50 0X60 0X70 0X804$ATTRDEF0X10 0X30 0X50 0X805$ROOT0X10 0X30 0X50 0X80 0X90 0XA0 0XB06$BITMAP0X10 0X30 0X807$BOOT0X10 0X30 0X50 0X808$BADCLUS0X10 0X30 0X80 0X809$S

35、ECURE0X10 0X30 0X80 0X90 0X90 0XA0 0XA0 0XB0 0XB010$UPCASE0X10 0X30 0X8011$EXTEND METADATA DIRECTORY0X10 0X30 0X9012$EXTEND$REPARSE0X10 0X30 0X90 0XA0 0XB0 13$EXTEND$USNJRNL0X10 0X30 0X80 0X8014$EXTEND$QUOTA0X10 0X30 0X90 0X90 0XA0 0XA0 0XB0 0XB015$EXTEND$OBJID0X10 0X30 0X90 0XA0 0XB016-23保留23用户文件和目

36、录与属性相关的概念的英文及简写:SI(标准信息) AL(属性列表) FN(文件名) OID(对象ID) VI(卷信息)SD(数据流) IR(索引根) IH(索引块头) IE(索引项) IB(索引块) IA(索引分配)L = Length of the index entry L = Length of the file nameM = Length of the stream S = Size of the update sequence array 1N = Name length O = Offset to the streamNon-resident flag(非常驻标志) Compre

37、ssed flag(压缩标志) Offset to the stream(流偏移) Indexed flag(索引标志) Offset to the runlist(运行列表偏移) Real size of the stream(实际的流大小) Number of compression engine(压缩引擎号) Allocated size of the stream(流的分配尺寸) Initialized data size of the stream(流初始化大小) Length of the stream(流长度) Offset to the content part (相对内容部分

38、的偏移值) Identificator(标识) 属性记录头类型:记录的每个属性的属性头一般都存储了属性类型、大小、名称、是否常驻等相关信息。所有属性的属性头,在偏移0x0E前的内容(前16字节)都是一致的。因为流(属性)太小,常驻的属性从不被压缩(也没有压缩引擎号域)。1常驻属性标准属性头结构(分为命名和未命名两种,N = Name length):偏移大小值意义0X004属性类型(命名如0x90,0xB0;未命名如0x10,0x30)0X044属性长度(包括属性头,单位为字节,下同)0X0810X00驻留标志(00表示文件属性为常驻)0X091N或0X00名称长度(00 表示文件属性没有命名

39、)0X0A20x18或0X00到名称的偏移量(属性类型到属性名称的距离,00为未命名)0X0C20X00标志(0x4000加密,0x8000稀疏,00即无压缩标志)0X0E2属性Id(每个属性都有一个惟一的标识)(a)0X104L属性体长度(不包括属性头)0X1420X18到属性的偏移量(属性类型到属性体的距离)(b)0X161索引标志(文件属性通过一个索引入口进行索引)0X1710X00保留0X182N 4NUnicode字符命名属性的属性名称(如$130) 或未命名属性的属性体(属性内容或属性值,为4字节的倍数)0x18+2N4N命名属性的属性体(属性内容或属性值,为4字节的倍数)10属性

40、图例(10属性的属性头为所示浅色区域):2非常驻属性标准属性头结构(分为命名和未命名两种,N = Name length):偏移大小值意义0X004属性类型(如0x20,0x80,0xA0 0xB0)0X044属性长度(包括属性头)0X0810X01驻留标志(01表示文件属性为非常驻)0X091N或0X00名称长度(00 表示文件属性没有命名)0X0A20x40或0X00到名称的偏移量(属性类型到属性名称的距离,00为未命名)0X0C2标志(0x0001压缩,0x4000加密,0x8000稀疏文件)0X0E2属性Id(每个属性都有一个惟一的标识)(a)0X108起始VCN0X188结束VCN0

41、X2020X402N到数据运行的偏移量(属性类型到运行的距离)0X222单位压缩尺寸(一般为2倍簇大小,0表示未压缩)(b)0X2440X00保留0X288为属性值分配大小(按簇大小计算)(c)0X308属性值实际大小0X388属性初始大小(与分配大小不等时使用)(d)0X402NUNICODE字符属性名称(如$I30,或为未命名)2N+0X404N数据运行(记录运行大小和开始的簇号,见RUNLIST的解析)80属性图例(80属性的属性头为所示浅色区域):各项属性的详解MFT记录头(FR头,范围为0x00H-0x37H):偏移长度描述0H4MFT记录标志(46 49 4C 45,ASCII字符

42、串:“FILE” )4H2更新序列(US)的偏移(修正值或修复校验的偏移地址,一般为0x30)6H2更新序列号 (USN)尺寸(Number of entries in fixup array,修正阵列中的记录数。即具相同校验值扇区的个数1,一般为3)8H2日志文件序列号LSN(记录每次被修改,都将导致该序列号加1)10H2序列号(SN)(用于记录本文件记录被重复使用的次数)12H2链接计数(即有多少个文件名链接在这个基本文件记录上,只存在基本文件记录中)14H2第一个属性(数据或流)的偏移地址(即10H标准信息属性的偏移)16H2数据标志。该字节可为:1普通文件 0文件被删除 3普通目录 2

43、目录被删除18H4文件记录实际大小(填充到8字节)1CH4文件记录分配大小(填充到8字节)20H8基本文件记录中的文件引用号(有扩展文件记录即属性列表时使用,一般为0)28H2下一个自由属性的ID(将该值分配给新属性,ID为:所有属性1)2AH2保留(XP中使用)2CH4本文件记录号(起始编号为0,XP中使用)30H2更新序列号(USN,修正值。每扇区最后两字节的值,该值不能为0)32H2(S-1)更新序列数组(USA,修正值表,S = Size of the Update Sequence Array1)记录头解释:1更新序列号(Update Sequence Number,USN):是为了

44、确保记录数据的可靠性而在NTFS分区中提出的。在每个记录头中都有一个USN(即修正值,写操作后与每扇区最后两字节值相同),和一个缓冲(buffer)即USA(Update Sequence Array,更新序列数组),或称修正值表。USA保存的是每个扇区最后两字节的原始数据(原值,非修正值,每扇内容并不相同),USA跟在USN之后,每两字节对应一扇区的最后两字节。例如:MFT文件记录为两扇,2(S-1)即表示MFT记录的USA为4个字节大小,两个两字节分别对应文件的两个扇区。写操作时, 每扇区最后两字节内容(原值)先被复制到记录头的USA中;再把USN(修正值,略过0)加1更新后,改写进每扇区最后两个字节;最后把数据(记录)写入存储设备。之后,每扇区最后两字节都为相同的修正值,以确保记录中的所有数据都被正确的写入磁盘中。读操作时,首先检查记录标志(如FILE或INDX等)是否正确,然后再从文件记录头中读取USN(修正值,即上次写操作后保留下的更新值),与每个扇区的最后两字节比较,是否与记录头的修正值相同。如果修正值检查通过,则说明上一次写操作和当前的读操作均成功。就将USA中的原始数据(原值)还原到相应的位置,然后就可以进行其他操作了。如检测失败则会拒绝该文

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号