

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、硬盘结构及其分区简介目录背景知识简介.错误!未定义书签。硬盘结构简介.错误!未定义书签。基本 INT 13H 调用简介 .错误!未定义书签。扩展 INT 13H 调用简介 .错误!未定义书签。磁盘分区简介.错误!未定义书签。BOOTSECTOR 简介.错误!未定义书签。分区表结构简介.错误!未定义书签。扩展分区简介.错误!未定义书签。硬盘分区类型.错误!未定义书签。如何找到一个逻辑分区 .错误!未定义书签。逻辑分区简介.错误!未定义书签。FAT16 FAT32 NTFS 逻辑分区 BOOTSECTOR .错误!未定义书签。FAT16 FAT32 逻辑分区组成结构 .错误!未定义书签。NTFS
2、逻辑分区组成结构.错误!未定义书签。硬盘分区表主分区表位于硬盘主引导扇区 (0 柱面 0 磁头 1 扇区)的后部,从 1BEH 字节开始, 共占用 64 个字节,包 含四个分区表项。每个分区表项的长度为 16 个字节,它包含一个分区的引导标志、系统标志、起始和结 尾的柱面号、扇区号、磁头号以及本分区前面的扇区数和本分区所占用的扇区数。其中 引导标志 表明 此分区是否可引导,即是否活动分区。当引导标志为 80 时,此分区为活动分区; 系统标志 决定了该 分区的类型,如 06 为 DOSFAT16 分区, 0b为 DOSFAT32 分区, 63 为 UNIX 分区等;起始和结尾 的柱面号、扇区号、
3、磁头号指明了该分区的起始和终止位置。分区表项的 16 个字节分配如下:第 1 字节 :引导标志第 2 字节 :起始磁头第 3 字节 :低 6 位为起始扇区 , 高 2 位与第 4 字节为起始柱面第 4 字节 :起始柱面的低 8 位第 5 字节 :系统标志第 6 字节 :终止磁头第 7 字节 :低 6 位为终止扇区 , 高 2 位与第 8 字节为终止柱面第 8 字节 :终止柱面的低 8 位第 9 12 字节 : 该分区前的扇区数目第 1316 字节 :该分区占用的扇区数目为方便使用 , 本程序将引导标志和系统标志用十六进制表示,其它参数均使用十进制。 扩展分区作为一个主分区占用了主分区表的一个表
4、项。 在扩展分区起始位置所指示的扇区 ( 即该分区的第 一个扇区 ) 中,包含有第一个逻辑分区表,同样从1BEH 字节开始,每个分区表项占用 16 个字节。逻辑分区表一般包含两个分区表项,一个指向某逻辑分区,另一个则指向下一个扩展分区。下一个扩展分区 的首扇区又包含了一个逻辑分区表, 这样以此类推, 扩展分区中就可以包含多个逻辑分区。 为方便说明, 我们把这一系列扩展分区和逻辑分区分别编号,主扩展分区为 1 号扩展分区,第一个逻辑分区表所包含 的两个分区分别标为 1 号逻辑分区和2 号扩展分区,依次类推。硬盘结构简介 :很久以前 , 硬盘容量还非常小 , 人们采用与软盘类似的结构生产硬盘。也就
5、是硬盘盘片的每一条磁道 都具有相同的扇区数。为此人们定义硬盘参数为 ( CHS) :即磁头数 ( Heads) , 柱面数 ( Cylinders) , 扇区数 ( Sectors) ,以及相应的寻址方式。其中:磁头数表示硬盘总共有几个磁头 ,也就是有几面盘片 ,最大为 255(用 8 个二进制位存储 ); 柱面数表示硬盘每一面盘片上有几条磁道 ,最大为 1023(用 10 个二进制位存储 );扇区数(Sectors)表示每一条磁道上有几个扇区,最大为 63(用 6 个二进制位存储);每个扇区一般是 512 个字节 ,理论上讲这不是必须的 , 但好象没有取别的值的; 所以磁盘最大容量为:255
6、 * 1023 * 63 * 512 / 1048576 = 8024 GB( 1M = 1048576 Bytes) 或硬盘厂商常用的单位:255 * 1023 * 63 * 512 / 1000000 = 8414 GB( 1M = 1000000 Bytes)在 CHS 寻址方式中,磁头、柱面和扇区的取值范围分别为0 到 Heads -1、0 到 Cylinders - 1 和 1 到Sectors( 注意是从 1 开始 ) 。在老式硬盘中 ,由于每个磁道的扇区数相等 , 所以外道的记录密度要远低于内道, 因此会浪费很多磁盘空间 (与软盘一样 ) 。为了解决这一问题 , 进一步提高硬盘容
7、量 , 人们改用等密度结构生产硬盘。也就是 说, 外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的 3D 参数, 寻址方式也改为线性寻址 ,即以扇区为单位进行寻址。为了与使用3D 寻址的老软件兼容在硬盘控制器内部安装了一个地址翻译器。由它负责将老式 3D 参数翻译成新的线性参数。这也是为什么现在硬盘的 3D 参数可以有多种选择 的原因 (不同的工作模式 ,对应不同的 3D 参数,如 LBA, LARGE, NORMAL) 。基本 INT 13H 调用简介 :BIOS INT 13H 调用是 BIOS 提供的磁盘基本输入输出中断调用,可完成磁盘(包括硬盘和软盘)的复位,读写 , 校
8、验, 定位, 诊断, 格式化等功能 .它使用的就是 CHS 寻址方式 , 因此最大识能访问 8 GB 左右的硬盘。INT13H 调用中AH=功能号,AL= 扇区数,CH CL=B头号,扇区号,DH, DL=B头号,驱动器号ES:BX 数据缓冲区地址功能号 AH:0 软盘系统复位1 读软盘状态只有 AH 有效返回 AL= 犬态字节2 读磁盘成功 AH=0 失败 AH=误代码3 写磁盘成功 AH=0 失败 AH=误代码4 检验磁盘扇区(ES:BX 不设置)成功 AH=0 失败 AH=错误代码5 格式化磁道(ES:BX 磁道地址 CH, CL 不设置)成功 AH=0 失败人日人日= =错误代码8 取
9、磁盘参数(只需设置 AH, DL 返回值方在 CH, CLDH 中)成功 AH=0 失败 AH=错误代码扩展 INT 13H 调用简介:为支持大于 8G 的硬盘,现在的主板 BIOS 提供了扩展 INT 13H 调用,使用的是线性寻址方式。功能号 AH: 41H 检测是否支持扩展 INT 13H 调用BX=55AAH,AH=0 支持42H 读磁盘扇区DL=B盘号,DS:SI 调用结构的地址调用结构如下:disk_addr_pkt strucpacket_sizedb 16; 结构长度通常为 161 字节reserveddb 0; 保留 , 必须为 01 字节block_countdw ?; 读
10、取扇区数目2 字节buffer_addrdd ?; 缓冲区地址4 字节 ( 高 2 字节段址 , 低 2 节字偏移 )block_numdq ?; 读取的绝对扇区起始号8 字节disk_addr_pkt ends成功:AH=0;失败:AH=t误代码。43H 写磁盘扇区DL=B盘号,DS:SI 调用结构的地址 调用结构与读磁盘相同。成功:AH=0;失败:AH=t误代码。48H 取得磁盘参数6789DL=B盘号,DS:SI=结果缓冲区调用结构如下:in fo_sizedw26缓冲区长度 26flagsdw ?磁盘状态标志字cyli ndersdd?磁盘逻辑柱面数headsdd?磁盘逻辑磁头数sec
11、_per_track dd?磁盘逻辑每道扇区数sectorsdq?磁盘总扇区数sector_sizedw ?磁盘每扇区字节数成功:AH=0; 失败: AH=错误代码。磁盘分区简介:BOOT SECTO 简介Boot Sector 也就是硬盘的第一个扇区,它由 MBR( Master Boot Record), DPT( Disk Partition Table)和 BootRecord ID 三部分组成。MBR 又称作主引导记录占用Boot Sector 的前 446 个字节(0 to 0 x1BD),存放系统主引导程序(它负责从活动分区中装载并运行系统引导程序DPT 即主分区表占用64 个字
12、节(0 x1BE to 0 x 仆 D),记录了磁盘的基本分区信息分区项”每项 16 字节,分别记录了每个主分区的信息(因此最多可以有四个主分区Boot Record ID 即引导区标记占用两个字节(0 x 仆 E and 0 x 仆 F ,对于合法引导区判别引导区是否合法的标志。BOOTSECT O 的具体结构如下图所示:分区类型,女口 0 x0B = FAT32,0 x83 = Linux 等,0 表示此项未-55AA分区结束磁头号 分区结束扇区和柱面号,底字节的低 6 位为扇区号,高 2位为柱面号的第 9, 10 位,高字节为柱面号的低8 位在线性寻址方式下的分区相对扇区地址 (对于基本
13、分区即为绝对地址),主分区表分为四个)。,它等于 0 xAA55,这是0000主引 ICTRSF字 节)1BD1BE分区表结构简1CE分区表由四个分区项1DE 11ED 分区状态,0 =未激活,0 x80 =激活(注意此项)1FE分区起始磁头 i 分区信息 3( 16 字节)1FD_1FE 分区起始扇区和柱面号,底字节的低 6 位为扇区号,高 2位为柱面号的 1 分区信息 0 位 4,(高字节节)柱面号的低8 位分区信息 1(16 字节)F 构成,每分项长度为 2(:16 字节)16 个字节,分区表结构如下图所示:扩展分区简介由于主分区表中只能分四个分区,无法满足需求,因此设计了一种扩展分区格
14、式 基本上说,扩展分区的信息是以链表形式存放的,但也有一些特别的地方。首先,主分区表中要有一个基本扩展分区项,所有扩展分区都隶属于它,也就是说其他所有扩展分区的空间都必须包括在这个基本扩展分区中对于 DOS / Win dows 来说,扩展分区的类型为 0 x05( EXTENDX.除基本扩展分区以外的其他所有扩展分区则以链表的形式级联存放,后一个扩展分区的数据项记录在前一个扩展分区的分区表中,但两个扩展分区 的空间并不重叠扩展分区类似于一个完整的硬盘,必须进一步分区才能使用但每个扩展分区中只能存在一个其他分区此分区在 DOS/Windows 环境中即为逻辑盘.因此每一个扩展分区的分区表(同样
15、存储在扩展分区的第一个扇区中)中最多只能有两个分区数据项(包括下一个扩展分区的数据项)。扩展分区的分区表存放在该分区的第一个扇区中它的结构与硬盘的BOOTSETOR 基本相同,只是没有主引导纪录,即该扇区的 0- 0X1BD 的数据是无效的,另外它的分区表只有前面两项是有效的 。他的最后两 个字节也是合法性检测标志即 55AA。下面是扩展分区的结构示意图硬盘分区类型未使用分区项DOS12 一种 fat 表。 为xenix 种 linux 分区D0S16 早期硬盘分区方法EXTEND扩展分区的一种。扩展分扩示意图扩展分区表分区项 1分区项 2逻辑盘 112 位的分区。主要用于早期小硬盘和部分软盘
16、扩展分区 2,分区表项为 16 位,最大支持 32M起始扇区为前面的第BIGDOS 艮卩 FAT16 分区 分区表为区 6 表位,每簇最大为 32K,最大分区为2NTFS 分区分区项 1EXTEN分区项 2分区大小DX 分区起始扇区+该分区的相对偏移FAT32 分区。分区表为 32 位FAT32X 分区。与 FAT32 基本相同展。分区表为一过 32起始扇区为前面的第一个EXTEN逻辑盘 2BIGDOSX 即卩 FAT16 分区扩EXTENDXT展分区的一竺区起始扇区+该分区的相对偏移如何找到一个逻辑分区扩展分区表分区项 1分区项 2前面介绍了硬盘的分区结构BOOTSECTOR首先读取硬盘,下
17、面主要讲逻辑盘找到一个硬盘的 卖取该硬盘的分区表例如下面是一个逻辑分区15G 硬盘的 BOOTSECTOR0X0000X0100X02000 7C FBb0 07 50 1F FC BE 1B 7C3.|.P.P.|0X0300X04033 C0 8E D0 BCBF 1B 06 50 57 B9 E5 01 F3 A4 CB BD BE 07 B1 04.PW.30 38 6E 00 7C 09 75 13 83- C5 10 E2 F4 CD 18 8B F5 8n.|.u.83 C6 10 49 74 19 38 2G 74 F6 A0 B5 07 B4 07 8BF0 AC 3C 00
18、 74 FC BB 0700 B4 0E CD 10 EB F2 88lt.8, t.t.0X0500X0600X0704E 10 E8 46 00 73 2A FE46 10 80 7E 04 0B 74 0B80 7E 04 0C 74 05 A0 B6 07 75 D2 80 46 02 06 8346 08 06 83 56 0A 00 E8- 21 00 73 05 A0 B6 07 EBN.F.S* .F.t.t.u.F.0X080BC 81 3E FE 7D 55 AA 740B 80 7E 10 00 74 C8 A000 00 00 00 00 00 00 00- 00 00
19、 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- 00 00 00 00 00 00 00 000X1B0 00 00 00 00 00 2C 44 63-DE BB C4 76 0080 01 ., Dc.v0X1C0 01 00 06 FE 3F 0C 3F 0-000 00 8E 2F 03 0000 00 . ?.?./.0X1D0 01 0D 0F FE FF FF CD 2-F03 00 D5 6C BC 0100 00 ./.l0X1E0 00 00
20、 00 00 00 00 00 00- 00 00 00 00 00 00 00 00 .0X1F0 00 00 00 00 00 00 00 00- 00 00 00 00 00 00 55 AA .U.一个硬盘的 BOOTSECTOR 数据其中红色部分是主引导纪录 ( MBR)蓝色和浅绿色是分区表数据一共是 4 个分区项和显然后两个分区表项是未用的最后两个字节是合法性标志 。对于第一个分区表项可以知道该分区是一个活动分区 , 分区类型是 0X0C( FAT16) 分区 分区相对扇区起始地址是0 x3f (63)分区大小是 0 x32F8E(208782 个扇区大小大概未 100M 由于这是
21、柱分区该分区的起始扇区号就为0 x3f;对于第二个分区表项可知道该分区的分区类型是OxOF( EXTENDX 分区,起始扇区地址是0X32FCD208845)分区大小是 0X1BC6CD5Q 个扇区。读取扇区 0X32FCD 取出扩展分区得的分区表项00 01 01 0D 07 FE BF 0A 3F 00 00 00 3F 04 7D 0000 00 81 0B 05 FE FF 09 7E 04 7D 00 3F 82 3E 0000 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 0
22、0 00 00 00 00取出第一个分区表项知道该分区是类型是7( NTFS 分区)分区大小是 0X7D043F分区相对扇区号为 0 x3f 可以算出分区的起始扇区是 0X32FCD+0X3F=0X3300C 取出第二个分区表项知道该分区是类型是5( EXTEND 分区 )分区大小是 0X3E823F分区相对扇区号为 0X7D047E 可以算出分区的起始扇区是0X32FCD+0X7D047 匡 0X80344B读取扇区 0X80344B 取出扩展分区得的分区表项00 01 81 0b 0b fe ff 08 3f 00 00 00 00 82 3e 0000 00 c1 0a 05 fe ff
23、 ff bd 86 bb 00 57 a7 00 0100 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 00取出第一个分区表项知道该分区是类型是 0b(fat32 分区)分区大小是 0X3e82000X090B7 07 EB A9 8B FC 1E 5-78B F5 CB BF 05 00 8A 56W.V0XA000 B4 08 CD 13 72 23 8A-C1 24 3F 98 8A DE 8A FCr#.$?.0XB043 F7 E3 8B D1 86
24、D6 B1-06 D2 EE 42 F7 E2 39 56B.9V0X0C00A 77 23 72 05 39 46 08-73 1C B8 01 02 BB 00 7C.w#0X0D08B 4E 02 8B 56 00 CD 13-73 51 4F 74 4E 32 E4 8A.N.V.sQOtN2.0X0E056 00 CD 13 EB E4 8A 56-00 60 BB AA 55 B4 41 CD0X0F013 72 36 81 FB 55 AA 75-30 F6 C1 01 74 2B 61 60.r6.U.u0.t+a0X1006A 00 6A 00 FF 76 0A FF-76
25、08 6A 00 68 00 7C 6Aj.j.v.0X11001 6A 10 B4 42 8B F4 CD-13 61 61 73 0E 4F 74 0B0X12032 E4 8A 56 00 CD 13 EB-D6 61 F9 C3 49 6E 76 61.j.B.aas.Ot.2.V a.Inva0X1306C 69 64 20 70 61 72 74-69 74 69 6F 6E 20 74 61lid partition ta0X14062 6C 65 00 45 72 72 6F- 72 20 6C 6F 61 64 69 6Eble.Error loadin0X15067 20
26、6F 70 65 72 61 74- 69 6E 67 20 73 79 73 74g operating syst0X16065 6D 00 4D 69 73 73 69-6E 67 20 6F 70 65 72 610X17074 69 6E 67 20 73 79 73- 74 65 6D 00 00 00 00 00em.Missing operating system.0X1800X1900X1A03BYTE25BYTE8BYTE0H0BH3HFAT1625BYTEFAT16跳转指令NTFSNTFS分区 BOOTSECTOf 结0DH52 90 1BYTE. 2BYTE2BYTE1B
27、YTF2BYTE2BYTE-2BYTF1BYTE-2BYTE-的根目录区可以:Q1BYT O定 表示分区参数块硬盘分区类型的文本字符名区组成结构-分区参数块和FAT32的分区组成结构比较类似其基本如下:FAT1OTSETC 逻辑盘结构图区是固BOOTSECTO中提供了根目录节为 EA 表示该目录项已被删除BIT0 文档文件创建日文件或目录起始簇号高区 16 位(对 FAT16 无文件更改 E 册26BYT文件或目扩展的其中 FAT16 的根目录0-A 文件名 第一个字录。B是文件属性0X130X140X16-24月如0X1G整个磁.24H FAT表 每1624 假设该卜扇区,隐含0X150X1
28、90X1F 文件大小盘空间是按簇划52BYTE是用来记录整个个字节或 32 个区的保小扇簇的丁FAI叫1A 只表文件 BIT2系统期-表个T文件 B参数块16位。(对目录该项为 0)U 分,在 BOOTSECTO 中记录扩展的分区参数块磁盘空间的使用与分配情况的它的结构0BH0OFS0DH -0BH0EH-0DH10H-0FH-44H而 5FAT32录项占用 2BY牛2BYTE 目录2BYTE谿YTE18 隐藏文件18H煦峻冃 _效为0 00)OBYTE1CH 1CH2AH-20H谿 YTE2BYTE2BYTE4BYTE了每个簇的大小参数2BYTE每簇扇区数每扇区字节数保留扇区数每簇扇区数-F
29、A 扇 区份数数保留扇区数-根目簇扇区数项数FAT 表份数-保留扇区数32m)未用 -乂是不固型大小的在类型-表占用扇区数每道扇区数-磁头数也厶也厶丿、隐藏 I 扇区数扇区数隐藏扇区数-磁理磁盘号 磁盘总扇区数 当隐藏扇区数FAT 表占用扇区数X29链式:使用情况根分区大 TE 为 2G 扩展的分区区参数块,FAT 表为 255 个扇区 H 根目录有 YTE 100个 1BYTE-8BBYTE1BYTE8BYTE4BYTE、字节表示一个簇。例如在 FAT16 分.未 如下目 录丿 V含扇区为 1 个40H起 H42H30H43H口簇号-入口未每簇大小为 64物理磁盘号卷扇区数-0X29系FT标
30、志符台簇号 磁盘序列号分区相对扇区号为 0 x3f 可以算出分区的起始扇区是0X32FCD+0 x7d047e +0X3f=0X80348a取出第二个分区表项知道该分区是类型是5( EXTEND 分区)分区大小是 0X100a757分区相对扇区号为 0Xbb86bd 可以算出分区的起始扇区是0X32FCD+0Xbb86bd=0Xbbe68a读取扇区 0Xbbe68a 取出扩展分区得的分区表项00 01c1 0a 07 fe ff ff 3f 00 00 00 18 a7 00 0100 0000 00 00 00 00 00 0000 00 00 00 0000 0000 0000 00 00
31、 00 00 00 0000 00 00 00 0000 0000 0000 00 00 00 00 00 0000 00 00 00 0000 00取出第一个分区表项知道该分区是类型是7( NTFS 分区)分区大小是 0X100a718分区相对扇区号为 0 x3f 可以算出分区的起始扇区是0X32FCD+0 xbbe68a+3f=0Xbeb6c9逻辑分区简介:FAT16 FAT32 NTI 逻辑分区 BOOTSECTOR逻辑分区的BOOTSECTO的第一个扇区它由以下部分组成:跳转指令;硬盘分区类型的文本字符名;分区参数块;扩展的分区参数块;启动指令块;合法性标 志 55AA。对于不同的分区
32、类型,这些块的内容与意义是不同的。下 面 是F A TF A T 3 2N T F 各 分 区 的B O O T S E C T O R 的 内 容 语 义 的 略 图0H3BYTE跳转指令八 lFAT16 分区 BOOTSECTOEB 3C 90R 结构图曰nilOJXWTLIV /I A CC Q G C3H0HC 口 LI8BYIE3BYTEomvrrr硬盘丿J区类型的文本字符名跳转指pAT32分区BOOTSECTOR吉构IVISDOS5.0图EB 58 90HQLIODX/TC)4=1 NZ0BH3H25BYIE8BYTE分区参数块硬盘分区类型的文本字符名0BH2BYIE每扇区字节数M
33、SWIN4 1该簇在 FAT 表中的位置为:A=121*2=241;B=A%512;IF( B!=0) ;B=1;C=63+1+A/512+B;读取扇区 C 到缓冲区取第 A%512/2 个字即为该扇区的下一个扇区,如果为 0 表示该扇区未用,为 FF FF表示该扇区为最后一个扇区。其他的表示有下一个扇区。该簇的物理磁盘扇区号是63+1+255*2+0X100*20/512+( 121-2)*64读于一个 FAT32 分区,要找到 121 簇的使用情况假设该分区大小为 4G,起始扇区为 200048, FAT 表为 3997 个扇区,每簇大小为 8 个扇区,根目录起始簇 号为 2,隐含扇区为
34、32 个。该簇在 FAT 表中的位置为:A=121*4=241;B=A%512;IF( B!=0) ;B=1;C=20048+32+A/512+B;读取扇区 C 到缓冲区取第 A%512/4 个双字即为该扇区的下一个扇区,如果为 0 表示该扇区未用,为 FFFF FF Ff 表示该扇区为最后一个扇区。其他的表示有下一个扇区 。该簇的物理磁盘扇区号是20048+32+3997*2+( 121- 2) *8经过上面的介绍我们就比较亲楚整个FAT16 FAT32区的寻址方式例如读取文件 C:WINDOWSSYSTE M.INI首先找到逻辑盘 C 的起始扇区,然后读出他的根目录区,在根目录区中找到 W
35、INDOWS 子目录项,找到 目录项中该子目录的起始簇,在 FAT 表中找到以该簇为起始簇的簇链,读出这些簇的所在的扇区内容然后找到文件名为 SYTEM.INI 的目录项,取得它的起始簇号,读出该簇为起始簇的簇链的所有扇区内容即可。NTFS 逻辑分区组成结构NTFS 分区的结构比 FAT16 和 FAT32 复杂。整个 NTFS 分区也是和 FAT 分区一样以簇为基本的的存储结 构,但NTFS 分区把整个分区的全部扇区都作为簇来划分,而 FAT 分区的 BOOTSECTORFAT 表,根目录(FAT32 除外),作为另外的部分它的起始簇是在这些扇区之后的NTFS 分区的结构大概如下:BOOTS
36、ECTORS 录了 MFT 表的起女 扇区+簇号*每簇扇区数)。MFT表是由很多个 MFT记录构成 都当成文件来处理包括它自己本身。下面是 MFT 记录的头结构说明:起始0468长度4228意义MFT修 复修复LSN记录标志FILE偏移间(Offset to fixup usually 2C )校验数据长度,包含第一个字节1021221421621841C4208282序列号链节个数(有多少个文件名链节在这个实际文件上)第一个属性的起始于该MFT 记录得哪一个字节BIT0 表示该记录中有属性值存于记录外,BIT1 表示该记录中存有文件目录该记录的有效字节数(记录头+所有属性长度和)该记录的长度
37、高 2 字节主 MFT 记录的记录号,低 2 字节 0所有属性加一2A6+修复数据依赖于记录长度属性内容相对于属性头起始地址的偏移属性值是否压缩 0 表示没压缩,1 表示压缩 属性标志(通常为 0)属性头的第一部分内容(前 16 字节)104属性数据长度142r 属性数据起始字节(相对于属性头起始地址)162属性在 MFT 属性中是第几个属性(从 0 开始)属性内容在 MFT 表中的属性头第二部分内容1010H属性内容所在簇计算的起始簇202属性数据起始字节(相对于属性头起始地址)222属性内容压缩方法(我不太清楚这个字的意义)288为属性数据的分配空间大小308属性数据的实际大小388初始化
38、数据长度(对于压缩的数据)408压缩前的长度(对于压缩数据)48不定长vcn lcn runlength 数据所在族的位置(具体解释在后面)属性内容不在 MFT 表中的属性的第二部分内容NTFS 的标准的属性包括以下几种Stan dard in formatio nAttribute listFile NameVolume VersionSecurity descriptorVolume n ameVolume in formatio nDataIn dex RootIn dex Allocati onBitMapSymli nkD0H HPFS 扩展属性信息属性 HPFS exte nded
39、 attributes in formatio nE0H HPFST展属性 HPFS extended attributes对于 NTFS 标准属性,并不完全了解。下面就我所了解的部分进行介绍:偏移(16 进制)长度(16 进制)内容的意义MFT 的记录由记录头和属性列 是属性内容在 MFT 表中,一种且构是相同的第二部分结构不同:MFT 记录结构示意图列表组.性彳彳母一个属性:都有属性的内容在磁盘分配的簇中个结构相同的属性头,属性头分两种,一种,属性头分两部分对于所有属性第一部分结偏移(16 进制)0长度(16 进希 D属性 2_内容的意义属性 3属性类型属性总长度属性数据是否存在 MFT
40、表中,0 表示是,1 表示存在磁盘分配的 空间属性名长度属性头后紧跟的是属性内容10H 标准信息属性20H 属性列表属性30H 文件名属性40H 卷表版本属性50H 安全性描述属性60H 卷表名属性70H 卷表信息属性80H 数据内容属性90H 索引根目录属性A0H 索引分配表属性B0H 镜像属性C0H 链节属性08文件创建时间88r 文件内容最后一次修改时间108文件别的属性最后一次修改时间188文件最后一次修改时间204文件存取控制 800 文件内容是压缩的,400 文件是一个链接 20 文档标志4 系统文件标志,2 隐含文件标志,1 系统文件 标志24C未用通常为 0标准信息属性内容定义
41、偏移(16 进制)长度(16 进制)内容的意义04属性名42属性长度61属性字符名长度88属性簇号计算起始簇号108包含该属性的 MFT 记录号388文件存取控制 381A长度为 BIT6*2属性名的 UniCode属性列表属性内容定义偏移(16 进制)长度(16 进制)内容的意义08:该文件的根目录的 MFT 记录号820文件的时间信息(与基本信息中的相冋)288属性分配空间308属性大小388文件属性 38 20 文档标志 4 系统文件标志,2 隐含文件标志,1系统文件标志 39 08 压缩 3b 10 目录401文件名长度411文件名类型 0 posix 1 unicode 2 dos
42、3both dos and unicode42长度为 BIT40*2文件名的 UniCode文件名属性内容定义偏移(16 进制)长度(16 进制)内容的意义04总是 30h44总是 184索引记录大小C4:每个簇可以记录的索引记录个数104总是 10144整个属性大小+10h1c21 如果有 index allocation 属性存在1e2标志位(不知道意义)索引根目录属性定义索引分配表属性该属性分配索引空间以存放目录如果一个属性内容无法在MFT 表中放下,MFT 表就会申请磁盘空间,存放在申请的空间中,属性列表定义中第 48 字节开始说明了该属性所在的磁盘簇号。下面是该字段的意义的英文说明以
43、及简单的翻译:Non reside nt attributes are stored in in tervals of clusters called runs. Each run is represe nted by its start ingcluster and its len gth. The start ing cluster of a run is coded as an offset to the start ing cluster of the previous run.Length and starting cluster are variable size fields.
44、The first byte of a run indicates the size of both. The size of the offsetis stored in the high nibble , and the size of the length in the low nibble.For compressed or sparse runs, the offset is 0 , and the size of the offset is also 0. Each compression unit startsat a multiple of 16 clusters. If co
45、mpression is possible , at the VCN of a unit will be one or more data runs followed by anempty run. If there are data runs for more than 16 clusters , the unit was not compressible .If there is no data run at all( only a large empty run ), the un it con sists of all zeroes.Example: 21 20 ED 5 22 48
46、7 48 22 21 28 C8 DBFirst run: 20 clusters starting from 5ED ( 5ED to 60D)2nd run: 748 clusters starting from 5ED+2248 (2835 to 2F7D)3rd run: 28 clusters starting from 2835+DBC8 (3FD to 425)Note that the offset is in terpreted as sig ned value不存储于 MFT 表中的属性值被存储于分散的簇中称为RUN。每个 RUNS 由它的起始簇和长度构成。起始簇号和长度存
47、储于变长的域中,一个 RUN 的第一个字节表明了起始簇号和簇的个数分别占用的字节数,跟着簇的个数数据,接着是起始簇号的数据。入果没有 RUN 存在着 RUN 的起始字节为 0, RUNS 是一个 累加和,第二个 RUN 的起始簇号需要加上第一个RUN 的起始簇号,以此类推。NTFS 分区的目录结构NTFS 分区的目录结构由文件名索引组成,它由 索引根目录属性(In dex Root)索引分配表属性(In dexAllocation )索引根目录属性表明该MFT 表记录是一个目录,索引分配表属性给该目录分配磁盘空间以便存储索引记录(Index buffer)。索引记录由索引记录头和多个索引记录项
48、主组成,一个索引记录大小为 2k。其结构如下:)索引内容头意义偏移(16 进制)长度(16 进制04索引索引项录标志总、是 INDX4(2索引记修复数据存储位-自修复数据长度置 通常是 28H62108索弓 VC 录值 n182头结构长度(第一个索引记录项入口字节地址 -18)1C4整个记录长度204;整个记录存储数据的长度244:1 表示没有索引记录项28A自修复数据索引记录头结构定义索引记录项是在这个目录下的文件或目录的索引结构其定义如下偏移(16 进制)长度(16 进制)内容的意义08:该文件的 MFT 记录号82记录项长度A20 x42+0 x2* (可能是一个校验位)C1:本记录项有
49、没有子项(1 表示有,为了支持 dos 文件名)108父目录的 MFT 表记录号1820文件的时间信息388文件数据属性分配磁盘空间大小501文件名长度511文件名类型(详见文件名属性)52长度为 BIT8*2文件名(UNICODE索引记录项定义NFTS 分区重要文件:MF T 中 存 储 了 所 有 文 件 的 基 本 信 息,MF T 表 的 前 16 个 记 录 是 保 留 给 系 统 使 用 的,这 些 文 件 是 :MFT 记录 0 $MFT 文件即MFT表本身的信息MFT 表的第一个记录内容的备份 缓冲区文件保证系统突然死机后 , 重起时用 磁盘卷表文件属性定义文件 , 包含各种属
50、性的定义 根目录文件 ,分区目录结构的入口 磁盘分配镜像文件 , 每个位表示一个簇是否被分配 指向磁盘 bootsetor 开始的 16 个扇区 磁盘坏簇的镜像文件 不太清楚该文件用途 大写字母对应的unicode 码最后介绍一下 NTFS 文件系统中一个文件例如:要读取文件F:WINNTSYSTEM32ANSI .SYS具体步骤如下:1 读取分区表信息 , 找到磁盘 F 的起始扇区 。2 读取 F 盘的第一个扇区(分区的 BOOTSETOR 取得分区的每簇大小,MFT 表起始簇号等信息3读取 MFT 表的第五个记录(根目录)找到目录索引所在簇号。4. 读取索引,查找 WINNT 目录所在的
51、MFT 记录号5. 读取 WINNT 目录的 MFT 记录,找到目录索引所在簇号 。6 .读取索引,查找 SYTEM32 目录所在 MFT 记录号7读取 SYTEM32 目录的 MFT 记录,找到目录索引所在簇号。8读取索引,查找 ANSI . SY 新在 MFT 记录号9. 读取 ANSI .SYS件的 MFT 记录,找到它的 DATA 属性。10.根据 DATA 属性中指定的文件数据存放位置读取出ANSI .SYS件的数据。先说说目前广泛使用的磁盘分区表方案。传统的分区方案(称为 MBR 分区方案)是将分区信息保存到磁盘的第一个扇区(MBR 扇区)中的 64 个字节中,每个分区项占用 16
52、 个字节,这 16 个字节中存有活动状态 标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4 个字节 ) 、分区总扇区数目 (4 个字节)等内容。由于 MBR 扇区只有 64 个字节用于分区表,所以只能记录 4 个分区的信息。这就是硬盘主 分区数目不能超过 4 个的原因。后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分 区项仍用 16 个字节存储。MBR 分区方案不是用得好好的吗?为什么要提出新的方案呢?那就让我们看看MBR 分区方案有什么问题。前面已提到了主分区数目不能超过 4 个的限制,这是其一,很多时候,4 个主分区并不能满足需要。 另外最关键的是 MBR
53、分区方案无法支持超过 2TB 容量的磁盘。因为这一方案用 4 个字节存储分区的总扇 区数,最大能表示 2 的 32 次方的扇区个数,按每扇区 512 字节计算,每个分区最大不能超过 2TB。磁盘容量 超过 2TB 以后,分区的起始位置也就无法表示了。在硬盘容量突飞猛进的今天,2TB 的限制将很快被突破。由此可见,MBR 分区方案已经无法满足需要了。下面介绍GUID 分区表方案。GUID 分区表(简称 GPT。使用 GUID 分区表的磁盘称为 GPT 磁盘)是源自 EFI 标准的一种较新的磁盘分 区表结构的标准。与目前普遍使用的主引导记录(MBR)分区方案相比,GPT 提供了更加灵活的磁盘分区机
54、 制。具有如下优点:1、支持 2TB 以上的大硬盘。2、 每个磁盘的分区个数几乎没有限制。为什么说“几乎 ”呢?是因为 Windows 系统最多只允许划分 128个分区。不过也完全够用了。3、 分区大小几乎没有限制。又是一个 “几乎”。因为它用 64 位的整数表示扇区号。夸张一点说,一个 64 位整数能代表的分区大小已经是个 “天文数字 ”了,若干年内你都无法见到这样大小的硬盘,更不用说分 区了。4、 分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表。其中一份被破坏后,可以通过另一份恢复。MFT 记录 1 $MFTMIRR 文件MFT 记录 2 $LogFile 文件MFT 记录 3 $Volume 文件MFT 记录 4 $Attrdef 文件MFT 记录 5 . 文件MFT 记录 6 $BitMap 文件MFT 记录 7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东聊城高三一模数学试卷试题答案详解
- 协议出让土地合同范例
- 业务服务咨询合同范例
- 专题03 天气与气候-2025年中考地理一轮复习知识清单(背诵版)
- 同城买猫合同范例
- sd卡采购合同范例
- 班主任如何关注学生的情绪变化计划
- 以美术为载体的主题教育活动计划
- 企业安全成本的控制与管理计划
- 如何选择合适的投资渠道计划
- 1概论-3(建筑构造)ppt课件
- 《农村合作金融机构非信贷资产风险分类指引》(银监发[2007]29号)
- 电缆敷设施工方案及安全措施范文
- 卡通手绘可爱小兔子PPT模板
- 小儿体格检查(课堂PPT)
- ppt模板:信保专用中国出口信用保险公司课件
- (高清版)建筑塑料复合模板工程技术规程JGJ_T 352-2014
- 人教版八年级数学下册全册教案(完整版)教学设计
- 电机零部件中英文对照表
- 设备安装工程监理规划
- 注册安全工程师(延续注册)履职情况说明
评论
0/150
提交评论