Windows 和 GPT 常见问题解答

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

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

由于引入了个人计算机,硬盘上的数据存储区域已划分为多个较小的区域。 这些扇区分为多个分区,在磁盘上创建单独的卷或 "驱动器"。 分区是使用称为 "主启动记录" (MBR) 的方案组织的。 MBR 是磁盘上存在的每个分区的磁盘位置表,以及每个分区的特定长度。 MBR 本身占用少量磁盘,并在启动阶段读取,以确定启动进入的操作系统的位置。 操作系统也使用 MBR 信息作为磁盘上的卷的映射。

最终,磁盘的数据密度对于 MBR 方案而言太大,无法用于所有可用数据位置。 另外,MBR 的布局或格式是为早期计算机设计的,并且不能灵活地适应更高的磁盘配置。 需要一个新的分区方法,以便创建 GUID 分区表 (GPT) 分区方案。

GPT

什么是 GPT 磁盘

GUID 分区表 (GPT) 作为统一可扩展固件接口 UEFI (UEFI) 的一部分引入。 GPT 为磁盘分区提供了比旧主启动记录更灵活的机制 (电脑) MBR 分区方案。

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

MBR 分区出现问题

MBR 磁盘仅支持四个分区表条目。 对于四多个分区,需要一个称为扩展分区的辅助结构。 然后,扩展分区可以细分为一个或多个逻辑磁盘。

Windows基于报告的几何图形在柱面边界上创建 MBR 磁盘分区和逻辑驱动器,尽管此信息不再与硬件 (磁盘驱动程序或 RAID 控制器设备的物理特征) 。 从 Windows Vista 和 Windows Server 2008 开始,当硬件在真实缓存或物理对齐方面提供更好的提示时,会选择更多逻辑边界。 由于此分区信息存储在驱动器本身上,因此操作系统不依赖于对齐方式。

MBR 分区规则很复杂,并且指定得非常差。 例如,柱面对齐是否意味着每个分区的长度必须至少为一个柱面? MBR 分区由一个双字节字段标识,并且需要协调以避免冲突。 IBM 最初提供了这种协调,但现在没有分区标识符的单一权威列表。

另一种常见做法是使用分区扇区或"隐藏"扇区通过未记录的进程来保存特定信息,导致难以调试的问题。 过去,供应商特定的实现和工具已发布给公众,这给支持提供了困难。

为何需要 GPT

GPT 磁盘允许增长。 GPT 磁盘上的分区数不受临时方案(如 EBR 扩展启动记录 (定义的容器分区) 。 GPT 磁盘分区格式定义良好且完全自标识。 对平台操作至关重要的数据位于分区中,而不是在未分区或"隐藏"扇区中。 GPT 磁盘使用主分区表和备份分区表实现冗余,使用 CRC32 字段改进分区数据结构完整性。 GPT 分区格式使用版本号和大小字段进行将来的扩展。

每个 GPT 分区都有唯一的标识 GUID 和分区内容类型,因此无需协调来防止分区标识符冲突。 每个 GPT 分区都有一个 36 个字符的 Unicode 名称。 这意味着,任何软件都可以提供分区的可读名称,而无需对分区进行任何其他了解。

在哪里可以找到 GPT 磁盘分区的规范

统一可扩展固件接口 UEFI (UEFI) 规范第 5 (2.3 版) 定义了 GPT 格式。 此规范在 中提供 https://www.uefi.org/specifications

基本磁盘的 GPT 格式

基本磁盘是最常用的存储类型,具有Windows。 "基本磁盘"是指包含分区(例如主分区和逻辑驱动器)的磁盘,通常使用文件系统进行格式化,以成为文件存储的卷。

GPT 分区表上的保护性 MBR 区域存在,用于与在 MBR 上操作的磁盘管理实用工具向后兼容。 GPT 标头定义分区条目可用的逻辑块地址范围。 GPT 标头还定义其磁盘位置、GUID 和 32 位循环冗余检查 (CRC32) 校验和,用于验证 GPT 标头的完整性。 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 个字节。 (Windows文件系统目前限制为 256 TB。)

GPT 磁盘可以具有多少个分区

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

磁盘是否可以同时为 GPT 和 MBR

否。 但是,所有 GPT 磁盘都包含保护 MBR。

保护性 MBR

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

为什么 GPT 具有保护 MBR

保护 MBR 保护 GPT 磁盘免受以前发布的 MBR 磁盘工具(如 Microsoft MS-DOS FDISK 或 Microsoft Windows NT磁盘管理员)的保护。 这些工具不知道 GPT,并且不知道如何正确访问 GPT 磁盘。 不知道 GPT 的旧软件在访问 GPT 磁盘时仅解释受保护的 MBR。 这些工具通过解释受保护的 MBR 将 GPT 磁盘视为具有单个包含 (可能无法识别的) 分区,而不是为未分区的磁盘使用磁盘。

为什么 GPT 分区的磁盘似乎具有 MBR

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

  • 磁盘如何同时为 GPT 和 MBR
  • 保护性 MBR
  • 为什么 GPT 具有保护 MBR

Windows磁盘支持

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

Windows XP x64 Edition 只能对数据使用 GPT 磁盘。

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

否。 32 位版本将仅看到保护 MBR。 系统企业版不会装载或向应用程序软件公开该分区。

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 位版本的启动。

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

否。 同样,旧软件将仅看到保护性 MBR。

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

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

在同一系统上混合并匹配 GPT 和 MBR 磁盘

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

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

可移动媒体

可移动媒体必须是 MBR、GPT 或 "superfloppy"。

Superfloppy

不带 GPT 或 MBR 格式的可移动媒体被视为 "superfloppy"。 整个媒体被视为单个分区。

媒体制造商对可移动媒体执行任何 MBR 分区。 如果媒体具有 MBR,则仅支持一个分区。 MBR 分区媒体和 superfloppies 之间的差别很小。

可移动媒体的示例包括软盘驱动器、JAZ 磁盘盒、光盘媒体、DVD-ROM 和 cd-rom。 外部总线(如 SCSI 或 IEEE 1394)上的硬盘驱动器不被视为可移动设备。

对媒体进行分区时,Windows XP 64 位版本2003的默认行为是什么?

对于 Windows XP 64 位版本2003仅 (对于基于 Itanium 的系统) ,使用 GPT 分区对固定磁盘进行分区。 只有在第一次删除所有现有分区时,才会将 GPT 磁盘转换为 MBR 磁盘,并会丢失数据。

对媒体进行分区时,32位版本的 Windows XP 的默认行为,Windows Server 2003 和 Windows XP x64

只能使用 MBR 磁盘。

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

驱动器号和分区之间没有可用于确定另一个的固有映射。 基本数据分区必须由其分区 GUID 标识。

创建 ESP 分区

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

对分区所做的更改

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

可分离磁盘上支持的分区

可分离磁盘通常应在计算机之间迁移,或仅在计算机上可供操作系统使用。 可分离磁盘的示例有 USB 磁盘,最终用户可以轻松地断开连接。 Windows XP 仅支持可分离磁盘上的 MBR 分区。 更高版本的 Windows 支持可分离磁盘上的 GPT 分区。

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

  • 可移动媒体
  • Superfloppy

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 磁盘和 ESPs

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

ESP 的大小

ESP 约为100MBs。

单个磁盘上有两个 ESPs

不应创建此类配置,Windows 中不支持这样做。

两个 ESPs 在两个不同的磁盘上

可以复制 ESP 分区以实现高可用性配置。 必须手动完成复制,使用软件卷时必须手动同步内容。 硬件供应商可能会提供更多的高可用性解决方案。 无法镜像 ESP 分区。

ESP 中的 Microsoft 位置

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

磁盘上的 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。 如果任何) ,OEM (如果任何) 和 MSR 后跟主数据分区 () ,则磁盘上分区的顺序应为 ESP (。 尤其重要的是,在其他主数据分区之前创建 MSR。

MSR 的创建责任

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

为什么首次分区磁盘时必须创建 MSR

对磁盘进行分区后,没有剩余可用空间来创建 MSR。

MSR 的大小

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

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

因为 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 资源管理器中公开,也不会向旧的程序(如上下文索引)公开任何可识别的文件系统。 仅在 "磁盘管理" MMC 管理单元中显示特定于 OEM 的和其他无法识别的分区,因为它们没有可识别的文件系统。

默认情况下,装入的分区 Windows

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

ESP FAT 文件系统已装载,但未公开。 这允许在 Windows 下运行的程序更新 ESP 的内容。 使用将驱动器号分配给 ESP mountvol /s 会允许访问分区。 对 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 的 Windows XP 和更高版本与 Windows 2000 的不同之处在于,基本分区和扩展分区优先转换为单个0x42 分区,而不是保留为多个不同的0x42 分区,因为 Windows 2000。

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

是的。 有关详细信息,请参阅如何在同一系统上混合和匹配 GPT 和 MBR 磁盘?

装载特定的分区

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

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

通过使用 Microsoft Platform SDK Api,你还可以开发自己的工具来访问其基元级别的 GPT 磁盘分区。

如何在中管理 GPT 磁盘 Windows

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

FTdisk 集

从 Windows XP 开始,不存在针对 MBR 或 GPT 磁盘的 Windows 的 FTdisk set 支持。 对逻辑卷的唯一支持是通过动态磁盘。

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

Microsoft 提供 MBR2GPT.exe 将磁盘从 MBR 转换为 GPT。

GPT 磁盘上支持的文件系统

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

操作 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 MAKE 命令

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

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

检测重复的磁盘或分区 GUID

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