MBR分区是目前微型计算机中使用比较多的一种分区形式。如果按分区的作用来划分,可以将分区分为主逻辑盘分区、扩展磁盘分区、逻辑盘分区、逻辑盘链接项(注:有的资料又称为子扩展分区)和隐藏分区。描述分区对应的数值称为分区表。
(1)主逻辑盘分区(简称主分区)表:存储在硬盘0磁头0柱面1扇区(即整个硬盘逻辑0号扇区),除扩展分区以外的分区,该分区的开始地址对应着一个逻辑盘的开始扇区,也就是该逻辑盘的0号扇区,即逻辑盘的DBR。
(2)扩展磁盘分区(简称扩展分区)表:存储在硬盘的0磁头0柱面1扇区(即整个硬盘逻辑0号扇区),分区标志为0X05或0X0F,该分区的开始扇区对应一个逻辑扇区,在该逻辑扇区中存储着一个分区表(注:该分区表对应着一个逻辑盘)或两个分区表(其中:一个分区表对应一个逻辑盘,而另一个对应逻辑盘链接项表)。
(3)逻辑盘分区表:在扩展分区中,如果再建立一个逻辑盘,那么,该逻辑盘的分区表就存储在扩展分区的开始扇区中。
(4)逻辑盘链接项表:在扩展分区中,如果再建立两个以上的逻辑盘,则将产生一个以上的逻辑盘链接项,逻辑盘链接项的数量等于扩展分区中逻辑盘的数量减1。例如:如果在扩展分区中再建立三个逻辑盘,则将产生两个逻辑盘链接项;在扩展分区中,使用二叉树结构对逻辑盘分区表和逻辑盘链接项进行管理。
(5)隐藏分区表:隐藏分区是指在资源管理器中,用户不能查看到该分区对应逻辑盘的分区形式,隐藏分区表一般存放在整个硬盘的0号扇区,分区标志一般为0X12、0X1B、0X1C、0X1D、0X1E和0XDE等等。用户只要修改其分区标志,并重新附加该硬盘后,在资源管理器中便可以查看到该分区对应的逻辑盘符。
硬盘的寻址方式主要有CHS(即柱面、磁头和扇区)寻址方式和LBA(即逻辑块)寻址方式两种。按数据存取方式可以将分区表的存储方式分为CHS方式和LBA方式两种。
这里以第一个分区表为例,分区表结构如图4.9所示,说明如下:
图4.9 CHS存取方式下,MBR分区表存储结构
(1)[01BE]表示自举标志,该值取0X80时表示该分区可以自举,取0X00时表示该分区不可自举,其他值为非法。
(2)[01BF~01C1]表示该分区开始物理地址;其中:[01BF]表示该分区开始磁头号;[01C0]中的Bit 5 ~Bit 0 表示该分区开始扇区号(即该字节的低6位表示该分区开始扇区号),Bit 7 ~Bit 6 分别表示该分区开始柱面号的Bit 9 ~Bit 8 ;[01C1]表示该分区开始柱面号的Bit 7 ~ Bit 0 ,与[01C0]中的Bit 7 ~Bit 6 一起共计10位表示该分区开始柱面号。
(3)[01C2]表示该分区标志,即该分区所对应文件系统的类型。该字节取不同值时含义不同,详见表4.1所列。
(4)[01C3~01C5]表示该分区的结束物理地址;其中:[01C3]表示该分区结束磁头号;[01C4]中的Bit 5 ~Bit 0 表示该分区结束扇区号(即该字节的低6位表示该分区结束扇区号),Bit 7 ~Bit 6 分别表示该分区结束柱面号的Bit 9 ~Bit 8 ;[01C5]表示该分区结束柱面号的Bit 7 ~ Bit 0 ,与[01C4]中的Bit 7 ~Bit 6 一起共计10位表示该分区的结束柱面号。
(5)[01C6~01C9]表示该分区的相对扇区;对于主分区表和扩展分区表是指相对于主引导扇区(即0磁头0柱面1扇区)的扇区数;对于D盘分区表和链接项是指相对于扩展分区的开始物理地址的扇区数;对于各逻辑盘是指相对于该逻辑盘链接项的扇区数,该值占4字节。
(6)[01CA~01CD]表示该分区总扇区数;即该分区可用总扇区数,该值占4字节。
目前,CHS存储方式已经基本不再使用,但是当硬盘总柱面数小于1023时,从表面上看好像仍是CHS存储方式。
这里以第一个分区表为例,分区表结构如图4.10所示,说明如下:
图4.10 LBA存取方式下,MBR分区表存储结构
(1)[01BE]表示该分区的自举标志,该值取0X80时表示该分区可以自举,取00时表示该分区不可自举,其他值为非法。
(2)[01BF~01C1]在LBA存取方式下没有定义,一般情况下,该值可以取成与CHS存取方式下的值。如果开始柱面超过1023时,对于扩展分区和接链项该值一般为[01BF]=0X00、[01C0]=0XC1和[01C1]=0XFF;而对于逻辑盘分区表,该值一般为[01BF]=0X01、[01C0]=0XC1和[01C1]=0XFF,当然也可以是其他任何值。
(3)[01C2]表示该分区的标志,即该分区所对应文件系统的类型,该字节取不同值时含义不同,详见表4.1所列。
(4)[01C3~01C5]在LBA存取方式下未定义,一般情况下,该值可以取成与CHS存取方式下的值。如果结束柱面超过1023时,对于扩展分区和逻辑盘分区该值一般为[01C3]=0XFE、[01C4]=0XFF和[01C5]=0XFF,当然也可以是其他任何值。
表4.1 分区标志说明表(十六进制)
(5)[01C6~01C9]表示该分区相对扇区,对于主逻辑盘分区表和扩展分区表是指相对于主引导扇区(即整个硬盘0号扇区)的扇区数;对于D盘分区表和各链接项表是指相对于扩展分区的开始物理地址的扇区数;对于各逻辑盘分区表是指相对于该逻辑盘链接项表的扇区数,该值占4字节。
(6)[01CA~01CD]表示该分区的实用扇区数,即该分区总扇区数,该值占4字节;如果1个扇区等于512字节,那么,该分区的容量=该分区的实用扇区数×512字节。
在硬盘0号扇区偏移0X01BE~0X01FD处最多只能存放4个分区表,用户在分区时,可以根据需要建立一些逻辑盘。注:各逻辑盘的大小由用户在建立分区时,根据需要设定。
作者根据大量的实验发现:在MBR分区形式中,常见的分区形式有主逻辑盘分区,主逻辑盘分区与扩展分区,隐藏分区、主逻辑盘分区与扩展分区。
在这种方式下,在硬盘的主引导扇区(即0磁头0柱面1扇区)偏移地址0X01BE~0X01FD处最多可以存放4个分区表;假设硬盘在计算机管理为磁盘0,0号扇区的4分区表分别对应C盘分区、D盘分区、E盘分区和F盘分区,其分区逻辑结构如图4.11所示。采用这种分区管理方式通常是安装了硬盘还原卡;计算各逻辑盘在整个硬盘中的位置如式(4.1)~式(4.8):
图4.11 主逻辑盘分区结构
从式(4.1)~式(4.8)可知,这4个分区是尾首相连的,即第1个分区结束后的下一个扇区是第2个分区的开始扇区,以此类推。
各逻辑盘单独打开后,其开始扇区号均为0,计算结束扇区号如式(4.9):
例4.4 某硬盘容量为299MB(注:素材文件名为abcd42.vhd),被划分为4个分区,使用WinHex打开该物理硬盘。
操作方式:“文件→打开”→“选择abcd42.vhd文件”,“专家→映像文件为磁盘”→“选择整个硬盘的0号扇区”。
整个物理硬盘共有614401个扇区,扇区编号为0~614400,分区类型为MBR,在整个硬盘的0号扇区偏移0X01BE~0X01FD处共存储4个分区表,即Partition1~Partition4,假设4个分区对应的4个逻辑盘分别为H盘、I盘、J盘和K盘(即磁盘0时的C盘、D盘、E盘和F盘),文件系统均为FAT32,如图4.12所示。请回答下列问题:
图4.12 某硬盘0号扇区的4个分区
(1)将硬盘0号扇区4个分区表的存储形式分别填入到表4.2对应单元格中。
(2)将4个分区表的含义分别填入到表4.3对应单元格中。
(3)计算4个逻辑盘在整个硬盘中的扇区号范围。
(4)每个逻辑盘单独打开后,开始扇区号均为0,计算每个逻辑盘单独打开后的结束扇区号。
(5)画出4个逻辑盘在整个硬盘中的分布结构图,并标明4个逻辑盘单独打开后的开始扇区号和结束扇区号。
解:
(1)4个分区表在硬盘0号扇区偏移和存储形式见表4.2所列。
表4.2 整个硬盘0号扇区偏移0X01BE~0X01FD处4个分区表(存储形式)
(2)4个分区表含义见表4.3所列。
表4.3 H、I、J和K盘4个分区表含义
(3)由式(4.1)~式(4.8)可知:
H盘开始扇区号=H盘分区相对扇区=128
H盘结束扇区号=H盘开始扇区号+H盘分区总扇区数-1=128+143360-1=143487
所以,H盘在整个硬盘中的扇区号范围为128~143487。
同理,可以计算得到:
I盘在整个硬盘中的扇区号范围为143488~307327;J盘在整个硬盘中的扇区号范围为307328~430207;K盘在整个硬盘中的扇区号范围为430208~610431。
(4)由式(4.9)可知,各逻辑盘单独打开后的结束扇区号如下:
H逻辑盘结束扇区号=H盘分区总扇区数-1=143360-1=143359
同理,可以计算:
I逻辑盘结束扇区号=163839
J逻辑盘结束扇区号=122879
K逻辑盘结束扇区号=180223
(5)4个逻辑盘的逻辑结构如图4.11所示,在整个硬盘中的分布情况如图4.13所示。
图4.13 H盘、I盘、J盘和K盘在整个硬盘中分布示意图
例4.5 对于I盘而言,单独打开后,其逻辑扇区号范围为0~163839;而在整个硬盘中的扇区号范围为143488~307327,也就是说,I盘在整个物理硬盘中的开始扇区号为143488,而对于I盘来说就是0号扇区。
当I盘的0号扇区被破坏后,通过WinHex不能来打开I盘,只能通过WinHex打开整个物理盘,通过I盘的分区表可以计算出I盘的开始扇区在整个物理硬盘中的位置,然后就可以恢复I盘的0号扇区,即整个物理盘的143488号扇区。使用计算机管理中的磁盘管理功能查看磁盘1的分区情况如图4.14所示。
图4.14 使用计算机管理查看分区情况
使用WinHex模板管理器的Master Boot Record查看0号扇区结果如图4.15所示。
从图4.15可以看到4个分区的开始地址(即开始磁头、扇区和柱面),分区标志,结束地址(即结束磁头、扇区和柱面),相对扇区和总扇区数。
说明: 该模板已经过作者汉化,第1个分区表为H盘分区表,第2个分区表为I盘分区表,第3个分区表为J盘分区表,第4个分区表为K盘分区表。
图4.15 使用WinHex模板管理器的查看分区表
在这种方式下,在硬盘的0号扇区偏移0X01BE~0X01FD处只存放两个分区表,即C盘分区表和扩展分区表,在扩展分区中再建立各逻辑盘分区表和链接项。
例4.6 假设某硬盘为物理磁盘0,用户在硬盘0号扇区建立C盘分区表和扩展分区表;在扩展分区中再建立D盘分区表和E盘链接项、E盘分区表和F盘链接项、F盘分区表,其逻辑结构如图4.16和图4.17所示。
图4.16 C盘分区和扩展分区结构图
图4.17 扩展分区中各逻辑盘及链接项管理方式
各逻辑盘的相对扇区视具体硬盘而定,但是各逻辑盘的相对扇区取值一般为63或128,计算扩展分区相对扇区和各逻辑盘链接项相对扇区如式(4.10)~式(4.13):
以此类推。
从式(4.11)~式(4.13)可知,各逻辑盘链接项的相对扇区是指相对于扩展分区开始扇区号。
计算各链接项分区的总扇区数如式(4.14)~式(4.16):
以此类推。
计算分区表所在扇区号如式(4.17)~式(4.20):
以此类推。
计算各逻辑盘、扩展分区在整个硬盘中的位置如式(4.21)~式(4.30):
以此类推。注:C盘分区表所在扇区号为0。
计算各链接项在整个硬盘中的位置如式(4.31)~式(4.34):
以此类推。
例4.7 某硬盘容量为299MB(注:素材文件名为abcd43.vhd),使用WinHex打开该物理硬盘;操作方式:“文件→打开”→“选择abcd43.vhd文件”,“专家→映像文件为磁盘”→“选择整个硬盘的0扇区”,如图4.18所示。
注: 该硬盘的分区形式为在整个硬盘的0号扇区存储着C盘分区表和扩展分区表,而D盘分区表和E盘链接项、E盘分区表和F盘链接项、F盘分区表分别存储在扩展分区的3个扇区中。
从图4.18可知,整个硬盘共有614401个扇区(扇区编号0~614400);C盘分区表和扩展分区表,详见表4.4所列;使用WinHex模板查看C盘分区表和扩展分区表情况,如图4.19所示。
图4.18 整个硬盘0号扇区
表4.4 整个硬盘0号扇区偏移0X01BE~0X01DD处分区表(存储形式)
图4.19 使用WinHex模板管理器查看C盘分区表和扩展分区表
从式(4.18)可知:
D盘分区表和E盘链接项所在扇区号=C盘相对扇区+C盘总扇区数=128+163840=163968
将光标移动到163968号扇区,可以看到D盘分区表和E盘链接项,如图4.20所示。
图4.20 整个硬盘163968号扇区
D盘分区表和E盘链接项,详见表4.5所列;使用WinHex模板所看到的分区表如图4.21所示。
表4.5 整个硬盘163968号扇区偏移0X01BE~0X01DD处分区表(存储形式)
图4.21 使用WinHex模板管理器查看D盘分区表和E盘链接项
从式(4.19)可知:
E盘分区表和F盘链接项所在扇区号=D盘分区表和E盘链接项所在扇区号+D盘相对扇区+D盘总扇区数=163968+128+184320=348416
将光标移动到整个硬盘的348416号扇区,可以看到E盘分区表和F盘链接项,如图4.22所示,使用WinHex模板查看到的分区表,如图4.23所示;E盘分区表和F盘链接项见表4.6所列。
图4.22 整个硬盘348416号扇区
图4.23 使用WinHex模板管理器查看E盘分区表和F盘链接项
表4.6 整个硬盘348416号扇区偏移0X01BE~0X01DD处分区表(存储形式)
从式(4.20)可知:
F盘分区表所在扇区号=E盘分区表和F盘链接项所在扇区号+E盘相对扇区+E盘总扇区数=348416+128+122880=471424
将光标移动到整个硬盘471424号扇区,可以看到F盘分区表,如图4.24所示;使用WinHex模板查看F分区表如图4.25所示;F盘分区表详见表4.7所列。
图4.24 整个硬盘471424号扇区
图4.25 使用WinHex模板管理器查看F盘分区表
表4.7 整个硬盘471424号扇区偏移0X01BE~0X01CD处分区表(存储形式)
综合表4.4~表4.7,各分区表、扩展分区表和各链接项在整个硬盘中的存储情况见表4.8所列。
表4.8 各分区表、扩展分区表和各链接项存储位置情况表
从式(4.21)~式(4.30)可以计算出C盘开始扇区号和结束扇区号、扩展分区开始扇区号和结束扇区号、D盘开始扇区号和结束扇区号、E盘开始扇区号和结束扇区号、F盘开始扇区号和结束扇区号。
C盘开始扇区号=C盘分区表所在扇区号+C盘相对扇区=C盘相对扇区=128
C盘结束扇区号=C盘开始扇区号+C盘总扇区数-1=128+163840-1=163967
扩展分区开始扇区号=C盘开始扇区号+C盘总扇区数=128+163840=163968
扩展分区结束扇区号=扩展分区开始扇区号+扩展分区总扇区数-1=163968+444416-1=608383
D盘开始扇区号=D盘分区表所在扇区号+D盘相对扇区=C盘开始扇区号+C盘总扇区数+D盘相对扇区=128+163840+128=164096
D盘结束扇区号=D盘开始扇区号+D盘总扇区数-1=164096+184320-1=348415
E盘开始扇区号=E盘分区表所在扇区号+E盘相对扇区=348416+128=348544
E盘结束扇区号=E盘开始扇区号+E盘总扇区数-1=348544+122880-1=471423
F盘开始扇区号=F盘分区表所在扇区号+F盘相对扇区=471424+128=471552
F盘结束扇区号=F盘开始扇区号+F盘总扇区数-1=471552+133120-1=604671
从式(4.31)~式(4.34)可以计算出E盘链接项开始扇区号和结束扇区号、F盘链接项开始扇区号和结束扇区号。
E盘链接项开始扇区号=扩展分区开始扇区号+E盘链接项相对扇区=163968+184448=348416
E盘链接项结束扇区号=E盘链接项开始扇区号+E盘链接项总扇区数-1=348416+123008-1=471423
F盘链接项开始扇区号=扩展分区开始扇区号+F盘链接项相对扇区=163968+307456=471424
F盘链接项结束扇区号=F盘链接项开始扇区号+F盘链接项总扇区数-1=471424+133248-1=604671
综上所述,各逻辑盘、扩展分区和各链接项在整个硬盘分布情况见表4.9所列。
表4.9 各逻辑盘、扩展分区和各链接项在整个硬盘分布情况表
根据表4.9可以画出C盘分区、扩展分区、各逻辑盘分区以及各逻辑盘链接项结构示意图如图4.26所示,从图4.26可以清楚地知道C盘分区、扩展分区、逻辑盘分区以及逻辑盘链接项在整个硬盘中的位置和相互关系,以及各逻辑盘的开始扇区、结束扇区在整个硬盘中所对应的扇区号。
图4.26 C盘分区、扩展分区和各逻辑盘在整个硬盘分布示意图
例4.8 对于C盘而言,其逻辑扇区编号为0~163839,而在整个硬盘的扇区编号为128~ 163967,也就是说,C盘在整个硬盘的开始扇区号为128,而对于C盘来说就是0号扇区。如果C盘的0号扇区被破坏,通过WinHex选择逻辑盘功能无法打开C盘,只能通过WinHex选择物理盘功能来打开整个物理盘,通过C盘分区表计算C盘的开始扇区在整个物理硬盘中的扇区号,然后再恢复C盘的0号扇区(即整个硬盘的128号扇区)。
使用计算机管理看到的分区情况如图4.27所示,从图4.27只能看到一个硬盘被划分为2个分区,即C盘分区和扩展分区;扩展分区又被划分为3个分区,即D盘分区、E盘分区和F盘分区,4个分区的文件系统均为FAT32。不能查看到各逻辑盘、扩展分区以及链接项的分区表。
在这种方式下,在整个硬盘的0号扇区偏移0X01BE~0X01FD处建立3个分区,即隐藏分区、C盘分区和扩展分区。这种方式通常是计算机厂商将系统中的一些重要数据(如:驱动程序)存放在隐藏分区中。其分区管理方式如图4.28所示,而扩展分区的管理如图4.17所示。注:有的硬盘可能会有2个隐藏分区。
图4.27 计算机管理中分区结构图
图4.28 隐藏分区、C盘分区和扩展分区结构图
例4.9 某硬盘容量为299MB(注:素材文件名为abcd44.vhd),使用WinHex打开该物理硬盘。
操作方式:“文件→打开”→“选择abcd44.vhd文件”,“专家→映像文件为磁盘”→“选择整个硬盘的0号扇区”,如图4.29所示。
从图4.29可知,在整个硬盘0号扇区偏移0X01BE~0X01ED处存放3个分区表,如表4.10所列,第1个分区表的分区标志为0X1C,即该分区为隐藏分区,如果将该分区类型“0X1C”更改为“0X0C”并存盘。重新附加该硬盘后,在资源管理器中可以看到该分区对应的逻辑盘盘符。
图4.29 整个硬盘0号扇区的3个分区表
表4.10 整个硬盘0扇区偏移0X01BE~0X01ED处分区表(存储形式)
从扩展分区表可知,扩展分区表相对扇区为0X00041080(即266368)。
由式(4.18)可知:
D盘分区表和E盘链接项所在扇区号=扩展分区表相对扇区=266368
将光标移动到硬盘的266368号扇区,在该扇区偏移0X01BE~0X01DD处可以看到D盘的分区表和E盘链接项,如图4.30所示。从图4.30可知,在整个硬盘266368号扇区偏移0X01BE~0X01DD处存放2个分区表,见表4.11所列。
图4.30 266368号扇区偏移0X01BE~0X01DD处存储的D盘分区表和E盘链接项
表4.11 整个硬盘266368号扇区偏移0X01BE~0X01DD处分区表(存储形式)
由式(4.19)可知:
E盘分区表所在扇区号=D盘分区表和E盘链接项扇区所在扇区号+D盘相对扇区+D盘总扇区数=266368+128+143360=409856
将光标移动到硬盘的409856号扇区,在该扇区偏移0X1BE~0X1CD处可以看到E盘的分区表,如图4.31所示。E盘分区表见表4.12所列,使用计算机管理功能查看磁盘1的分区情况如图4.32所示。
图4.31 409856号扇区偏移0X01BE~0X01CD处存储的E盘分区表
表4.12 整个硬盘409856号扇区偏移0X01BE~0X01CD处分区表(存储形式)
图4.32 使用计算机管理查看磁盘1的分区情况