分区表和扩展分区表存储原理

 

分区表和扩展分区表
正如在主引导记录分析中看到的,分区表是一个64字节的数据块,用来识别和定位硬盘上分区的类型和位置,分区表独立于操作系统。每个分区表项是16字节,最多有四项,每项都在MBR的预定义的位置:
 

1. 分区一 0x1BE (446)
2. 分区二 0x1CE (462)
3. 分区三 0x1DE (478)
4. 分区四 0x1EE (494)
 

当分区数小于4时,其余的分区项均为0。下面是一个含有三个分区的分区表例子:
000001B0: 
                                                                                                                        80 01
000001C0: 01 00 07 FE BF 09 3F 00 - 00 00 4B F5 7F 00 00 00 ......?...K....
000001D0: 81 0A 07 FE FF FF 8A F5 - 7F 00 3D 26 9C 00 00 00 .........=&....
000001E0: C1 FF 05 FE FF FF C7 1B - 1C 01 D6 96 92 00 00 00 ................
000001F0: 00 00 00 00 00 00 00 00 - 
00 00 00 00 00 00 ..............

 
以这个例子的第一个分区表项来讨论分区表中各项的意义:
 

字节偏移 
域长度      举例数值              域名和定义
0x01BE 
  字节            0x80                      引导指示符。指示该分区是否为活动分区。有效值包括

                                                                                    00 - 不用来启动。80 - 活动分区。

0x1BF        字节            0x01                      起始磁头。

0x1C0        6比特        0x01                      起始扇区。只用到0-5比特。比特6-7是起始柱面域的高两位。

0x1C1      10比特        0x00                    起始柱面。包含柱面值的低8位,和起始扇区域的高2位一起构成起始柱面值。

0x1C2            字节        0x07                    系统ID。定义卷类型。

0x1C3            字节        0xFE                    终止磁头。

0x1C4        6比特        0xBF                      终止扇区。只用到0-5比特。比特6-7是终止柱面域的高两位。

0x1C5      10比特      0x09                      终止柱面。包含柱面值的低8位,和终止扇区域的高2位一起构成终止柱面值。

0x1C6            双字      0x3F000000  相对扇区。

0x1CA            双字      0x4BF57F00  总扇区数。

 

系统ID可能的值:

0x01                  FAT12主分区或逻辑分区。

0x04                  FAT16主分区或逻辑分区。

0x05                  扩展分区。

0x06                  BIGDOS FAT16主分区或逻辑分区。

0x07                  NTFS主分区或逻辑分区。

0x0B                  FAT32主分区或逻辑分区。

0x0C                  使用扩展中断13的FAT32主分区或逻辑分区。

0x0E                  使用扩展中断13的BIGDOS FAT16主分区或逻辑分区。

0x0F                  使用扩展中断13的扩展分区。

0x12                  EISA分区。

0x42                  动态磁盘卷。

0x86                  遗留的FT(Fault Tolerant) FAT16。

0x87                  遗留的FT NTFS。

0x8B                  遗留的FT FAT32。

0x8C                  遗留的FT 使用扩展中断13的FAT32。

 

我们知道,一个硬盘可以有很多分区,但MBR分区表只有四项,怎么能突破这个限制呢?答案是扩展引导记录(EBR - Extended Boot Record),通过把MBR分区表中一项设为扩展分区(系统ID为0x05或0x0F),其分区表项指定扩展分区的起始位置和长度,在其中最开始扇区 (EBR)和MBR相同位置(0x1BE)放置另外一个分区表,一般称为扩展分区表。扩展分区表的第一项指定扩展分区目前的逻辑分区信息,如果还有更多的 逻辑分区,扩展分区表的第二项指定下一个EBR的位置,否则为0。最后的两个分区表项总是为0。通过这种方式,一个硬盘上的分区数目就没有限制了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
什么是MBR和主引导引导扇区?什么是主分区、扩展分区、逻辑分区?什么是活动分区、引导分区、系统分区、启动分区?一下子罗列这么多概念,恐怕很多人都搞不清它们的区别和联系吧。网上虽然不少解释,但很多是模棱两可甚至是错误的,反而越弄越糊涂。猫猫煞费苦心的把这一大串概念研究了很长时间,试图搞明白,为了以后查阅方便,于是把对这些概念的理解总结了一下。而要想分清这些概念,真要费一点脑筋啊! 一、MBR和主引导扇区 首先简要介绍MBR和主引导扇区的关系。 主引导扇区是硬盘0号柱面,0号磁头的第一个扇区,大小为512字节。(注:硬盘可以用柱面、磁头和扇区定位) MBR,占用主引导扇区的前446字节,紧随其后的64字节是分区表DPT,最后还剩两个字节则恒为55AA,表示结束符号。(下图,演示了它们的位置关系) 然后,具体说一说MBR和分区表。 MBR,全称为Master Boot Record,即硬盘的主引导记录。MBR,共446字节,一般在操作系统安装时写入,但它并不属于操作系统。MBR就是一段引导程序,用于检测磁盘的分区合法性和加载操作系统,它的重要作用就是识别活动分区,并引导操作系统。 分区表DPT,共64字节,记录了硬盘有多少分区以及分区的各种属性。由于一个分区的信息要占用16字节,所以分区表只能定义4个分区,这就是为什么我们说硬盘一般最多只能分为4个主分区(这里说“一般”是对基本磁盘而言,而对于动态磁盘则无此限制,但大部分都在使用基本磁盘,可以暂不考虑 )。 计算机开机后BIOS加电自检,一切正常后,找到第一个启动设备(一般就是硬盘),然后从这个启动设备的主引导扇区读取MBR。MBR这段引导程序识别活动分区,引导操作系统。 二、主分区、扩展分区、逻辑分区 正如前面所讲,主分区是由主引导扇区中64字节的分区表所定义的,最多只能有4个。但为了满足更多分区的需求,变产生了扩展分区。形式上,如果拥有扩展分区,就必须牺牲一个主分区,而且最多有一个扩展分区,也就是说:主分区+扩展分区<=4 and 扩展分区<=1。因此扩展分区也可以看成一种特殊的主分区。 但扩展分区并不可以直接使用,扩展分区又必须以逻辑分区的形式出现,可以这样认为:扩展分区包含着若干逻辑分区,而且至少包含一个。 扩展分区中的逻辑分区是以链式存在的。即每一个逻辑分区都记录着下一个逻辑分区的位置信息,依次串联。事实上每一个逻辑分区都有一个和主引导扇区类似的引导扇区,引导扇区里有类似的分区表。该分区表记录了该分区的信息和一个指针,指向下一个逻辑分区的引导扇区。 因此,逻辑分区是借鉴了主分区的方法,相当于在一个主分区下面建立了若干级“主分区”。从上面的描述,猫猫推测,逻辑分区是建立在操作系统级别,由操作系统识别的。另一个可以预测的现象是:一旦某一个逻辑分区损害,跟在它后面的所有逻辑分区都将丢失,而前面的逻辑分区去可以保留。这也是链式结果的特点。 三、活动分区、系统分区、启动分区、引导分区 这四个术语和前面三个不同,前面三个是讲述分区的“物理”形成。而这四个术语描述了分区的功能,并且更易混淆。 首先,根据Windows XP随机帮助文档看,引导分区就是启动分区,两者是同一概念,所以下面就只讨论活动分区、系统分区和启动分区。 系统分区和启动分区比较。 这是两个极易混淆的概念,因为两者的含义似乎和它们的名字正好颠倒了。Windows帮助文件的术语表里是这样解释他们的:”系统分区,包含加载 Windows(例如,Ntldr、Osloader、Boot.ini、Ntdetect.com)所需的硬件特定文件的分区。系统分区可以(但不是必须)与启动分区相同。启动分区,包含 Windows 操作系统及其支持文件的分区。启动分区可以(但不是必须)与系统分区相同。“ 看起来是很糊涂,但说的简单些就是:系统分区包含Ntldr、Osloader、Boot.ini、Ntdetect.com等文件,而启动分区包含Windows和system32文件。所以,真正包含操作系统内核文件的分区是启动分区,包含操作系统引导文件的确实系统分区,这是要特别注意的一点。 有些人就疑问了,我的Ntldr、Osloader、Boot.ini、Ntdetect.com和Windows、system32文件都在C盘,那是怎么回事?这很容易解释,你的C盘既是系统分区也是启动分区,只安装一个操作系统的计算机大都属于这种情况 ,所以微软在括号里说“但不是必须”。 其实系统分区时针对引导来说的,而启动分区时针对操作系统来说的。像我的电脑C盘先安装了Vista,后来D盘安装了XP,现在C盘是系统分区;至于哪个是启动分区,就要看我用那个系统了,进Vista,C盘就是启动分区,进XP,D盘就是启动分区。(再强调,启动分区包含Windows内核文件,而系统分区才包含操作系统引导文件,不然会越看越糊涂的。) 最后要搞明白的是活动分区,这一点,比较麻烦。 Windows帮助文档里的定义是:”活动分区,基于 x86 计算机的启动分区。活动分区必须是基本磁盘上的主要分区。如果只使用 Windows,则活动分区可以与系统卷相同。“补充说明有:活动分区必须是主分区,一块硬盘上只可以有一个活动分区。其他主分区可以被标记为活动分区。 而从主引导扇区处看,活动分区仅仅是在分区表中,16个字节的最前面含有80标志的分区信息所定义的分区。 但猫猫对Windows帮助文档的定义不敢苟同(也许是我错了,但是我思来想去,只有这样可以解释通)。首先,我们知道活动分区是通过主引导扇区的分区表标记的,所以理论上,每个主分区都可以被标记为活动(只是不当的标记会导致系统无法启动)。Windows帮助文档说活动分区,是基于x86的计算机的启动分区,那不就是说是Windows文件所在分区。可是对于双系统来说,这种说法显然不对,因为双系统的启动分区是依据被启动的系统而定的。所以,我假定微软也把系统分区和启动分区的概念搞混淆了。 所以,结果变为,活动分区是基于x86计算机的系统分区。换句话说,活动分区是一种系统分区。在这种情况下,一个主分区是不是系统分区似乎并不具有价值,只有被标记为活动的主分区才有价值。因为,只有标记为活动分区,这个系统分区的Windows启动支持文件才会被加载,然后通过这些引导存储在启动分区的Windows内核文件,完全Windows的启动。 所以,Windows可以被安装在逻辑分区内(我发现我的电脑就是这样的),但必须在活动分区的启动支持文件里加上对这个逻辑分区里Windows的引导信息。具体到XP,就是boot.ini文件添加上对双系统的引导,而这个boot,ini文件必须在启动分区。而我了一个实验,在XP下面通过启动和故障恢复对话框修改boot.ini文件,发现修改的并非XP所在的分区的boot.ini,而是Vista所在分区的boot.ini。(我在主分区C盘安装了Vista,逻辑分区D盘安装了XP)。同时,我通过软件废除Vista的新式引导方式,恢复xp的boot.ini式引导方式(此时,C盘Vista已无法引导),发现分别修改C盘和D盘的boot.ini,只有C盘的boot.ini才有效。再次印证了我的假设。 另外,如果两个系统都安装在主分区,则可以通过标记各自的安装分区为活动分区,而启动不同的操作系统。 参考资料: Linux引导过程内幕:http://www.ibm.com/developerworks/cn/linux/l-linuxboot/ 维基百科-主引导扇区:http://zh.wikipedia.org/wiki/%E4%B8%BB%E5%BC%95%E5%AF%BC%E6%89%87%E5%8C%BA 硬盘主引导记录详解(汇编代码详解):http://www.cnblogs.com/woodfish1988/archive/2007/11/25/971482.html Windows XP随机帮助文档(Windows帮助文档是一个很好的东西,有些人优化系统竟然把它删了,真是太不应该了。 呵呵,本文地址,猫猫的园地:http://blog.mm-share.cn/post/Partition-Comparison.html 写了这么多,希望对大家有所帮助。若有不足之处,望方家指正!另外,还有基本磁盘、动态磁盘,卷和分区的区别等待问题,还要进一步研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值