Windows GPT磁盘GUID结构详解

时间:2017-04-14 21:25:33   收藏:0   阅读:245

前一篇 Windows磁盘MBR结构详解 中我们介绍了Basic Disk中的Master Boot Record结构。GPT Disk作为Windows 2003以后引入的分区结构。使用了GUID分区表结构,它与MBR相比好处是支持更大和更多的分区,提高容错。本文介绍了GUID分区表的结构和各个字段的含义。


GPT Disk 的Protective MBR:


GPT Disk的结构中,第一个LBA位置(LBA 0)存放的是Protective MBR,随后LBA1的位置才是GPT的GUID分区表头。Protective MBR的作用是为了兼容性考虑,阻止一些遗留的MBR磁盘工具破坏GUID分区表。这种在LBA 0的位置存放Protective MBR的结构是基于Extensible Firmware Interface(EFI)规格。Protective MBR和MBR拥有同样的结构,同时还包括一条包含值为0xEE的System ID的分区记录(如下图所示),这个值标注了该分区为GPT分区,如果包含该分区的磁盘被移动到Windows 2000中或者被一些遗留的磁盘工具访问,则该分区会被标注晨GPT Protective分区,不能被删除。

技术分享


Globally Unique Identifier Partition Table(GUID)结构:


如下图所示,组成GPT Disk的GUID记录有以下几种:

技术分享

GUID Partition Table Header: GPT Header定义了分区记录所用到的Logical Block Address的区域。同时还定义了分区在磁盘上的位置、它自身的GUID、以及一组CRC32的校验值。Primary GPT Header位于磁盘的LBA1位置,紧跟着Protective MBR。Backup GPT Header位于磁盘最后一个磁道之上。下图是GPT Header中包含几个字段:

技术分享



GUID Partition Entry Array:类似MBR中的分区表,GUID partition entry array中包含了磁盘上每个分区的记录。比如64位的Windows Server 2003创建了一个Array值为16384字节,则第一个可用的数据大于等于LBA34. GUID Partition Entry Array也在分区最后存在一个副本,位置是在最后一个可用的LBA之后,GUID Partition table header之前。


GUID Partition Entry: GUID Partition Entry长度为128个字节,用来定义单个分区结构。每个GUID Partition entry从Partition Type记录开始。长度为16个字节的Partition Type GUID,类似MBR磁盘分区表中的System ID,它定义了分区中包含的数据和分区的作用。下图中是一个典型的GPT Disk的GUID Partition entry array记录,这个图中显示了三种分区记录


第一部分{45464920-5041-5254-0000-01005C000000}为EFI System分区、中间部分{16E3C9E3–5C0B–B84D–817D–F92DF00215AE}为Microsoft Reserved分区,最下面的一个{A2A0D0EB–E5B9–3344–87C0–68B6B72699C7}是Windows Basic Disk中的一个主分区。

技术分享

技术分享

在每个部分的中间位置主要记录了一些字段。Partition Type GUID之后的0x10位置开始,是一个长度为16字节的Unique Partition GUID记录用来标识每条记录的唯一性。0x20开始为3个长度为8个字节的字段,Starting LBA和Ending LBA分别记录了分区的起始和结束的位置、Attribute Bit描述了分区是如何使用的,例如是否为隐藏和只读等等、最后0x38开始的72个字节字段用来Unicode的分区的名字,名字最长为36个字符。


本文出自 “刘洪亮的博客” 博客,请务必保留此出处http://liuhongliang.blog.51cto.com/2895201/1916036

原文:http://liuhongliang.blog.51cto.com/2895201/1916036

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!