转载: Windows 和 GPT 常见问题解答(UEFI、GPT、ESP、MSR之类的概念)
越来越多的主板开始采用UEFI, 老式的MBR已经跟不上发展节奏.
文章转载自MSDN, 转载不完全, 文中提及其他问题的链接请参考微软原文学习.
关于GPT
问 什么是 GPT 磁盘?
答. GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于 PC 常用的较旧的主引导记录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制。
分区是物理或逻辑磁盘上彼此连接的存储空间,就像物理上独立的磁盘一样工作。对于系统固件和已安装的操作系统来说,分区是可见的。操作系统启动之前,对分区的访问由系统固件控制,操作系统启动后则由操 作系统控制。问 MBR 分区有哪些缺陷?
答 MBR 磁盘只支持 4 个分区表项。如果想获得更多分区,需要次级结构,即扩展分区。扩展分区能够再次被分成一个或多个逻辑磁盘。
根据惯例,Windows 基于所报告的几何结构,在主轴边界上创建 MBR 磁盘分区和逻辑驱动器,但此信息不再与硬件(磁盘驱动程序或 RAID 控制器)的物理特征具有任何关系。从 Windows Vista 和 Windows Server 2008 开始,当硬件提供了更好的真实缓存或物理对齐提示时,选择了更多的逻辑边界。由于驱动器自己存储分区信息,所以操作系统不依赖于对齐方式。
MBR 分区规则很复杂并且规定不明确。例如,柱面对齐意味着每个分区在长度上至少要为一个柱面么?MBR 分区由一个 2 字节字段识别,而且需要协调以避免冲突。IBM 最初提供了这种协调方案,直到今天还没有 权威的分区标识符列表。
另一个常用的实践是使用分区的或“隐藏”扇区保存特定信息。该实践没有正式文件并且会导致难以调试的系统问题。这些年来,已经对公众发布了很多特定于供应商的实现和工具,这使支持变得很困难。问 为什么需要 GPT?
答 GPT 磁盘能够实现巨大的容量。GPT 磁盘上的分区数量不受临时方案(比如 MBR Extended Boot Record (EBR) 定义的容器分区)的限制。
GPT 磁盘分区定义明确并能够完全自动识别。平台操作的关键数据被放置在分区中而不是未分区或“隐藏”扇区中。GPT 磁盘使用原始的、备份的分区表存储冗余和 CRC32 字段,以提高分区数据结构的完整性。GPT 分区格式使用版本号和容量字段支持进一步的扩展。
每个 GPT 分区都有独特的标识 GUID 和分区内容类型,所以不需要协调即可防止分区标识符冲突。每个 GPT 分区都有一个 36 字符的 Unicode 名称。这意味着任何软件都能够呈现一个人工可读的分区名称,而无 需了解分区的其他内容。问 何处查看关于 GPT 磁盘分区的规范?
答 Extensible Firmware Interface (EFI) 规范(2.3 版)的第 5 章定义了 GPT 格式。此规范可在 http://www.uefi.org/specs// 上找到。问 基本磁盘的 GPT 格式是什么?
答 基本磁盘是 Windows 最常使用的存储类型。术语基本磁盘指的是包含分区(比如主分区和扩展分区)的磁盘,因此通常使用文件系统格式化为一个卷以进行文件存储。
针对基本磁盘的 GPT 格式如下图所示。
图1.基本磁盘的GPT格式
GPT 分区表上包含保护性的 MBR 区域,以提供与在 MBR 上操作的磁盘管理工具的向后兼容性。GPT 头定义分区项可使用的逻辑块地址的范围。GPT 头也定义了它在磁盘上的位置、其 GUID 和一个用于验证 GPT 头 完整性的 32 位循环冗余检查 (CRC32) 校验和。GUID 分区表中的每个项以分区类型 GUID 开头。16 字节的分区类型 GUID,这类似于 MBR 磁盘的分区表中的 System ID,标识分区包含的数据类型和使用分区的方 式,比如是基本磁盘还是动态磁盘。请注意,每个 GUID 分区项都有一个备份副本。
有关基本磁盘的更多信息,请参阅 MSDN 主题“基本和动态磁盘。”问 动态磁盘的 GPT 格式是什么?
答 动态磁盘在 Windows 2000 中首次引入,提供了基本磁盘所不具备的功能,比如能够创建跨越多个磁盘的卷(跨区卷和带区卷),能够创建容错卷(镜像和 RAID-5 卷)。像基本磁盘一样,动态磁盘可在同时支持 MBR 或 GPT 分区形式的系统上使用它们。
有关动态磁盘的更多信息,请参阅 MSDN 主题“基本和动态磁盘。”问 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 吗?
答 不可以。但是,所有的 GTP 磁盘都包含一个 Protective MBR。问 什么是 Protective MBR?
答 Protective MBR 从扇区 0 开始,在磁盘中先于 GPT 分区表。MBR 包含一种横跨整个磁盘的 0xEE 分区。问 为什么 GPT 要包含一个 Protective MBR?
答 Protective MBR 保护 GPT 磁盘不受以前发布的 MBR 磁盘工具(比如 Microsoft MS-DOS FDISK 或 Microsoft Windows NT 磁盘管理器)的危害。这些工具不能感知 GPT,也无法正确地访问 GPT 磁盘。不能识别 GPT 的旧软件在访问 GPT 磁盘时只解释 Protected MBR。这些工具通过解释 Protected MBR,将 GPT 磁盘看成一个封装的(可能无法识别)分区,而不是错误地当成一个未分区的磁盘。问 为什么 GPT 分区的磁盘上会有一个 MBR 呢?
答 如果出现这种情况,您一定是使用了只能感知 MRB 的磁盘工具访问 GPT 磁盘。有关更多信息,请参阅原文.
Windows XP 磁盘支持
问 Windows XP x64 能在 GPT 磁盘读取、写入和启动吗?
答 Windows XP x64版本只能使用 GPT 磁盘处理数据。问 Windows XP 32 位版本能在 GPT 磁盘上读取、写入和启动吗?
答 不能。32 位版本只能查看 Protective MBR。EE 分区将不会被装载或公开给应用程序软件。问 Windows Server 2003 的 32 位和 64 位版本能在 GPT 磁盘上读取、写入和启动吗?
答 从 Windows 2003 Server Pack 1 开始,所有 Windows Server 版本都能使用 GPT 分区磁盘进行数据操作。只有基于 Itanium 的 64 位版本支持启动。问 Windows 7、Windows Vista 和 Windows Server 2008 能在 GPT 磁盘上读取、写入和启动吗?
答 是的,所有版本都能使用 GPT 分区磁盘进行数据操作。只有基于 UEFI 的系统上的 64 位版本支持启动。问 Windows 2000、Windows NT 4 或 Windows 95/98 能在 GPT 上读取、写入和启动吗?
答 不能。旧软件只能查看 Protective MBR。问 可否将 GPT 磁盘移动到另一台计算机上?
答 您可以将仅进行数据操作的 GPT 磁盘移动或迁移到其他运行 Windows XP(仅限 64 位版本)或更新的操作系统版本(32 位或 64 位版本)的系统上。在系统关闭或安全删除磁盘之后,您可以迁移仅进行数据操作 的 GPT 磁盘。问 可以在同一个系统上混合使用和匹配 GPT 和 MBR 磁盘吗?
答 GPT 和 MBR 磁盘可以在支持 GPT 的系统上混合使用,如前所述。但是,您必须了解以下限制:
支持 UEFI 的系统要求启动分区必须位于 GPT 磁盘上。另一个硬盘可以是 MBR,也可以是 GPT。
MBR 和 GPT 磁盘可以同时存在于一个动态磁盘组中。容量设置能扩展到 MBR 和 GPT 磁盘。问 对可移动媒体有哪些要求?
答 可移动媒体必须是 MBR 或“超级软盘”。问 什么是超级软盘?
答 没有 GPT 或 MBR 格式化的可移动媒体被称为“超级软盘”。整个媒体被看成是一个分区。
媒体制造商执行可移动媒体的任何 MBR 分区。如果媒体不具备 MBR,则只能支持一个分区。用户很难辨别 MBR 分区的媒体和“超级软盘”之间的区别。
可移动媒体包括软盘驱动器、JAZ 磁盘、光盘媒体、DVD-ROM 和 CD-ROM。外部总线上的硬盘驱动器(比如 SCSI 或 IEEE 1394)不是可移动媒体。问 在对媒介进行分区时,Windows XP 64-Bit Edition Version 2003 的默认行为是什么?
答 对于 Windows XP 64-Bit Edition Version 2003 (只针对基于 Itanium 的系统)来说,使用 GPT 分区方案对固定磁盘进行分区。要将 GPT 磁盘转换成 MBR 磁盘,必须首先删除已有的分区,这会造成数据的丢失。问 在对媒体进行分区时,Windows XP 32 位版本、Windows Server 2003 和 Windows XP x64 的默认行为是什么?
答 只能使用 MBR 磁盘。问 操作系统上的驱动器号如何映射到 UEFI 固件分区?
答 在驱动器号和分区之间,不存在固有的可以确定彼此的映射。基本数据分区必须由自身的分区 GUID 标识。问 如何创建 ESP 分区?
答 可以使用 UEFI 固件实用工具 Diskpart.efi 或 Windows 命令行实用工具 Diskpart.exe 创建 ESP 分区。问 可以对分区进行更改吗?
答 您不能直接更改任何分区标题项。不要使用磁盘工具或实用工具做任何转换或更改。问 对于可分离磁盘,Windows 支持什么分区方案?
答 可分离磁盘一般可以在计算机之间移植,有时在操作系统上不可用。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。EFI 指定从 GPT 或 MBR 上启动。MBR 磁盘上的 ESP 由分区类型 0xEF 标识。但是,Windows 不支持从 MBR 磁盘或 0xEF 分区上启动 UEFI。问 ESP 有多大?
答 ESP 大约为 100 MB。问 一个磁盘可以有两个 ESP 吗?
答 在 Windows 中不能创建也不支持这样的配置。问 是否支持在两个不同磁盘上的两个 ESP 呢?
答 ESP 分区可以复制以实现高可用性配置。复制必须手动进行,而且在使用软件卷时,内容必须手动实现同步。硬件供应商可以提供针对高可用性的附加解决方案。ESP 分区不能生成镜像。问 Microsoft 在 ESP 中放了什么?
答 Microsoft 在 ESP 中放置了 HAL、加载器和启动操作系统所需的其他文件。问 ESP 应该放在磁盘上的什么位置?
答 ESP 应该放在磁盘的首要位置。当没有体系结构要求时,存在充足的理由证明为什么将 ESP 放在首要位置是有益的。主要的原因在于,当 ESP 逻辑上位于您想要跨越的两个数据分区之间时,跨越卷是不可能实现的。问 系统或设备制造商应该在 ESP 中放置什么?
答 ESP 应该只包括启动操作系统所需的文件,在操作系统启动前运行的平台工具,或者操作系统启动前必须访问的文件。例如,执行预启动系统维护时,所需的文件必须放置在 ESP 中。
其他操作系统运行时,所需的附加值文件或诊断信息不应该放置在 ESP 中。需要注意的是,ESP 中的空间是有限的系统资源,它的主要作用是为启动操作系统所必需的文件提供存储空间。问 系统制造商应该将平台诊断文件或其他附加值文件放在哪里?
答 对于系统制造商来说,首选的是将附加值内容放在特定于 OEM 的分区中。如 MBR OEM 分区一样,GPT OEM(或其他无法识别的 OEM)分区内容不是公开的(给出驱动器号或在卷列表中返回)。用户需要注意,删除 这个分区会导致操作系统无法运行。特定于 OEM 的分区在磁盘中应该放在 MSR 之前,ESP 之后。虽然不是体系结构的概念,但是这种布局的好处与将 ESP 放在首要位置一样。例如,当特定于 OEM 的分区在逻辑上 位于您想横跨的两个数据分区之间时,横跨卷是不可能实现的。
ESP 中的布局是在预操作系统启动环境中执行的应用程序或文件可以做出的一种选择。但是,ESP 是体系结构概念上的共享空间,它提供有限的资源。所以,应该认真安排 ESP 内空间的使用。与预操作系统启动环 境无关的文件不应该放在 ESP 内。
Microsoft保留分区
问 什么是 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 进行,那么在安装时创建 MSR。问 为什么必须在第一次对磁盘分区时创建 MSR?
答 因为在磁盘分区之后,不再有空间用来创建 MSR。问 MSR 有多大?
答 当最初创建的时候,MSR 的容量取决于磁盘驱动器的容量。
磁盘驱动器的容量小于 16 GB 时,MSR 为 32 MB。
磁盘驱动器的 容量大于或等于 16 GB 时,MSR 为 128 MB。
当 MSR 被进一步分成其他的分区时,容量变小。
Windows GPT ESP 实现
问 Windows 需要什么分区?
答 对于 UEFI 系统来说,每个可启动驱动器必须包含一个 ESP、一个 MSR 和至少一个包含操作系统的基本数据分区。每个数据驱动器必须包含至少一个 MSR 和一个基本数据分区。
驱动器上的所有基本数据分区都应该是连续的。如上所述,在数据分区之间设置一个特定于 OME 的或其他无法识别的分区会限制以后的卷扩展。问 什么是基本数据分区?
答 基本数据分区对应主 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、MSR 和特定于 OEM 的分区吗?
答 用户不能在 Windows 资源管理器中看到这些分区,也不会看到向旧程序(比如 Context Indexing)公开的可识别系统文件。由于 ESP、特定于 OEM 以及其他无法识别的分区不具备可识别的文件系统,所以它们只 在 Disk Management MMC 管理单元中是可见的。问 Windows 默认装入了什么分区?
答 Windows 只公开基本数据分区。其他 FAT 文件系统分区也可以被装入,但是不只以编程的方式公开。只有基本数据分区分配了驱动器号和装入点。
装入了 ESP FAT 文件系统,但它不是公开的。这使运行在 Windows 上的程序能更新 ESP 的内容。使用 "mountvol /s" 为 ESP 分配一个驱动器号,以实现对分区的访问。访问 ESP 需要管理员权限。
虽然 MSR 以及从 MSR 创建的任何分区都具备可识别的文件系统,但它们都不是公开的。
Windows 不能识别任何特定于 OEM 的分区或与其他操作系统相关的分区。具备可识别文件系统的无法识别的分区可以当作 ESP 处理。它们将被装入,但不是公开的。与 MBR 磁盘不同,特定于 OEM 的分区和其他操 作系统分区之间没有实际的区别,都是“无法识别的”。问 用户如何查看 ESP、OEM 以及其他无法识别的分区?
答 用户可以使用磁盘管理工具(比如 Disk Management 实用工具)或者 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 2000 不同的是,在 Windows XP 及更高的 Windows 操作系统版本中,基本分区和扩展分区被优先转换成一个单一的 0x42 分区,而不像在 Windows 2000 中,作为多个独特的 0x42 分区保留下来。问 一个操作系统能同时包含 GPT 和 MBR 两种动态磁盘吗?
答 可以。有关更多信息,请参阅可以在同一个系统上混合使用和匹配 GPT 和 MBR 磁盘吗?问 如何装入特定的分区?
答 您可以使用下表中所列的工具访问不同类型的 GPT 磁盘分区。工具 Windows 固件
Diskpart.efi 磁盘分区工具 ESP MSR 数据
Diskpart.exe 磁盘分区工具 ESP MSR 数据
Diskmgmt.msc 逻辑磁盘管理器 ESP 数据
Explorer.exe 文件资源管理器 数据
您也可以使用 Microsoft Platform SDK API 开发属于自己的工具,在 GPT 磁盘分区的原语级别对其进行访问。问 在 Windows 中如何管理 GPT 磁盘?
答 GPT 和 MBR 磁盘的管理方式是相同的。通过使用 Diskpart.exe 命令行实用工具或“磁盘管理器”管理单元,可以将磁盘格式成 GPT 或 MBR。可以在 GPT 和 MBR 上创建卷,并且两种磁盘能够同时出现在同一个动态 磁盘组中。问 FTdisk 集是什么情形?
答 从 Windows XP 开始,不再为 MBR 或 GPT 磁盘提供 FTdisk 集支持。唯一对逻辑卷的支持通过动态磁盘实现。问 磁盘能从 GPT 转换成 MBR 吗,或者相反?
答 可以,但是磁盘中不得存在分区或卷。问 GPT 磁盘支持什么文件系统?
答 建议在所有基本数据分区和动态卷上使用 NTFS。Windows 安装和“磁盘管理”管理单元只提供 NTFS。要避开此缺陷,必须通过 Format 命令行工具对分区和卷进行明确地格式化。
操作 GPT 磁盘及其内容
问 可以进行针对 GPT 磁盘的扇区到扇区复制吗?
答 不可以,磁盘和分区 GUID 不再是唯一的。永远不能执行这种操作。您可以进行针对 ESP 内容或基本数据分区的扇区到扇区复制。问 有没有使用 OPK 映像工具复制整个 GPT 磁盘的方法?
答 有。但是存在一些重要的注意事项。OEM 预安装工具包 (OPK) 会将磁盘和分区 GUID 初始化为 0。在 Windows 第一次启动时,操作系统生成独特的 GUID。OPK 只支持生成 ESP、MSR 和基本数据分区。
如果应用程序已经记录了任何它可能破坏的任何磁盘或分区 GUID。任何由系统制造商或应用程序供应商提供的、依赖 GUID 的应用程序、驱动程序或固件执行工具都应该能够处理那些从 OPK 初始化值变为操作系统 生成值的 GUID。问 什么是 Diskpart.efi MAKE 命令?
答 它是一种用来简化操作系统预安装和系统恢复的 OEM 方法。这个命令能轻松扩展,以为平台创建“默认”磁盘配置。例如,系统制造商能够扩展 MAKE 命令,以自动对启动驱动器进行分区,以形成一个 ESP、一个 MSR、一个特定于 OEM 的分区和一个基本数据分区。
例如,考虑一个名为 BOOT_DISK 的磁盘配置。在对业务故障恢复的事件中,MAKE BOOT_DISK 允许客户对启动磁盘进行完全地重分区以还原为出厂设置。问 如果检测到一个重复的磁盘或分区 GUID 会出现什么情况?
答 Windows 将为任何检测到的重复磁盘 GUID、MSR 分区 GUID 或 MSR 基本数据 GUID 生成新的 GUID。这与在 Windows 2000 中对重复 MBR 签名的处理方式类似。动态容器或数据库分区上的重复 GUID 可能导致不可预知的后果。
End
评论已关闭!