第2章 数据存储结构
2.1 数据存储结构概述
2.1.1 主引导记录
2.1.1.1主引导记录的作用
整个磁盘的第1个扇区,即C/H/S地址的0柱面0磁头1扇区,是一个特殊而重要的扇区,叫作MBR(Master Boot Record)扇区,即主引导记录。此扇区在计算机引导过程中起着重要作用,计算机在按下电源键以后,开始执行主板BIOS程序,进行完一系列检测和配置后,开始按BIOS中设定的系统引导顺序引导系统。
假如选择从磁盘启动,则BIOS启动代码将会按照约定从磁盘的第1个物理扇区读取MBR,并将其放入内存的指定位置,然后MBR中的引导程序开始执行,并接管计算机的控制权。MBR中的引导程序能够从分区表中找到第1个活动分区,然后读取并执行这个活动分区中的分区引导记录(DBR)。DBR根据文件系统的描述,找到操作系统的引导文件,并将其放入内存的指定位置。然后,操作系统开始执行,并接管计算机的控制权。操作系统接管计算机也就标志着计算机启动过程的完成。
从系统引导过程可以看出,MBR处在一个承上启下的关键位置,它也是磁盘参与计算机系统运作的第1个环节,其重要性不言而喻。
2.1.1.2主引导记录的结构
MBR不随操作系统的变化而变化,即不同的操作系统存在相同的MBR,即使不同,MBR也不会夹带操作系统的性质,具有公共引导性。
MBR的逻辑结构如图2-1所示。
图2-1 MBR逻辑结构框图
MBR由3个部分组成:包括引导代码(446字节,偏移0~1BDH)、磁盘分区表DPT(64字节,偏移1BEH~1FDH)和结束标志(55 AA,偏移1FEH~1FFH)。
1.引导代码
不同的分区程序(或者版本不同的分区程序)所创建的引导代码可能会不同,但是其基本功能是一样的。因为如果它违背了计算机启动过程中所约定的规则,就会导致计算机系统无法正常启动。此外,用户还可以在保留其基本功能的基础上,为引导程序附加一些其他功能,例如加密、启动口令、多系统引导等。
引导代码可分为引导程序、错误信息数据区和全零字节3部分。
“引导程序”的作用是在分区表中查找活动分区标志“80”,同时,它也会判断非活动分区的标志是否为“00”,如果既不是“80”也不是“00”,则会认为是错误状态,并将“错误信息数据区”的错误信息打印到显示器上。当所有分区检查完毕,并且找到了活动分区,“引导程序”就会把该活动分区上的“分区引导记录(DBR)”读入内存并执行DBR中的引导程序,然后将计算机的控制权交给DBR的引导程序。
2.磁盘分区表
在MBR的3个部分中,与数据恢复关系最为密切的部分就是“磁盘分区表”,这部分总共占据64字节的空间,刚好能够存放4条“分区记录项”。
“分区记录项”是固定格式组织的数据串,长度为16字节,每条“分区表记录项”所包含的意义不同。
3.结束标志
MBR的最后两个字节是MBR的结束标志位,它的值应该固定为“55 AA”,如果该标志出现错误,系统也将无法正常启动。
使用MBR,用户可以将磁盘最多划分为4个分区,这些分区称为“主分区”。“分区操作”在磁盘上建立的“数据组织结构”,如图2-2所示。
图2-2 磁盘数据组织结构图
2.1.2 磁盘分区
2.1.2.1卷和分区的概念
“卷”是操作系统或应用程序用来存储数据的、可寻址的扇区的集合。卷的使用有两种情况:一种是将多个存储区域合并成一个存储卷,另一种是将一个存储区域划分成若干个独立分区。
用户可以将不同磁盘上的不同区域组合成一个跨区卷,从而使几个不同的区域看起来像一个整体区域一样;也可以把一个物理磁盘看作是一个物理卷,可以分成几个小的卷进行使用。
“分区”是指在磁盘上人为划分出来的逻辑区域。每一个分区都有一个确定的起止位置,在起止位置之间的那些连续的扇区都属于该分区所有,不同的分区的起止位置互补交错。
在很多情况下需要按照用户的需求,将整个磁盘空间划分为一个或多个逻辑区域,也就是所谓的“分区”,每个分区由基本磁盘上的连续扇区组成。然而,只有“创建分区”的程序才知道这些“逻辑区域”具体是怎么划分的,为了能让操作系统和其他用户程序能够识别这些分区,“创建分区”的程序还会把有关分区的全部信息(包括分区起始位置、分区大小、分区类型等)都记录在磁盘的第1 个扇区即主引导扇区(MBR)上的磁盘分区表。
2.1.2.2磁盘分区表分析
在MBR的“分区记录项”中总共包含有4条“分区表记录项”,其意义如表2-1所示。
表2-1 MBR分区表记录项意义
说明:
(1)当自举标志字节为“80H”时,说明该分区是活动分区;为“00H”时,说明是非活动分区;“80H”和“00H”以外的值是错误的标志。
(2)读取起始和结束位置的CHS参数。
H参数的值=H字节的值;
C参数的值=((S字节的高2位)<< 8)的值 + C字节的值;
S参数的值=(S字节的低6位)的值。
(3)分区类型标志是用来描述该条分区记录项所对应的分区是何种类型,如FAT32、NTFS等。
常见的一些分区类型及其代码值如表2-2所示。
表2-2 常见分区类型及代码值
2.1.2.3 EBR分析
1.MBR的扩展
通过前面对MBR的分析可知,MBR中“磁盘分区表”的大小是固定的,占64字节,“分区记录”的格式也是固定的,占16字节,因此通过MBR定义最多只能描述4个分区。
然而,对于日益增大的磁盘,仅仅划分4 个分区是远远不够的,这就需要对分区表进行扩展。微软为了解决这个问题,采用了一种称为“虚拟MBR”的技术。具体操作过程如下。
首先,定义了一种新型的分区结构——“扩展分区”,这样在使用主MBR定义分区的时候,能够由一条“分区记录”来指向该“扩展分区”。
但在这个被定义为“扩展分区”的区域内,通过不断创建“虚拟MBR”,也叫作EBR,来创建任意数量的“逻辑分区”,直到全部“扩展分区”区域被用完。
2.EBR的结构
从EBR结构框图(见图2-3)中可以看出,EBR和MBR一样,也是占用一个扇区(512字节)的存储空间。它们的结构划分也是一样的,所不同的内容如下。
图2-3 EBR结构框图
首先,EBR没有引导代码。
其次,分区表中只有两条分区记录项。其中,第1条分区记录项指向本逻辑分区的起始位置,第2条分区记录项则指向下一个EBR的起始位置。如果一个EBR是扩展分区中的最后一个EBR,该EBR的分区表中只包含一条分区记录项,这条分区记录项是指向本分区的。
通过这样的方式,“扩展分区”中的所有EBR,通过这两条“分区记录项”形成一个“分区链”。只要找到第1个EBR,就可以通过这个“分区链”找到所有的逻辑分区。而第1个EBR是由主MBR的分区表项所指向的。
自此,“分区”操作把磁盘上的全部空间按照如图2-4所示的这个“逻辑框图”所描述的结构,在MBR和EBR共同作用下,将所有的“分区”在逻辑上有效地组织起来,形成了一个完整的“分区链”。
图2-4 分区链逻辑框图