GPT分区表的备份与恢复
关键词: GPT, Partition, MBR,APPLE, GUID, Protective MBR
对于现在的系统来说,分区的类型千百种,但对于磁盘分区的layout来说,最常接触的只是三种而已: MBR(Master Boot Record), GPT(Globe Partition Table)和Apple Partition(Mixed分区)。
MBR分区表: 磁盘上最重要的数据结构,其中包含小段引导代码,磁盘信息,分区表等。在MBR的尾部有一个2-byte字段标记签名或分区结构的结束,总标记为0x55AA。
GUID分区表:对于GPT磁盘采用带有主备分区表结构的GUID分区表。这个结构分别保存在磁盘开头和结尾的部分。相比MBR采用扇区Sector来识别的方法,GPT采用logical Block Address(LBA)来识别。Protective MBR: 在GPT磁盘中,LBA 0的位置存放着第一个结构Protective MBR,紧跟着,在LBA 1的位置存放这主GPT头。随后是GUID的分区Entry信息。
Apple分区表: Apple Partition Map (APM)是苹果计算机上用来定义磁盘分区的数据结构,它引用了Logical Block的概念,通常512 bytes定义为一个Block,第一个Block中存放了苹果特有的Block0结构。这种分区结构主要是在DOS分区的复杂性和BSD分区的数量限制中的一种折衷方案。苹果分区表能描述任意数量的分区,以及后续扇区的数据结构。
Protective MBR
在GPT分区表的最开头(LBA0),处于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区,这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。
MBR的分区表结构
MBR分区表是一个64-byte的数据结构,用来识别磁盘分区类型和位置。每个分区表项都是16bytes,最多4个分区表。每个分区表项在开始扇区的位置是预定的。
Partition 1 0x01BE (446)
Partition 2 0x01CE (462)
Partition 3 0x01DE (478)
Partition 4 0x01EE (494)
GPT的分区表结构:
GPT分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。
主分区表和备
对于现在的系统来说,分区的类型千百种,但对于磁盘分区的layout来说,最常接触的只是三种而已: MBR(Master Boot Record), GPT(Globe Partition Table)和Apple Partition(Mixed分区)。
MBR分区表: 磁盘上最重要的数据结构,其中包含小段引导代码,磁盘信息,分区表等。在MBR的尾部有一个2-byte字段标记签名或分区结构的结束,总标记为0x55AA。
GUID分区表:对于GPT磁盘采用带有主备分区表结构的GUID分区表。这个结构分别保存在磁盘开头和结尾的部分。相比MBR采用扇区Sector来识别的方法,GPT采用logical Block Address(LBA)来识别。Protective MBR: 在GPT磁盘中,LBA 0的位置存放着第一个结构Protective MBR,紧跟着,在LBA 1的位置存放这主GPT头。随后是GUID的分区Entry信息。
MBR和GPT分区格式对比图
|
Apple分区表: Apple Partition Map (APM)是苹果计算机上用来定义磁盘分区的数据结构,它引用了Logical Block的概念,通常512 bytes定义为一个Block,第一个Block中存放了苹果特有的Block0结构。这种分区结构主要是在DOS分区的复杂性和BSD分区的数量限制中的一种折衷方案。苹果分区表能描述任意数量的分区,以及后续扇区的数据结构。
APPLE分区表结构
|
Protective MBR
在GPT分区表的最开头(LBA0),处于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区,这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
Protective MBR
|
在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。
MBR的分区表结构
MBR分区表是一个64-byte的数据结构,用来识别磁盘分区类型和位置。每个分区表项都是16bytes,最多4个分区表。每个分区表项在开始扇区的位置是预定的。
Partition 1 0x01BE (446)
Partition 2 0x01CE (462)
Partition 3 0x01DE (478)
Partition 4 0x01EE (494)
MBR分区表
|
GPT的分区表结构:
GPT分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。
主分区表和备