分区表
一个磁盘抛开物理组成部分的话,就是一个地址序列,这个序列从0~n-1,每个地址包含512B(字节)的控件。一般我们将这些地址称作逻辑块地址(LBA),每块由512B组成。分区表的作用是:告诉系统,磁盘的分区有几个,开始位置和结束位置。磁盘分区表格式目前主要有两种MBR分区表和GUID分区表(GPT)。
MBR
MBR即主引导记录(Master Boot Record),位置在磁盘的第一个逻辑扇区,即LBA0的位置。一个逻辑扇区仅有512B(字节),分给MBR分区表的只有64B,由4个16B大小的分区,这也是硬盘主分区数目不能超过4个的原因,MBR分区表最大可寻址的存储空间只有2TB(2^32 * 512)。标准MBR结构如下:
由上图可以看出,MBR主要由三部分组成,主引导程序、硬盘分区表(DPT)、分区有效标志。主引导程序占据446字节,分区表占据64字节,由4个大小为16字节的主分区组成,还有分区有效标志占据2字节。接下来谈谈有关这三个部分的作用:
- 主引导程序(boot loader):主要负责从活动分区中装载并运行引导系统程序
- 分区表(DPT,Disk Partition Table):将大表的数据分成称为分区的许多小的子集。如果磁盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作
- 分区有效标志(magic number):有的地方也称为结束标志字,固定值为0xAA55或者0x55AA,取决于处理器类型,如果是小端模式处理器(如Intel系列),则该值为0xAA55,如果是大端模式处理器(如Motorola6800),则该值为0x55AA。如果该标志错误,系统就不能启动
传统的BIOS比较低级,它不能像操作系统一样识别文件系统,所有磁盘必须要有一个固定的物理块作为引导块(Boot Block),这个引导块就是MBR。也就是说MBR是用来引导内存加载并运行操作系统内核的。
GPT
GPT即全局唯一标识分区表(GUID Partition Table)是一个实体磁盘的分区表的结构布局的标准。它是可扩展接口(EFI)标准的一部分。由于MBR分区表最大可寻址的存储空间只有2TB这个局限性。CPT就诞生了,CGPT分类64bits给逻辑块地址,这就意味着寻址存储空间达到8ZB。GPT支持最多128个主分区。CPT结构图如下:
如图可以看出:GPT分为以下几个部分:
- 保护性MBR: 处于位置LBA0,是在CPT分区表的开头,为了兼容性而存在的传统的MBR。一般情况下是没有引导代码,仅仅有一个被标识为未知的分区,当支持GPT分区表的操作系统检索到这个MBR后会自动忽略并跳到LBA1读取CGT分区表。
- GPT头:定义了硬盘的可控件和组成分区表的项的大小和数量,还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小以及备份分区表头和分区表的位置和大小。
- 分区表:用于存储分区的信息。如(分区类型GUID,起始LBA,末尾LBA等)
- 分区:是物理磁盘的一部分,作用如同一个物理分隔单元。其基本信息存在分区表中。
- 分区表备份对分区表进行备份
- GPT头备份对GPT头进行备份。处于硬盘最后面
GPT是基于EFI的,因此BIOS是无法引导GPT磁盘里的操作系统的。但是为了解决这个问题,混合分区的概念就产生了。混合分区技术使得可以使用BIOS来引导CPT磁盘里的操作系统。也就让Mac上面可以运行Windows成为了现实。这里就不多讨论了。有兴趣的可以自己去了解一下混合分区和Boot Camp引导。