一、 硬盘数据结构
C盘 D 盘 E盘 ….. …..
MBR |
DBR |
EBR |
DBR |
EBR |
DBR |
… |
…. |
… |
…. |
二、主引导扇区
(一)、主引导扇区组成:由440个字节的MBR引导程序、4个字节的磁盘签名、2个字节的保留扇区、64个字节的分区结构信息、2个字节结束标志55 AA组成。
1、 MBR中的磁盘分区表组成:1个字节的引导指示符、3个字节的开始磁头、开始扇区、开始柱面、1个字节的系统标识(分区类型)、3个字节的结束磁头、结束扇区、结束柱面、4个字节的该分区的起始位置、4个字节的该分区扇区的总数。
(1)、系统激活标志为80H,非激活为00H。
(2)、微软常见的文件系统即分区类型标识
Ⅰ、主分区中FAT12为01H,FAT16为06H表示大于32M的分区而04H表示小于32M的分区,FAT32为0BH表示小于8.4G的分区而0CH却表示大于8.4G的分区,NTFS为07H;
Ⅱ、扩展分区大于8.4G时用0FH而小于8.4G时用05H
三、操作系统引导扇区(FAT32的DBR备份为第一个DBR向下数6个扇数NTFS的DBR备份为该分区扇区总数减去1.即该分区最后一个扇区。)
(一)、操作系统引导扇区组成:跳转指令,厂商标志和操作系统版本号,主BPB参数表,扩展BPB参数表, DOS引导程序,结束标志几部分组成。
1、FAT16分区中的DBR扇区由六部分组成:3个字节的跳转指令(EB 3C 90)、8个字节的厂商标志及OS版本号、25字节的主BPB参数表、26个节的扩展BPB参数表、448个字节的DOS引导代码、2个字节的有效结束标志。
(1)、FAT16分区的DBR中25个字节的主BPB参数表(主BPB参数是从DBR的12字节开始的)的含义详解:
12至13字节为每扇区字节数,
14字节为每簇的扇区数,
15至16字节为dos保留扇区(第一个FAT表开始之前的扇区数即DBR到FAT的距离。),
17字节为FAT表个数,
18字节至19字节为根目录项数(根目录最多存放512个文件),
20字节至21字节为扇区总数(小于32M的分区在此存放)
22字节为媒体描述符(媒体描述符要用于MS-DOS FAT16磁盘),
23字节至24字节为每个FAT扇区数一般为250(只被FAT12/FAT16),
25字节至26字节为每磁道扇区数63,
27字节至28字节为磁头数(在一张1.44MB 3.5英寸的软盘上,本字段的值为 2),
29字节至32字节为隐藏扇区数( 该分区上引导扇区之前的扇区数。在没有分区的媒体上它必须总是为0。),
33字节至36字节为该分区的总扇区数(大于32M的分区在此存放),
FAT16分区的DBR中26个字节的扩展BPB参数表(扩展BPB参数是从DBR的37字节开始的)的含义详解:
37字节为BIOS设备一般是80
38字节为保留
39字节为扩展引导标志
40字节至43字节为卷序列号,随机产生
44字节至最54字节为卷标
55字节至62字节为文件系统格式的ASCⅡ码。
2、FAT32分区中的DBR扇区由六部分组成:3个字节的跳转指令(EB 58 90)、8个字节的厂商标志及OS版本号、53字节的BPB参数表、26个节的扩展BPB参数表、420个字节的DOS引导代码、2个字节的有效结束标志。
(1)、FAT32分区的DBR中53个字节的主BPB参数表(主BPB参数是从DBR的12字节开始的)的含义详解:
12至13字节为每扇区字节数一般为512
14字节为簇大小,即每个簇占用的扇区数,
15至16字节为dos保留扇区(即DBR到FAT表的距离),
17字节为FAT表的个数,
18字节至19字节为根目录项数一般为00 00(不用了。)
20字节至21字节为小于此32M的分区扇区数一般为 00 00(不用了。)
22字节为媒体描述符一般硬盘为F8
23字节至24字节为每FAT扇区数一般为00 00(不用了)
25字节至26字节为每磁道扇区数,
27字节至28字节为磁头数一般为255,
29字节至32字节为隐含扇区数(从零到DBR的扇区数。),
33字节至36字节为该分区的总扇区数,即分区的大小
37字节至40字节为每个FAT扇区数
41字节至42字节为:扩展标志(只被FAT32使用)该两个字节结构中各位的值为:
位0-3:活动 FAT数(从0开始计数,而不是1).
只有在不使用镜像时才有效
位4-6:保留
位7:0值意味着在运行时FAT被映射到所有的FAT
1值表示只有一个FAT是活动的
位8-15:保留
43字节至44字节为文件系统版本(只供FAT32使用,高字节是主要的修订号,而低字节是次要的修订号。本字段支持将来对该FAT32媒体类型进行扩展。如果本字段非零,以前的Windows版本将不支持这样的分区),
45字节至48字节为引导目录的第一簇,即根目录所在的位置。
49字节至最50字节为文件系统信息扇区号(只供FAT32使用, FAT32分区的保留区中的文件系统信息(File System Information, FSINFO)结构的扇区号。其值一般为1。在备份引导扇区(Backup Boot Sector)中保留了该FSINFO结构的一个副本,但是这个副本不保持更新)
51字节至52字节为DBR的备份扇区(是从DBR所在的位置63向下数的扇区数即为备份扇区)
53字节至65字节为保留
FAT32分区的DBR中26个字节的扩展BPB参数表(扩展BPB参数表是从DBR的66字节开始的)的含义详解:
66字节为物理驱动器号( 与BIOS物理驱动器号有关。软盘驱动器被标识为0x00,物理硬盘被标识为0x80,而与物理磁盘驱动器无关。一般地,在发出一个INT13h BIOS调用之前设置该值,具体指定所访问的设备。只有当该设备是一个引导设备时,这个值才有意义),
67字节为保留 FAT32分区总是将本字段的值设置为0,
68字节为扩展引导标签( 本字段必须要有能被Windows 2000所识别的值0x28或0x29)
69字节至72字节为分区序号( 在格式化磁盘时所产生的一个随机序号,它有助于区分磁盘),
73字节至83字节为卷标(本字段只能使用一次,它被用来保存卷标号。现在,卷标被作为一个特殊文件保存在根目录中),
84字节至91字节为系统ID(System ID) FAT32文件系统中一般取为"FAT32",
3、NTFS分区中的DBR扇区由六部分组成:3个字节跳转指令(EB 52 90)、8个字节的文件系统标识ASCⅡ码形式、73个字节的BPB参数表、426个字节的DOS引导代码、2个字节的有效结束标志。(如果NTFS分区中的DBR损坏后用备份DBR恢复时要看紧挨DBR后NTLDR扇区在没有,否则不起作用。)
(1)、Ⅲ、NTFS分区的DBR中73个字节的BPB参数表(主BPB参数是从DBR的12字节开始的)的含义详解:
12至13字节为每扇区字节数,
14字节为每簇的扇区数,
15至16字节为dos保留扇区为0
17字节至19字节常常为0
20字节至21字节为未使用
22字节为介质描述符F8
23字节至24字节为未使用
25字节至26字节为每磁道的扇区数
27字节至28字节为磁头数
29字节至32字节为隐含扇区数
33字节至36字节未使用
37字节至40字节常为80 00 80 00
41字节至48字节为该分区的总扇区数
49字节至56字节为主文件表的起始簇号($MFT存储的起始位置)
57字节至64字节为备份的主文件表起始簇号($MFTMirr存储的起始位置)
65字节至68字节每个MFT的簇数
69字节至72字节为每个索引的簇数
73字节至80字节为分区的逻辑序列号
81字节84字节为总和检验码
四、NTFS文件存储原理
偏移 |
长度(字节) |
含义 |
00-03H |
4 |
FILE,文件记录的标志 |
04-05H |
2 |
更新的序列号的偏移 |
06-07H |
2 |
更新序列号的大小与数组 |
08-0FH |
8 |
日志文件的序列号 |
10-11H |
2 |
序列号 |
12-13H |
2 |
连接数,有多少个目录指向该文件 |
14-15H |
2 |
第一个属性的起始位置 2003、xp为38 2000及NT,为30 |
16-17H |
2 |
标志(flags)00,表示文件已经删除,01表示正在使用,02表示这个文件记录为文件夹 |
18-1BH |
4 |
记录头和属性的总长度,也就是文件记录的总长度 408 |
1C-1FH |
4 |
分配给记录的长度 |
20-27H |
8 |
基本文件记录的文件索引号 |
28-29H |
2 |
下一个属性的ID |
30-31H |
2 |
边界 |
* 2C-2FH |
4 |
文件记录的编号 |
NTFS分区中数据的结构:($MFT存储的起始位置30H至37H)
BOOT(DBR\NTLDR) |
$MFT |
数据 |
$MFT中前16个元文件的备份 |
数据 |
DBR备份 |
$MFT存储的起始位置30H至37H 8个字节,$MFTMirr存储的起始位置38H至3FH.
$MFT_$MFTmirr_日记_卷标。
六、MS的不同文件系统分区大小与簇及每簇的扇区数关联性
文件系统是操作系统与驱动器之间的接口,扇区是磁盘最小的物理存储单元。微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”。( 簇(CLUST)的本意就是“一群”、“一组”,即一组扇区(一个磁道可以分割成若干个大小相等的圆弧,叫扇区)的意思。因为扇区的单位太小,因此把它捆在一起,组成一个更大的单位更方便进行灵活管理。簇的大小通常是可以变化的,是由操作系统在所谓“(高级)格式化”时规定的,因此管理也更加灵活。)每个簇可以包括2、4、8、16、32或64个扇区等。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;如果文件实际大小小于一簇,它也要占一簇的空间。如果文件实际大小大于一簇,根据逻辑推算,那么该文件就要占两个簇的空间。
1、FAT16分区大小与对应簇的关系表:
分区大小 |
默认每簇的扇区数(SPC) |
默认簇大小(C) |
<32M |
1 SPC |
512B |
>=32M且<64M |
2 SPC |
1K |
>=64M且<128M |
4 SPC |
2K |
>=128M且<256M |
8 SPC |
4K |
>=256M且<512M |
16 SPC |
8K |
>=512M且<1G |
32 SPC |
16K |
>=1G且<2G |
64 SPC |
32K |
>=2G且<4G |
128 SPC |
64K |
>=4G且<8G(仅用NT4.0) |
256 SPC |
128K |
>=8G且<16G(仅用于NT4.0) |
512 SPC |
256K |
2、 FAT32分区大小与对应簇的关系表:
分区大小 |
默认每簇的扇区数(SPC) |
默认簇大小(C) |
<8G |
8 EYSPC |
4K |
>=8G且<16G |
16 SPC |
8K |
>=16G且<32G |
32 SPC |
16K |
>=32G |
64 SPC |
32K |
3、 NTFS分区大小与对应簇的关系表:
分区大小 |
默认每簇的扇区数(SPC) |
默认簇大小(C) |
<512M |
1 SPC |
512B |
>=512M且<1G |
2 SPC |
1K |
>=1G且<2G |
4 SPC |
2K |
>=2G且<4G |
8 SPC |
4K |
>=4G且<8G |
16 SPC |
8K |
>=8G且<16G |
32 SPC |
16K |
>=16G且<32G |
64 SPC |
32K |
>=32G |
128 SPC |
64K |
发表评论