2022年硬盘分区表知识详解硬盘MBR .pdf
硬盘分区表知识 详解硬盘 MBR- 硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出相应的规则。这就是分区概念。分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR )和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过以后的高级格式化,即Format命令来实现。面、磁道和扇区硬盘分区后,将会被划分为面( Side )、磁道( Track )和扇区( Sector )。需要注意的是,这些只是个虚拟的概念,并不是真正在硬盘上划轨道。先从面说起,硬盘一般是由一片或几片圆形薄膜叠加而成。我们所说,每个圆形薄膜都有两个 “ 面” ,这两个面都是用来存储数据的。按照面的多少,依次称为0 面、 1 面、 2面由于每个面都专有一个读写磁头,也常用0 头(head)、1 头称之。按照硬盘容量和规格的不同,硬盘面数( 或头数 ) 也不一定相同,少的只有2 面,多的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(Cylinder)。上面我们提到了磁道的概念。那么究竟何为磁道呢?由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样的圆周为一个磁道。如果读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。根据硬盘规格的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB 的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区。一个扇区一般存放512 字节的数据。扇区也需要编号,同一磁道中的扇区,分别称为1 扇区, 2扇区 计算机对硬盘的读写,处于效率的考虑,是以扇区为基本单位的。即使计算机只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512 字节全部读入内存,再使用所需的那个字节。不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 能在首尾相连的一圈扇区中找出所需要的某一扇区呢?原来,每个扇区并不仅仅由512 个字节组成的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。计算机就凭借着这些标志来识别扇区。硬盘的数据结构在上文中,我们谈了数据在硬盘中的存储的一般原理。为了能更深入地了解硬盘,我们还必须对硬盘的数据结构有个简单的了解。硬盘上的数据按照其不同的特点和作用大致可分为5 部分: MBR 区、 DBR 区、 FAT 区、 DIR 区和 DATA 区。我们来分别介绍一下:1 、MBR区 MBR(Main Boot Record 主引导记录区)位于整个硬盘的0 磁道 0 柱面 1 扇区。不过,在总共512 字节的主引导扇区中,MBR 只占用了其中的446 个字节,另外的64个字节交给了DPT (Disk Partition Table硬盘分区表),最后两个字节“55 ,AA ”是分区的结束标志。这个整体构成了硬盘的主引导扇区。主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。MBR 是由分区程序(如Fdisk exe )所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。下面,我们以一个实例让大家更直观地来了解主引导记录:例: 80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00在这里我们可以看到,最前面的 “80” 是一个分区的激活标志,表示系统可引导;“01 01 00 ” 表示分区开始的磁头号为 01 ,开始的扇区号为01 ,开始的柱面号为00 ;“0B” 表示分区的系统类型是FAT32 ,其他比较常用的有04 (FAT16 )、 07 (NTFS ); “ FE BF FC”表示分区结束的磁头号为 254 ,分区结束的扇区号为63 、分区结束的柱面号为764 ;“3F 00 00 00 ”表示首扇区的相对扇区号为63 ; “7E 86 BB 00 ”表示总扇区数为12289622。2 、DBR区 DBR (Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0 磁道1 柱面 1 扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为 BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以D名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - OS 为例,即是Io sys 和 Msdos sys )。如果确定存在,就把它读入内存,并把控制权 交给该文件。 BPB 参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT 个数,分配单元的大小等重要参数。DBR 是由高级格式化程序(即 Formatcom 等程序)所产生的。3 、FAT 区在 DBR 之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。在解释文件分配表的概念之前,我们先来谈谈簇(Cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。一般情况下,软盘每簇是1 个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16 、 32 、64 同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT ),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT 对于文件管理的重要性,所以 FAT 有一个备份,即在原FAT 的后面再建一个同样的FAT 。初形成的FAT 中所有项都标明为 “ 未占用 ” ,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为 “ 坏簇 ” ,以后存文件时就不会再使用这个簇了。FAT 的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT 的格式有多种,最为常见的是FAT16和 FAT32 。4 、DIR区 DIR (Directory)是根目录区,紧接着第二FAT 表(即备份的FAT 表)之后,记录着根目录下每个文件(目录 ) 的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR 中的起始单元,结合FAT 表就可以知道文件在硬盘中的具体位置和大小了。5 、数据 (DATA)区数据区是真正意义上的数据存储的地方,位于DIR 区之后,占据硬盘上的大部分数据空间。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 一、硬盘的物理结构:硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成( 图 1) ,其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“ 写数据 ” 电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。因此只要能将盘片表面处理得更平滑、磁头设计得更精密以及尽量提高盘片旋转速度,就能造出容量更大、读写数据速度更快的硬盘。这是因为盘片表面处理越平、转速越快就能越使磁头离盘片表面越近,提高读、写灵敏度和速度;磁头设计越小越精密就能使磁头在盘片上占用空间越小,使磁头在一张盘片上建立更多的磁道以存储更多的数据。二、硬盘的逻辑结构:硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N 个盘片。就有2N 个面,对应2N 个磁头 (Heads),从 0、1、2 开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R 的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinde名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - rs) ,从外至里编号为0、 1、2每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3形成 Cylinders Heads Sector个扇区。这三个参数即是硬盘的物理参数。我们下面的很多实践需要深刻理解这三个参数的意义。硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图 1) ,其中盘片和磁头密封在无尘的金属壳中。三、磁盘引导原理:3.1 MBR(master boot record)扇区:计算机在按下power键以后,开始执行主板bios 程序。进行完一系列检测和配置以后。开始按bios 中设定的系统引导顺序引导系统。假定现在是硬盘。Bios 执行完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行存储在哪里的程序呢。其实,称为mbr 的一段代码起着举足轻重的作用。MBR(master boot record),即主引导记录,有时也称主引导扇区。位于整个硬盘的0 柱面 0 磁头 1 扇区 ( 可以看作是硬盘的第一个扇区),bios 在执行自己固有的程序以后就会jump到 mbr中的第一条指令。将系统的控制权交由mbr来执行。在总共512byte的主引导记录中,MBR 的引导程序占了其中的前446 个字节 (偏移 0H 偏移 1BDH) ,随后的 64 个字节 (偏移 1BEH 偏移 1FDH) 为 DPT(Disk PartitionTable,硬盘分区表 ) ,最后的两个字节“ 55 AA ”(偏移 1FEH 偏移 1FFH) 是分区有效结束标志。MBR 不随操作系统的不同而不同,意即不同的操作系统可能会存在相同的MBR ,即使不同, MBR 也不会夹带操作系统的性质。具有公共引导的特性。我们来分析一段mbr 。下面是用winhex查看的一块希捷120GB硬盘的 mbr 。MBR扇区代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 你的硬盘的MBR 引导代码可能并非这样。不过即使不同,所执行的功能大体是一样的。这里找 wowocock关于磁盘mbr的反编译,已加了详细的注释,感兴趣可以细细研究一下。我们看 DPT 部分。操作系统为了便于用户对磁盘的管理。加入了磁盘分区的概念。即将一块磁盘逻辑划分为几块。磁盘分区数目的多少只受限于CZ 的英文字母的数目,在上图 DPT 共 64 个字节中如何表示多个分区的属性呢?microsoft通过链接的方法解决了这个问题。在DPT 共 64 个字节中,以16 个字节为分区表项单位描述一个分区的属性。也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。第二个分区表项描述名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 除基本分区外的其余空间,一般而言,就是我们所说的扩展分区。这部分的大体说明见表1。 DPT代码分析注:上表中的超过1 字节的数据都以实际数据显示,就是按高位到地位的方式显示。存储时是按低位到高位存储的。两者表现不同,请仔细看清楚。以后出现的表,图均同。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 也可以在 winhex中看到这些参数的意义:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 说明:每个分区表项占用16 个字节,假定偏移地址从0 开始。如图3 的分区表项3。分区表项4 同分区表项3。1、0H 偏移为活动分区是否标志,只能选00H 和 80H 。80H 为活动, 00H 为非活动。其余值对microsoft而言为非法值。2、重新说明一下( 这个非常重要 ):大于 1 个字节的数被以低字节在前的存储格式格式(little endian format)或称反字节顺序保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号中。例如,相对扇区数字段的值0 x3F000000的低字节在前表示为0 x0000003F。这个低字节在前的格式数的十进制数为63。3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候我们分区是输入分区的大小为7000M ,分出来却是6997M ,就是这个原因。 偏移 2H 和偏移 6H 的扇区和柱面参数中,扇区占 6 位(bit) ,柱面占10 位(bit) ,以偏移 6H 为例,其低6 位用作扇区数的二进制表示。其高两位做柱面数10 位中的高两位,偏移7H 组成的 8 位做柱面数10 位中的低 8 位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0 开始编号 ,扇区从 1 开始编号 ,所以最多只能表示1024 个柱面 63 个扇区 256 个磁头 512byte=8455716864byte。即通常的8.4GB( 实际上应该是7.8GB左右 ) 限制。实际上磁头数通常只用到255 个(由汇编语言的寻址寄存器决定 ), 即使把这3 个字节按线性寻址,依然力不从心。在后来的操作系统中,超过8.4GB 的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH偏移 FH 共 4 个字节 32 位线性扇区地址来表示分区所占用的扇区总数。可知通过4 个字节可以表示232 个扇区,即2TB=2048GB,目前对于大多数计算机而言,这已经是个天文数字了。在未超过 8.4GB的分区上, C/H/S的表示方法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不协调,也以线性寻址为准。( 可能在某些系统中会提示出错) 。超过 8.4GB的分区结束C/H/S一般填充为FEH FFH FFH。即 C/H/S所能表示的最大值。有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面的原则依然没变。本分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。 (保留扇区中的第一个扇区就是存放分区表的MBR 或虚拟 MBR 的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。如果是第一个分区,保留扇区是本分区前的所有扇区。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 附:分区表类型标志如图4 3.2 扩展分区扩展分区中的每个逻辑驱动器都存在一个类似于MBR 的扩展引导记录( Extended Boot Record, EBR),也有人称之为虚拟mbr或扩展 mbr ,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区32 或63 。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。第二项指向下一个逻辑驱动器的EBR 。如果不存在进一步的逻辑驱动器,第二项就不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR 。扩展分区表的第三项和第四项永远都不会被使用。通过一幅4 分区的磁盘结构图可以看到磁盘的大致组织形式。如图5 关于扩展分区,如图6 所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的差异。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 除了扩展分区上最后一个逻辑驱动器外,表2 中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的:第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的EBR 。最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个项到第四个项被使用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位移的字节数。总扇区数字段中的数是指组成该逻辑驱动器的扇区数目。总扇区数字段的值等于从扩展分区表项所定义的引导扇区到逻辑驱动器末尾的扇区数。有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?我们前面说到,分区是以1 柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。照道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,为什么会有不够一个柱面的空间呢。在我的理解看来,本来现在的磁盘为了更大的利用空间,一般在物理上并不是按照外围的扇区大于里圈的扇区这种管理方式,只是为了与操作系统兼容而抽象出来CHS 。可能其实际空间容量不一定正好为整数个柱面的容量。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -