千家信息网

Windows GPT磁盘GUID结构详解

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,前一篇 Windows磁盘MBR结构详解 中我们介绍了Basic Disk中的Master Boot Record结构。GPT Disk作为Windows 2003以后引入的分区结构。使用了GUID分
千家信息网最后更新 2025年01月23日Windows GPT磁盘GUID结构详解

前一篇 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中包含几个字段:


  • 首位0x00是为长度8个字节的签名档,这个值必须为固定值,用来定义EFI的兼容性。

  • 0x08开始有四组长度为4个字节的字段,Revision标注EFI规格的版本信息、Header Size记录了整个GPT Head的大小,也为固定值、CRC32的校验信息、Reserved预留位。

  • 随后0x18开始是5个长度为8个字节的字段和一个长度为16字节字段,Primary LBA记录了Primary GPT Head的位置、Backup LBA记录Backup GPT Header的位置、First Usable LBA记录了第一个分区的起始位置,例如64位的Windows Server 2003,它的起始位置是34、Last Usable LBA记录的分区结束的位置。Disk GUID长度为16个字节,用来标识分区表头和磁盘、 Partition Entry LBA记录GUID分区记录的位置,固定为LBA2。

  • 从0x50开始为3个长度为4字节的记录,Number of Partition Entries记录最大的磁盘分区数,例如64位的Windows Server是128个、Size of Partition Entry记录了每个GUID分区记录大小,它的值为128字节、Partition Entry Array CRC32记录一组分区记录的校验值。

  • 最后从0x5C位置开始长度为420字节的预留空间,值都为0。


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个字符。


位置 字节 磁盘 长度 结构 字段 分区表 中包 起始 下图 作用 信息 兼容性 同时 名字 大小 工具 数据 标识 表头 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库原理与基础应用理工版答案 三级网络技术教程有电子版吗 战舰世界国服的服务器 三级网络技术目录 积成电子软件开发工程师 希望网络安全企业 不断 咨询网络技术服务一体化 图书管理系统数据库详细设计文库 网络公司数据库安全 湖南服务器虚拟化迁移服务器 网络安全检测评估报告 服务器端安全监控软件的设计 mcpe 服务器 数据库连接客户端 数据库操作查询选题价值 无锡云服务器散热器生产商 互联网公司软件开发干什么的 黑客帝国网络安全 linux服务器网络设置 教育技术数据库考试 国际版起床战争服务器号和端口 国外软件开发注重设计模式么 纯软件开发企业研发费用 校园网络安全的监管 条码打印机没有添加数据库 公共ftp服务器 学软件开发都做什么工作吗 优质软件开发全网优惠 软件开发有税收补贴吗 如何维护数据库的安全性
0