主引导记录(MBR,Master Boot Record)
MBR最开始为IBM为了兼容磁盘和移动磁盘而设计的一种引导扇区的格式。MBR位于磁盘的第一个扇区,这个扇区保存了开机引导程序、磁盘分区信息等。系统启动时BIOS会读取MBR的数据,然后索引到系统启动程序上进行启动。主引导扇区是先于系统起作用的,也就是说主引导扇区的结构不分系统、不分磁盘。
MBR并不支持无分区(non-partitioned)的存储设备,如软盘等。支持这类设备的主引导记录为VBR(Volume Boot Record)。
MBR结构
MBR位于硬盘第0柱面、0磁头、1扇区,共计512 bytes。 从MBR的结构图可以看出,MBR包含了3个部分:
主引导程序(Master Boot Code)
主引导程序占446 bytes,存放引导程序信息。这个区域主要功能有提供系统启动选项(多系统的时候选择一个系统启动)、指向磁盘可以启动的内核程序、交由系统内核加载并启动系统。
分区表(Partition Table)
分区表占64 bytes。分区表存放磁盘分区的信息,分区表最多可以记录4个分区的信息,每个分区信息16 Byte,记录了分区的磁盘起始位置、大小、文件系统类型等信息。
引导标识(Boot Signature)
最后的2 bytes被设计成了引导标识,引导标识可以理解为一个魔数,占2 bytes(取值为0x55AA)。引导标识是表示磁盘有没有被初始化的标识,如果这个标识错误,则会被认为磁盘不支持MBR,可能会选择其他的磁盘分区方案进行解析。
为了保护MBR也为了后面可以扩展,通常第0柱面、1磁头共计64个扇区会预留出来,真正的数据分区一般是从63(0~63)后面开始的。63扇区也是LBA地址模式的偏移量的开始位置。
分区表(Partition Table)
分区表存储了磁盘的分区信息,大小为64 bytes,分成4个分区项(Partition Entry),每个分区项16 bytes。
分区表结构
每个分区项包含了如下信息:
- 引导指示符 (1 bytes):标识单前分区是否活动分区(Active Partition)。
- 分区开始地址(3 bytes) : 用CHS(Cylinder-Head-Sector,磁柱-磁盘-扇区)地址格式记录。
- 分区类型 (1 bytes):分区的寻找类型,CHS或LBA(Logical Block Addressin,逻辑区块寻址)。
- 分区结束地址(3 bytes):用CHS地址格式记录。
- 分区开始地址(4 bytes):用LBA地址格式记录。
- 分区大小(4 bytes): 分区大小(单位:扇区)。
这个分区项里面出现了两个分区的开始地址,两个地址有什么区别?到底哪个才是分区真正开始地址?
CHS地址模式只占用了3个bytes,最多定位空间为2^24 * 512 bytes = 8G的,显然这个空间大小是无法满足单前磁盘大小的。所以引入了LBA地址模式,占用4个bytes,将磁盘空间大小扩大2^32 * 512 bytes = 2T。MBR模式两种地址模式通过分区类型来选择。
按MBR模式,磁盘超过2T就无法表示了。因此随着大容量磁盘的出现,MBR分区也逐渐被GTP(GUID Partition Table,全局唯一标识分区表)分区方案所取代。
扩展引导记录(EBR,Extended Boot Record)
上文提到了分区表只有4个分区项目,那我们平时见到5、6个分区是如何实现的?
磁盘结构图
为了能过支持超过4个分区,引入了扩展分区的概念。引入了扩展分区的概念后,4个分区项还是只有4个,只是每个分区项其实分成了两种功能:一种是指向一个实实在在的数据分区,我们称之为主分区(Primary Partition),一种是指向一个EBR,我们称之为扩展分区(Extended Partition)。通过扩展分区指定的分区称之为逻辑分区(Logical Partition)。扩展分区是用链式结构串起来,理论上只要磁盘大小或系统索引支持,可以将磁盘划分为无数个逻辑分区。
主分区和扩展分区加起来不能超过4个,而且4个分区项里面必须有一个主分区,扩展分区只能占1个。扩展分区里面必须划分逻辑分区。
EBR的结构跟MBR的结构一模一样,也是由三个部分组成:
主引导程序(Master Boot Code)(446 bytes):一般情况下是不使用的,用0填充。在一些磁盘解决方案里面可能会用到。
分区表(Partition Table)(64 bytes):分区表,记录逻辑分区的信息。
引导标识(Boot Signature)(2 bytes):分区标识,取值为0x55AA。
EBR分区表结构跟MBR的分区表结构一模一样,但是在EBR里面,4个分区项的作用如下:
第一个分区项:指向该EBR的一个逻辑分区。
第二个分区项:指向下一个EBR(如果有的话)。
第三个分区项:留空。
第四个分区项:留空。
具体到每个分区前面还有一个引导扇区(Boot Sector)记录分区的详细信息,如文件系统类型、分区大小、目录数等必要的信息。
登录 | 立即注册