Windows 和 GPT 常见问题解答

有关 GUID 分区表 (GPT) 的常见问题解答。

此版本的 Windows 和 GPT 常见问题解答适用于 Windows 10 和 Windows Server 2016。 有关此常见问题解答的旧版本,请参阅 MSDN 上的 Windows 和 GPT 常见问题解答

自个人电脑问世以来,硬盘上的数据存储区就一直被划分为较小的区域,称为扇区。 这些扇区分组到用于在磁盘上创建单独卷或“驱动器”的分区。 分区是使用称作“主启动记录”(MBR) 的方案组织的。 MBR 是磁盘位置或地址,以及磁盘上存在的每个分区的特定长度构成的表。 MBR 本身占用少量的磁盘空间,在启动阶段会读取 MBR,以确定在何处查找要启动进入的操作系统。 操作系统也将 MBR 信息用作磁盘上存在的卷的映射。

最终,磁盘的数据密度变得过大,以致 MBR 方案无法顾及到所有可用的数据位置。 此外,MBR 的布局或格式是为早期计算机设计的,它不够灵活,无法适应较新的磁盘配置。 需要开发一种新的分区方法,GUID 分区表 (GPT) 分区方案因此应运而生。

GPT

什么是 GPT 磁盘

GUID 分区表 (GPT) 是作为统一可扩展固件接口 (UEFI) 计划的一部分引入的。 GPT 提供一种比旧式主启动记录 (MBR) 分区方案(过去在电脑中很常用)更灵活的机制来为磁盘分区。

分区是物理或逻辑磁盘上的一片连续存储空间,其功能如同一块物理上独立的磁盘。 分区对系统固件和已安装的操作系统可见。 在系统启动操作系统之前,对分区的访问由系统固件控制,而在操作系统启动之后则由操作系统控制。

MBR 分区有什么缺点

MBR 磁盘仅支持四个分区表条目。 如果分区超过四个,则需要创建一个称作“扩展分区”的次要结构。 然后可将扩展分区划分为一个或多个逻辑磁盘。

Windows 根据报告的几何结构在柱面边界上创建 MBR 磁盘分区和逻辑驱动器,不过,此信息不再与硬件(磁盘驱动程序或 RAID 控制器)的物理特征有任何关系。 从 Windows Vista 和 Windows Server 2008 开始,随时硬件在真实缓存或物理对齐方面提供的技巧越来越完善,用户选择的逻辑边界更多。 由于此分区信息存储在驱动器本身上,因此操作系统并不依赖于这种对齐。

MBR 分区规则比较复杂,很容易指定不当。 例如,柱面对齐是否意味着每个分区的长度必须至少为一个柱面? MBR 分区由两字节字段标识,需要进行协调以避免冲突。 IBM 最初提供这种协调,但当今不存在任何分区标识符的权威列表。

另一种常见做法是通过不成文的过程使用分区或“隐藏”的扇区来保存特定信息,这会导致出现难以调试的问题。 过去,供应商特定的实施方案和工具会向公众发布,因此支持工作变得困难。

为何需要使用 GPT

GPT 磁盘允许增长。 GPT 磁盘上的分区数量不受临时方案的限制,例如由 MBR 扩展启动记录 (EBR) 定义的容器分区。 GPT 磁盘分区格式定义完善且完全能够自我标识。 对平台操作至关重要的数据放置在分区中,而不是放置在未分区或“隐藏”的扇区中。 GPT 磁盘使用主分区表和备份分区表来实现冗余,并使用 CRC32 字段来改善分区数据结构的完整性。 GPT 分区格式使用版本号和大小字段来方便将来的扩展。

每个 GPT 分区具有唯一的标识 GUID 和分区内容类型,因此无需协调即可防止分区标识符冲突。 每个 GPT 分区具有一个 36 字符 Unicode 名称。 这意味着,任何软件都可以显示分区的用户可读名称,而无需进一步了解该分区。

在何处可以找到 GPT 磁盘分区的规范

统一可扩展固件接口 (UEFI) 规范(版本 2.3)的第 5 章定义了 GPT 格式。 在 https://www.uefi.org/specifications 上可以找到此规范。

基本磁盘的 GPT 格式

基本磁盘是 Windows 中最常用的存储类型。 “基本磁盘”是指包含分区(例如主分区和逻辑驱动器)的磁盘,通常会使用某种文件系统将其格式化为文件存储的卷。

GPT 分区表上提供了保护性 MBR 区域,目的是与 MBR 上运行的磁盘管理实用工具向后兼容。 GPT 磁头定义了分区条目可用的逻辑块地址范围。 GPT 磁头还定义了它在磁盘上的位置、其 GUID,以及一个用于验证 GPT 磁头完整性的 32 位循环冗余检验 (CRC32) 校验和。 GUID 分区表中的每个条目以分区类型 GUID 开头。 16 字节的分区类型 GUID(类似于 MBR 磁盘分区表中的“系统 ID”)标识该分区包含的数据类型,并标识该分区的使用方式,例如,它是基本磁盘还是动态磁盘。 请注意,每个 GUID 分区条目都有一个备份副本。

有关基本磁盘的详细信息,请参阅基本磁盘和动态磁盘

动态磁盘的 GPT 格式

动态磁盘最初在 Windows 2000 中引入,提供基本磁盘所不具备的功能,例如,能够创建跨多个磁盘的卷(跨区卷和带区卷),以及创建容错卷(镜像卷和 RAID-5 卷)。 动态磁盘可以在同时支持 MBR 和 GPT 的系统上使用这两种分区样式。 有关动态磁盘的详细信息,请参阅基本磁盘和动态磁盘

GPT 磁盘的 UEFI 要求

GPT 磁盘可自我标识。 解释 GPT 磁盘分区方案所需的所有信息已完全包含在位于物理介质上指定位置处的结构中。

GPT 磁盘的最大大小是多少

理论上,一块 GPT 磁盘的最大长度可为 2^64 个逻辑块。 逻辑块的大小通常为 512 字节。

最大分区(和磁盘)大小取决于操作系统版本。 Windows XP 和原始版本的 Windows Server 2003 对每个物理磁盘(包括所有分区)的大小限制为 2TB。 Windows Server 2003 SP1、Windows XP x64 版和更高版本可以支持最大 18 EB 的原始分区。 (Windows 文件系统目前限制为每个分区不超过 256 TB。)

GPT 磁盘可以包含多少个分区

该规范允许几乎无限数量的分区。 但是,Windows 实现将分区数量限制为不超过 128 个。 分区数量受限于为 GPT 中的分区条目保留的空间量。

一块磁盘是否可以同时使用 GPT 和 MBR

错误。 但是,所有 GPT 磁盘都包含一个保护性 MBR。

保护性 MBR

保护性 MBR 从扇区 0 开始,位于磁盘上的 GPT 分区表之前。 MBR 包含一个跨越磁盘的 0xEE 类型分区。

为何 GPT 包含保护性 MBR

保护性 MBR 用于保护从以前发布的 MBR 磁盘工具(例如 Microsoft MS-DOS FDISK 或 Microsoft Windows NT 磁盘管理器)对 GPT 磁盘进行的访问。 这些工具无法识别 GPT,也不知道如何正确访问 GPT 磁盘。 无法识别 GPT 的旧式软件仅在访问 GPT 磁盘时才解释受保护的 MBR。 这些工具通过解释受保护的 MBR 将 GPT 磁盘视为包含单个整体性的分区(可能未识别到),而不是将该磁盘误认为是未分区的磁盘。

为何 GPT 分区的磁盘上看似使用了 MBR

使用仅识别 MBR 的磁盘工具访问 GPT 磁盘时会发生这种情况。 有关详细信息,请参阅以下各节:

  • 如何在一块磁盘上同时使用 GPT 和 MBR
  • 保护性 MBR
  • 为何 GPT 包含保护性 MBR

Windows 磁盘支持

Windows XP x64 是否可以从 GPT 磁盘读取、写入和启动

Windows XP x64 版只能将 GPT 磁盘用作数据存储。

32 位版本的 Windows XP 是否可以从 GPT 磁盘读取、写入和启动

错误。 在 32 位版本上只能看到保护性 MBR。 不会装载 EE 分区,也不会将其公开给应用程序软件。

32 位和 64 位版本的 Windows Server 2003 是否可以从 GPT 磁盘读取、写入和启动

从 Windows Server 2003 Service Pack 1 开始,所有版本的 Windows Server 都可以使用 GPT 分区磁盘来存储数据。 只有基于 Itanium 的系统上的 64 位版本才支持启动。

Windows Vista、Windows Server 2008 和更高版本是否可以从 GPT 磁盘读取、写入和启动

是的,所有版本都可以使用 GPT 分区磁盘来存储数据。 只有基于 UEFI 的系统上的 64 位版本才支持启动。

Windows 2000、Windows NT 4 或 Windows 95/98 是否可以从 GPT 读取、写入和启动

错误。 同样,旧式软件只会看到保护性 MBR。

将 GPT 磁盘移到另一台计算机

可以将仅包含数据的 GPT 磁盘移动或迁移到运行 Windows XP(仅限 64 位版)或更高操作系统版本(32 位或 64 位版)的其他系统。 可以在系统关机或安全移除磁盘后迁移仅包含数据的 GPT 磁盘。

在同一系统上混合搭配使用 GPT 和 MBR 磁盘

如前所述,可以在支持 GPT 的系统上混用 GPT 和 MBR 磁盘。 但是,必须注意以下限制:

  • 支持 UEFI 的系统要求启动分区必须驻留在 GPT 磁盘上。 其他硬盘可以是 MBR 或 GPT 磁盘。
  • MBR 和 GPT 磁盘都可以放在单个动态磁盘组中。 卷集可以跨越 MBR 和 GPT 磁盘。

可移动介质

可移动介质必须是 MBR、GPT 或“超级软盘”。

超级软盘

不使用 GPT 或 MBR 格式的可移动介质被视为“超级软盘”。 整个介质被视为单个分区。

介质制造商对可移动介质执行任何 MBR 分区操作。 如果介质使用 MBR,则仅支持一个分区。 MBR 分区介质和超级软盘之间几乎不存在用户可识别的区别。

可移动介质的示例包括软盘驱动器、JAZ 磁盘盒、磁光介质、DVD-ROM 和 CD-ROM。 SCSI 或 IEEE 1394 等外部总线上的硬盘驱动器不被视为可移动介质。

在 2003 年发布的 Windows XP 64 位版中对介质进行分区时的默认行为是什么?

仅对于 2003 年发布的 Windows XP 64 位版而言(适用于基于 Itanium 的系统),固定磁盘将使用 GPT 分区格式进行分区。 只有在先删除所有现有分区(这会导致数据丢失)之后,才能将 GPT 磁盘转换为 MBR 磁盘。

在 32 位版本的 Windows XP、Windows Server 2003 和 Windows XP x64 中对介质进行分区时的默认行为

只能使用 MBR 磁盘。

将操作系统中的驱动器号映射到 UEFI 固件中的分区

驱动器号与分区之间不存在可用于分辨驱动器和分区的固有映射。 基本数据分区必须由其分区 GUID 标识。

创建 ESP 分区

可以使用 UEFI 固件实用工具 Diskpart.efi 或 Windows 命令行实用工具 Diskpart.exe 来创建 ESP 分区。

分区上的更改

不应直接更改任何分区磁头条目。 不要使用磁盘工具或实用工具进行改动或更改。

可卸式磁盘支持的分区

可卸式磁盘通常会在不同的计算机之间迁移,或者只是偶尔对操作系统不可用。 可卸式磁盘的示例包括 USB 磁盘,最终用户可以轻松断开其连接。 Windows XP 仅支持在可卸式磁盘上进行 MBR 分区。 更高版本的 Windows 支持在可卸式磁盘上进行 GPT 分区。

有关可移动介质的详细信息,请参阅以下问题:

  • 可移动介质
  • 超级软盘

Windows GPT 所需的分区:EFI 系统分区

可扩展固件接口系统分区 (ESP)

ESP 包含 NTLDR、HAL、Boot.txt 和启动系统所需的其他文件,例如驱动程序。 分区 GUID 定义了 ESP:

DEFINE_GUID (PARTITION_SYSTEM_GUID, 0xC12A7328L, 0xF81F, 0x11D2, 0xBA, 0x4B, 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B)

GPT 磁盘和 ESP

否,MBR 磁盘也可以包含 ESP。 UEFI 指定从 GPT 或 MBR 启动。 MBR 磁盘上的 ESP 由分区类型 0xEF 标识。 但是,Windows 不支持从 MBR 磁盘或 0xEF 分区启动 UEFI。

ESP 的大小

ESP 大约为 100MB。

在单个磁盘上包含两个 ESP

不应创建此类配置,而且 Windows 中不支持此类配置。

在两个不同的磁盘上包含两个 ESP

可以复制 ESP 分区以获得高可用性配置。 使用软件卷时,必须手动进行复制,并且必须手动同步内容。 硬件供应商可以提供其他高可用性解决方案。 无法镜像 ESP 分区。

Microsoft 在 ESP 中放置哪些内容

Microsoft 将 HAL、加载程序和启动操作系统所需的其他文件放在 ESP 中。

ESP 在磁盘上的位置

应将 ESP 放在磁盘上的第一个位置。 将 ESP 放在磁盘上的第一个位置的主要好处是,当 ESP 在逻辑上位于你要尝试跨越的两个数据分区之间时无法跨越卷。

系统或设备制造商在 ESP 中添加内容

ESP 应仅包含启动操作系统所需的文件、在操作系统启动之前运行的平台工具或者必须在操作系统启动之前访问的文件。 例如,执行预启动系统维护所需的文件必须放在 ESP 中。

在操作系统运行时使用的其他增值文件或诊断工具不应放在 ESP 中。 必须注意的是,ESP 中的空间是有限的系统资源;它的主要用途是为启动操作系统所需的文件提供存储空间。

系统制造商放置平台诊断工具或其他增值文件等文件

系统制造商的首选做法是将增值内容放在 OEM 特定的分区中。 如同 MBR OEM 分区一样,GPT OEM(或其他未识别的)分区的内容不会公开(提供驱动器号或在卷列表中返回)。 警告用户删除分区可能导致系统无法运行。 OEM 特定的分区应放在磁盘上的 MSR 之前、任何 ESP 之后。 尽管这不是体系结构的要求,但这种放置方式与将 ESP 放在第一个位置具有相同的好处。 例如,当 OEM 特定的分区在逻辑上位于你要尝试跨越的两个数据分区之间时无法跨越卷。

放置在 ESP 中是为操作系统预启动环境中执行的应用程序或文件提供的一个选项。 但是,ESP 在体系结构上是共享的空间,代表一种有限的资源。 应认真考虑 ESP 中的空间消耗。 与操作系统预启动环境无关的文件不应放在 ESP 中。

Microsoft 保留的分区 (MSR)

Microsoft 保留的分区 (MSR) 在每个磁盘驱动器上保留以后供操作系统软件后使用的空间。 GPT 磁盘不允许隐藏的扇区。 以前使用隐藏扇区的软件组件现在将为组件特定的分区分配 MSR 的一部分。 例如,将某个基本磁盘转换为动态磁盘会导致该磁盘上的 MSR 大小减小,并且新建的分区将保存动态磁盘数据库。 MSR 具有分区 GUID:

DEFINE_GUID (PARTITION_MSFT_RESERVED_GUID, 0xE3C9E316L, 0x0B5C, 0x4DB8, 0x81, 0x7D, 0xF9, 0x2D, 0xF0, 0x02, 0x15, 0xAE)

需要 MSR 的磁盘

每个 GPT 磁盘必须包含一个 MSR。 磁盘上的分区顺序应该是 ESP(如果有)、OEM(如果有)和 MSR,然后是主数据分区。 在创建其他主数据分区之前先创建 MSR,这一点特别重要。

MSR 的创建责任

在首次将磁盘分区信息写入驱动器时必须创建 MSR。 如果制造商将磁盘分区,必须同时创建 MSR。 如果 Windows 在安装过程中将磁盘分区,则 Windows 会创建 MSR。

为何在首次将磁盘分区时必须创建 MSR

将磁盘分区后,就没有剩余的可用空间用来创建 MSR。

MSR 的大小

在最初创建 MSR 后,其大小取决于磁盘驱动器的大小:

  • 在大小小于 16GB 的驱动器上,MSR 为 32MB。
  • 在大于或等于 16GB 的驱动器上,MSR 为 128MB。

随着将 MSR 划分到其他分区,它会变得更小。

Windows GPT ESP 实现

Windows 所需的分区

对于 UEFI 系统,启动驱动器必须包含一个 ESP、一个 MSR,以及至少一个包含操作系统的基本数据分区。 即使在系统上安装了多个操作系统,该系统上也只应存在一个 ESP。 在镜像启动配置中,实际上可以有两个驱动器包含 ESP,但它们被视为同一 ESP 的冗余副本。 每个数据驱动器必须至少包含一个 MSR 和一个基本数据分区。

驱动器上的所有基本数据分区都应该是连续的。 如上所述,在数据分区之间放置一个 OEM 特定的分区或其他未识别的分区会对以后的卷跨越施加限制。

基本数据分区

基本数据分区对应于主 MBR 分区 0x6 (FAT)、0x7 (NTFS) 或 0xB (FAT32)。 可以使用驱动器号或装载点和/或其他卷设备对象来装载每个基本分区。 每个基本数据分区在 Windows 中以卷设备对象的形式表示,并可以选择以装载点或驱动器号的形式表示。

标识基本数据分区

该分区具有以下分区类型 GUID

DEFINE_GUID(PARTITION_BASIC_DATA_GUID、0xEBD0A0A2L、0xB9E5、0x4433、0x87、0xC0、0x68、0xB6、0xB7、0x26、0x99、0xC7);

ESP 分区对最终用户的可见性

ESP 分区不会隐藏,但也不会为它分配驱动器号。 除非分配了驱动器号,否则它不会出现在资源管理器中,但某些工具能够列出它。

MSR 和 OEM 特定的分区对最终用户的可见性

用户在 Windows 资源管理器中看不到这些分区,而任何已识别到的文件系统也不会向旧式程序(例如上下文索引编制)公开。 OEM 特定的分区和其他未识别的分区仅在磁盘管理 MMC 管理单元中可见,因为它们没有可识别的文件系统。

Windows 默认装载的分区

Windows 仅公开基本数据分区。 可以装载其他使用 FAT 文件系统的分区,但不能以编程方式公开。 只为基本数据分区分配驱动器号或装载点。

将会装载 ESP FAT 文件系统,但不会公开。 这样,在 Windows 中运行的程序就可以更新 ESP 的内容。 使用 mountvol /s 为 ESP 分配驱动器号可以访问该分区。 访问 ESP 需要管理员特权。 尽管 MSR 以及从 MSR 创建的任何分区都可以使用可识别的文件系统,但不会公开任何此类分区。

Windows 无法识别任何 OEM 特定的分区或与其他操作系统关联的分区。 使用可识别文件系统的、未识别到的分区被视为 ESP。 将会装载这些分区,但不会公开。 与 MBR 磁盘不同,OEM 特定的分区与其他操作系统分区之间没有实际区别;所有这些分区都是“未识别”的分区。

用户如何查看 ESP、OEM 和其他未识别的分区

用户可以使用磁盘管理工具(例如磁盘管理实用工具)或 diskpart.exe Windows 命令行。 MSR 以及从 MSR 创建的任何分区只能通过命令行查看。

动态磁盘

动态磁盘使用两个不同的 GPT 分区

  • 一个对应于 MBR 分区 0x42 的数据容器分区,其 GUID 为:DEFINE_GUID (PARTITION_LDM_DATA_GUID, 0xAF9B60A0L, 0x1431, 0x4F62, 0xBC, 0x68, 0x33, 0x11, 0x71, 0x4A, 0x69, 0xAD)

  • 一个包含动态配置数据库的分区,其 GUID 为:DEFINE_GUID(PARTITION_LDM_METADATA_GUID, 0x5808C8AAL, 0x7E8F, 0x42E0, 0x85, 0xD2, 0xE1, 0xE9, 0x04, 0x34, 0xCF, 0xB3);

卷是在数据容器中创建的,默认会装载。 同样,此数据容器分区与 0x42 MBR 分区的内容完全相同。

将基本磁盘转换为动态磁盘

对于能够转换为动态磁盘的驱动器,该驱动器上的所有基本数据分区必须是连续的。 如果其他未识别的分区隔开了基本数据分区,则无法转换磁盘。 这也是在创建任何基本数据分区之前必须先创建 MSR 的原因之一。 转换过程的第一步是隔离 MSR 的一部分以创建配置数据库分区。 然后将所有不可启动的基本分区合并成单个数据容器分区。 启动分区保留为单独的数据容器分区。 这类似于主分区转换。

Windows XP 和更高版本的 Windows 与 Windows 2000 的不同之处在于,基本分区和扩展分区优先转换为单个 0x42 分区,而不是像 Windows 2000 中那样保留为多个不同的 0x42 分区。

混合了 GPT 和 MBR 动态磁盘的系统

是的。 有关详细信息,请参阅“在同一系统上混合搭配使用 GPT 和 MBR 磁盘会发生什么情况?”

装载特定的分区

可以使用下表中列出的工具访问不同类型的 GPT 磁盘分区。

工具 Windows 固件
Diskpart.efi 磁盘分区工具 ESP MSR 数据
Diskpart.exe 磁盘分区工具 ESP MSR 数据
Diskmgmt.msc 逻辑磁盘管理器 ESP 数据
Explorer.exe 文件资源管理器 数据

使用 Microsoft 平台 SDK API,你还可以开发自己的工具在 GPT 磁盘分区的基元级别访问这些分区。

如何在 Windows 中管理 GPT 磁盘

GPT 和 MBR 磁盘的管理方式相同。 可以使用 Diskpart.exe 命令提示符实用工具或磁盘管理器管理单元,将磁盘格式化为 GPT 或 MBR。 可以在 GPT 和 MBR 磁盘上创建卷,这两种磁盘可以在同一个动态磁盘组中混用。

FTdisk 集

从 Windows XP 开始,Windows 上不再支持 MBR 或 GPT 磁盘的 FTdisk 集。 只能通过动态磁盘来支持逻辑卷。

将磁盘从 GPT 转换为 MBR,或反之

Microsoft 提供了用于将磁盘从 MBR 转换为 GPT 的 MBR2GPT.exe

GPT 磁盘支持的文件系统

建议在所有基本数据分区和所有动态卷上使用 NTFS。 Windows 安装程序和磁盘管理管理单元仅提供 NTFS。 为了规避这种问题,必须通过 Format 命令行工具显式格式化分区或卷。

操作 GPT 磁盘及其内容

创建 GPT 磁盘

只能在未分区的空磁盘(原始磁盘或空的 MBR 磁盘)上创建 GPT 磁盘。 有关创建 GPT 磁盘的详细信息,请参阅使用 GPT 驱动器

转换 MBR 或 GPT 磁盘

可将现有的分区格式转换为另一种格式。 有关详细信息,请参阅以下 TechNet 文章:

不要逐扇区创建 GPT 磁盘的副本

磁盘和分区 GUID 将不再唯一。 这种情况绝对不能发生。 可以逐扇区创建 ESP 或基本数据分区的内容副本。

使用 OPK 映像工具复制整个 GPT 磁盘

可以使用 OPK 映像工具复制整个 GPT 磁盘;但是,有一些重要事项需要注意。 OEM 预安装工具包 (OPK) 会将磁盘和分区 GUID 初始化为零。 首次启动 Windows 时,操作系统将生成唯一的 GUID。 OPK 仅支持生成 ESP、MSR 和基本数据分区。

如果应用程序记录了任何磁盘或分区 GUID,则它可能会中断。 依赖于 GUID 的系统制造商或应用程序供应商提供的任何应用程序、驱动程序、实用工具或固件实现都应该能够处理从 OPK 初始化值更改为操作系统生成的值的 GUID。

Diskpart.efi MAKE 命令

OEM 可以通过 Diskpart.efi MAKE 命令简化操作系统预安装和系统恢复。 可以轻松扩展此命令,以便为平台创建“默认”磁盘配置。 例如,系统制造商可以扩展 MAKE 命令,以使用 ESP、MSR、OEM 特定的分区和一个基本数据分区自动对启动驱动器进行分区。

例如,假设有一种可能的磁盘配置,其名为 BOOT_DISK。 在发生企业故障恢复期间,MAKE BOOT_DISK 允许客户将启动磁盘完全重新分区为原始出厂默认设置。

检测重复的磁盘或分区 GUID

如果 Windows 检测到重复的磁盘或分区 GUID,它将在检测时为任何重复的磁盘 GUID、MSR 分区 GUID 或 MSR 基本数据 GUID 生成新的 GUID。 这类似于 Windows 2000 中的重复 MBR 签名处理。 动态容器或数据库分区上存在重复 GUID 会导致不可预测的结果。