GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于以往 PC 普遍使用的主引导记录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制。
分区指物理或逻辑磁盘上彼此连接的存储空间,但提供功能时就像物理上分隔的磁盘一样。对于系统固件和已安装的操作系统来说,分区是可见的。操作系统启动之前,对分区的访问由系统固件控制,操作系统启动后则由操作系统控制。
2. MBR 分区有哪些缺陷?
MBR 磁盘只支持 4 个分区表项。如果想获得更多分区,需要次级结构,即扩展分区。扩展分区能够再次被分成一个或多个逻辑磁盘。虽然该信息与硬件(磁盘驱动程序或 RAID 控制器)的物理特性不再有任何关系,但按照惯例,Windows 仍然在基于报告的几何图形柱面界限上创建 MBR 磁盘和逻辑驱动器。对于 Windows Vista 和 Windows Server 2008,由于硬件提供更好的真实缓存和物理对齐提示,所以能够选择更有逻辑的界限。由于驱动器自己存储分区信息,所以操作系统不依赖于对齐方式。MBR 分区规则很复杂并且规定不明确。例如,柱面对齐意味着每个分区在长度上至少要为一个柱面吗?MBR 分区由一个 2字节字段标识,而且需要协调以避免冲突。IBM 最初提供了这种协调方案,直到今天还没有权威的分区标识符列表。
另一个常用的实践是使用分区的或“隐藏”扇区保存特定信息。该实践没有正式文件并且会导致难以调试的系统问题。这些年来,已经对公众发布了很多供应商独有的实现和工具,这使支持变得很困难。
3. 为什么需要 GPT?
GPT 磁盘能够实现巨大的容量。GPT 磁盘上的分区数量不受临时方案(比如 MBR Extended Boot Record (EBR) 定义的容器分区)的限制。
GPT 磁盘分区定义明确并能够完全自动识别。平台操作的关键数据被放置在分区中而不是未分区或“隐藏”扇区中。GPT 磁盘使用原始的、备份的分区表存储冗余和 CRC32 字段,以提高分区数据结构的完整性。GPT 分区格式使用版本号和容量字段支持进一步的扩展。
每个 GPT 分区都有独特的标识 GUID 和分区内容类型,所以不需要协调即可防止分区标识符冲突。每个 GPT 分区都有一个 36 字符的 Unicode 名称,这意味着任何软件都能够呈现一个人工可读的分区名称,而无需了解分区的其他内容。
4. 何处查看关于 GPT 磁盘分区的规范?
Extensible Firmware Interface (EFI) 规范的第 16 章定义了 GPT 格式。可在以下地址中获得该文档:http://developer.intel.com/ technology/ efi/ download.htm。
5.GPT 磁盘需要 EFI 吗?
不需要,GPT 磁盘是自动识别的。所有用于解释 GPT 磁盘分区方案所需的信息完全包含在物理媒介指定位置的结构中。
6. GPT 磁盘容量有多大?
理论上,GPT 磁盘在长度上最大可达 2^64 个逻辑块。逻辑块容量一般为 512 字节。
最大分区(磁盘)容量受操作系统版本的影响。Windows XP 和 Windows Server 2003 的原始版本中,每个物理磁盘的最大容量为 2TB,包括所有分区。对于 Windows Server 2003 SP1 Windows XP x64 版本和以后的版本,支持的最大原始分区为 18 EB。(Windows 文件系统目前的限制为每个 256 TB)
7. 每个 GPT 磁盘可以有多少个分区?
规范对分区数量几乎没有限制,但是 Windows 实现限制的分区数量为 128 个。GPT 中的分区条目的保留空间大小会限制分区数量。
8. 磁盘可以同时是 GPT 和 MBR 吗?
不可以。但是,所有的 GTP 磁盘都包含一个 Protective MBR。
9. 什么是 Protective MBR?
Protective MBR 从扇区 0 内开始,在磁盘中先于 GPT 分区表。MBR 包含一种横跨整个磁盘的 0xEE 分区。
10. 为什么 GPT 要包含一个 Protective MBR?
Protective MBR 保护 GPT 磁盘不受以前发布的 MBR 磁盘工具(如 Microsoft MS-DOS FDISK 或 Microsoft Windows NT 磁盘管理器)的危害。这些工具不能感知 GPT,也无法正确地访问 GPT 磁盘。不能识别 GPT 的旧软件在访问 GPT 磁盘时只解释 Protected MBR。这些工具通过解释 Protected MBR,将 GPT 磁盘看成一个封装的(可能无法识别)分区,而不是错误地当成一个未分区的磁盘。
11. 为什么分区的磁盘上会有一个 MBR 呢?
如果出现这种情况,您一定是使用了只能感知 MRB 的磁盘工具访问 GPT 磁盘。参阅上文第 8 条至第 10 条中的答案。
12. 如果磁盘容量大于 MBR 能够报告的最大容量,整个磁盘内容会受保护么?
Protective MBR 中的 EE 分区是 MBR 中允许的最大容量。
Windows XP 磁盘支持
13. Windows XP x64 能在 GPT 磁盘上读、写和启动么?
Windows XP x64 版本只能使用 GPT 磁盘进行数据操作。只有基于 Itanium 的 Windows 系统才能从 GPT 分区上启动。
14. Windows XP 32 位版本能在 GPT 磁盘上读、写和启动吗?
不能。32 位版本只能查看 Protective MBR。EE 分区将不会被装载或公开给应用软件。
15. Windows Server 2003 的 32 位版本能在 GPT 磁盘上读、写和启动吗?
Server Pack 1 以后的所有 Windows 2003 版本都能使用 GPT 分区磁盘进行数据操作。只有基于 Itanium 的系统支持启动。
16. Windows Vista 和 Windows Server 2008 能在 GPT 磁盘上读、写和启动吗?
是的,所有版本都能使用 GPT 分区磁盘进行数据操作。只有基于 EFI 的系统支持启动。
17. Windows 2000、Windows NT 4 或 Windows 95/98 能在 GPT 上读、写和启动吗?
不能。旧软件只能查看 Protective MBR。
18. 可以在同一个系统上混合使用和匹配 GPT 和 MBR 磁盘吗?
GPT 和 MBR 可以在支持 GPT 的系统上混合使用,但如前所述,需要遵循以下限制:
可移动媒介必须是 MBR 或“超级软盘”。
20. 什么是“超级软盘”?
没有 GPT 或 MBR 格式化的可移动媒介被称为“超级软盘”。整个媒介被看成是一个分区。
媒介制造商执行可移动媒介的任何 MBR 分区。如果媒介不具备 MBR,则只能支持一个分区。用户很难辨别 MBR 分区的媒介和“超级软盘”之间的区别。
可移动媒介包括软盘驱动器、JAZ 磁盘、光盘媒介、DVD-ROM 和 CD-ROM。外部总线上的硬盘驱动器(如 SCSI 或 IEEE 1394)不是可移动媒介。
21. 在对媒介进行分区时,Windows XP 64-Bit Edition Version 2003 的默认行为是什么?
对于 Windows XP 64-Bit Edition Version 2003 (只针对基于 Itanium 的系统)来说,使用 GPT 分区方案对固定磁盘分区。要将 GPT 磁盘转换成 MBR 磁盘,必须首先删除已有的分区,这会造成数据的丢失。
22. 在对媒介进行分区时,Windows XP 32 位版本、Windows Server 2003 和 Windows XP x64 的默认行为是什么?
只能使用 MBR 磁盘。MBR 磁盘不能转换成 GPT 磁盘。
23. 操作系统上的驱动器名如何映射到 EFI 固件分区?
在驱动器名和分区之间,不存在固有的可以确定彼此的映射。基本数据分区必须由自身的分区 GUID 识别。
24. 如何创建 ESP 分区?
可以使用 EFI 固件实用工具 Diskpart.efi 或 Windows 命令行实用工具 Diskpart.exe 创建 ESP 分区,也可以使用 IOCTL_DISK_SET_DRIVE_LAYOUT 以编程方式创建 ESP 分区。
25. 可以对分区进行更改吗?
您不能直接更改任何分区标题项。不要使用磁盘工具或实用工具做任何转换或更改。
26. 对于可分离磁盘,Windows XP 支持什么分区方案?
可分离磁盘一般可以在机器之间移植,有时在操作系统上不可用。IEEE 1394 磁盘就是一个可分离磁盘的示例,最终用户可以轻松断开连接;另一个示例是 Microsoft Cluster Services (MSCS) 共享磁盘,它可以在群集的节点间移动。
Windows XP 仅支持在可分离磁盘上进行 MBR 分区。有关可移动媒介的更多信息,请参阅问题 19-21。Windows 的更高版本支持在可分离磁盘上进行 GPT 分区。
Windows GPT 需要的分区EFI 系统分区27. 什么是 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)28. 只有 GPT 磁盘具备 ESP 吗?不,MBR 磁盘也可以具备 ESP。EFI 指定从 GPT 或 MBR 上启动。MBR 磁盘上的 ESP 由分区类型 0xEF 标识。但是,Windows 不支持从 MBR 磁盘或 0xEF 分区上启动 EFI。
29. ESP 有多大?ESP 大约为 100 MB。
30. 一个磁盘可以有两个 ESP 吗?
不能创建也不支持这样的配置。
31. 那么,在两个不同磁盘上的两个 ESP 呢?
ESP 分区可以复制以实现高可用性配置。复制必须人工进行,而且在使用软件卷时,内容必须人工实现同步。硬件供应商可以提供针对高可用性的附加解决方案。ESP 分区不能生成镜像。
32. Microsoft 在 ESP 中放了什么?
Microsoft 在 ESP 中放置了 HAL、加载器和其他启动操作系统所需的文件。
33. ESP 应该放在磁盘的什么位置?
ESP 应该放在磁盘的首要位置。当没有体系结构要求时,存在充足的理由证明为什么将 ESP 放在首要位置是有益的。主要的原因在于,当 ESP 逻辑上位于您想要跨越的两个数据分区之间时,跨越卷是不可能实现的。
34. 系统或设备制造商应该在 ESP 中放置什么?
ESP 应该只包括用于启动操作系统的文件,在操作系统启动前运行的平台工具,或者操作系统启动前必须访问的文件,例如在执行预启动系统维护时。其他操作系统运行时所需的附加文件或诊断信息不应该放在 ESP 中。需要明确的是:ESP 的空间是有限的系统资源,它的主要作用是为启动操作系统必需的文件提供存储空间。
35. 系统制造商应该将平台诊断文件或其他附加文件放在哪里?
对于系统制造商来说,首选的是将附加内容放在特定于 OEM 的分区中。如 MBR OEM 分区一样,GPT OEM(或其他无法识别的 OEM)分区内容不是公开的(给出驱动器名或在卷列表中返回)。用户需要注意,删除这个分区会导致操作系统无法运行。特定于 OEM 的分区在磁盘中应该放在 MSR 之前,ESP 之后。虽然不是体系结构的概念,但是这种布局的好处与将 ESP 放在首要位置一样。例如,当特定于 OEM 的分区逻辑上位于您想横跨的两个数据分区之间时,横跨卷是不可能实现的。
ESP 中的布局是在预操作系统启动环境中执行的应用程序或文件可以做出的一种选择。但是,ESP 是体系结构概念上的共享空间,它提供有限的资源。所以,应该认真安排 ESP 内空间的使用。与预操作系统启动环境无关的文件不应该放在 ESP 内。
Microsoft 保留分区36. 什么是 Microsoft 保留分区 (MSR)?
Microsoft 保留分区 (MSR) 在每个磁盘驱动器上保留空间以供以后的操作系统软件使用。GPT 磁盘不支持隐藏的扇区。以前使用隐藏扇区的软件组件现在为特定于组件的分区分配部分 MSR。例如,将基本磁盘转换为动态磁盘会导致该磁盘的 MSR 减少,由新创建的分区保留动态磁盘数据库。MSR 具备 Partition GUID:
DEFINE_GUID (PARTITION_MSFT_RESERVED_GUID, 0xE3C9E316L, 0x0B5C, 0x4DB8, 0x81, 0x7D, 0xF9, 0x2D, 0xF0, 0x02, 0x15, 0xAE)37. 哪些磁盘需要 MSR?
每个 GPT 磁盘都必须包含一个 MSR。磁盘上分区的顺序应该为 ESP(如果有)、OEM(如果有)、MSR,后跟基本数据分区。非常重要的一点是:一定要在基本数据分区之前创建 MSR。
38. 谁来创建 MSR?
必须在磁盘分区信息第一次写入驱动器的时候创建 MSR。如果分区由制造商进行,那么制造商必须同时创建 MSR。如果分区由 Windows 进行,那么在安装时创建 MSR。
39. 为什么必须在第一次对磁盘分区时创建 MSR?
因为在磁盘分区之后,不再有空间用来创建 MSR。
40. MSR 多大?
当最初创建的时候,MSR 的容量决定于磁盘驱动器的容量。
Windows GPT ESP 实现41. Windows XP 需要什么分区?
对于 EFI 系统来说,每个可启动驱动器必须包含一个 ESP、一个 MSR 和至少一个包含操作系统的基本数据分区。每个数据驱动器必须包含至少一个 MSR 和一个基本数据分区。
驱动器上的所有基本数据分区都应该是连续的。如上所述,在数据分区之间设置一个特定于 OME 的或其他无法识别的分区会限制以后的卷扩展。
42. 什么是基本数据分区?
基本数据分区对应主要 MBR 分区 0x6 (FAT)、0x7 (NTFS) 或 0xB (FAT32)。每个基本分区都能使用驱动器名或装入点、其他的卷设备对象进行装入。每个基本数据分区在 Windows 以卷设备对象的形式呈现,也可以作为一个装入点或驱动器名。
43. 如何标识基本数据分区?
它有以下分区类型 GUID:
DEFINE_GUID (PARTITION_BASIC_DATA_GUID、0xEBD0A0A2L、0xB9E5、0x4433、0x87、0xC0、 0x68、 0xB6、0xB7、0x26、0x99、0xC7。44. 最终用户可以查看 ESP、MSR 和特定于 OEM 的分区吗?
用户不能在 Windows 资源管理器中查看这些分区,也不能查看向旧程序(如 Context Indexing)公开的可识别系统文件。由于 ESP、特定于 OEM 以及其他无法识别的分区不具备可识别的文件系统,所以它们只在 Disk Management MMC 管理单元中是可见的。
45. Windows 默认装入了什么分区?Windows XP 只公开基本数据分区。其他 FAT 文件系统分区也可以被装入,但是不只以编程的方式公开。只有基本数据分区分配了驱动器名和装入点。
装入了 ESP FAT 文件系统,但它不是公开的。这使运行在 Windows 上的程序能更新 ESP 的内容。使用 “mountvol /s” 为 ESP 分配一个驱动器名能够实现对分区的访问。访问 ESP 需要管理员权限。
虽然 MSR 以及从 MSR 创建的任何分区都具备可识别的文件系统,但它们都不是公开的。
Windows 不能识别任何特定于 OEM 的分区或与其他操作系统相关的分区。具备可识别文件系统的无法识别的分区可以当作 ESP 处理。它们将被装入,但不是公开的。与 MBR 磁盘不同,特定于 OEM 的分区和其他操作系统分区之间没有实际的区别,都是“无法识别的”。
46. 用户如何查看 ESP、OEM 以及其他无法识别的分区?
用户可以使用磁盘管理工具(如 Disk Management 实用工具)或者 diskpart.exe Windows 命令行来查看。MSR 和任何从 MSR 上创建的分区仅能通过命令行查看。
47. 动态磁盘的情形是怎么样的?
动态磁盘使用两个不同的 GPT 分区:
48. 将一个基本磁盘转换成动态磁盘会出现什么情况?
对于一个能够转换成动态磁盘的驱动器来说,驱动器上的所有数据库分区必须是相连的。如果其他无法识别的分区分隔了基本数据分区,则磁盘不能转换。这也是为什么要在基本数据分区之前创建 MSR 的原因之一。
第一步是要从 MSR 中分隔出一部分用来创建配置数据库分区。然后所有不可启动的基本分区被合并到一个数据容器分区内。启动分区会作为分隔的数据容器分区保留下来。这类似于主要分区的转换。
与 Windows 2000 不同的是,在 Windows XP 及以后版本的 Windows 操作系统中,基本分区和扩展分区被优先转换成一个单一的 0x42 分区,而不像在 Windows 2000 中,作为多个独特的 0x42 分区保留下来。
49. 一个操作系统能同时包含 GPT 和 MBR 两种动态磁盘吗?
是的。参阅本文第 18 条。
50. 如何装入某个指定分区?
您可以使用下表中所列的工具访问不同类型的 GPT 磁盘分区:
您也可以使用 Microsoft Platform SDK API 开发属于自己的工具,在 GPT 磁盘分区的原语级别对其进行访问。
51. Windows 中如何管理 GPT 磁盘?
GPT 和 MBR 磁盘的管理方式是相同的。通过使用 Diskpart.exe 命令行实用工具或“磁盘管理器”管理单元,可以将磁盘格式成 GPT 或 MBR。可以在 GPT 和 MBR 上创建卷,并且两种磁盘能够同时出现在同一个动态磁盘组中。
52. FTdisk 集是什么情形?
在 Windows XP 或以后的版本中,不再为 MBR 或 GPT 磁盘提供 FTdisk 集支持。唯一对逻辑卷的支持通过动态磁盘实现。
53. 磁盘能从 GPT 转换成 MBR 吗?或者相反?
可以,但是磁盘中不得存在分区或卷。磁盘上的数据都将毁坏。
54. GPT 磁盘支持什么文件系统?
建议在所有基本数据分区和动态卷上使用 NTFS。Windows 安装和“磁盘管理”管理单元只提供 NTFS。要避开此缺陷,必须通过 Format 命令行工具对分区和卷进行明确地格式化。
操作 GPT 磁盘及其内容。55. 可以进行针对 GPT 磁盘的扇区到扇区复制吗?
不可以,磁盘和分区 GUID 不再是唯一的。永远不能执行这种操作。您可以进行针对 ESP 内容或基本数据分区的扇区到扇区复制。
56. 有没有使用 OPK 映像工具复制整个 GPT 磁盘的方法?
是的,但是存在一些重要的注意事项。OEM 预安装工具包 (OPK) 会将磁盘和分区 GUID 初始化为 0。在 Windows 第一次启动时,操作系统生成独特的 GUID。OPK 只支持生成 ESP、MSR 和基本数据分区。
如果应用程序已经记录了任何它可能破坏的任何磁盘或分区 GUID。任何由系统制造商或应用程序供应商提供的、依赖 GUID 的应用程序、驱动程序或固件执行工具都应该能够处理那些从 OPK 初始化值变为操作系统生成值的 GUID。
57. 什么是 Diskpart.efi MAKE 命令?
它是一种用来简化操作系统预安装和系统恢复的 OEM 方法。这个命令能轻松扩展,以为平台创建“默认”磁盘配置。例如,系统制造商能够扩展 MAKE 命令,以自动对启动驱动器进行分区,以形成一个 ESP、一个 MSR、一个特定于 OEM 的分区和一个基本数据分区。
例如,考虑一个名为 BOOT_DISK 的磁盘配置。在对业务失败恢复的事件中,MAKE BOOT_DISK 允许客户对启动磁盘进行完全地重分区,还原为出厂设置。
58. 如果检测到一个重复的磁盘或分区 GUID 会出现什么情况?