对于 GPT 磁盘 Microsoft DISKPART 命令
list partition
将某些分区定义为Primary
与磁盘管理实用程序类似。
但 MBR 方案的旧主/扩展分区正是 GPT 标准想要解决的问题。
例如,Windows 分区在 Microsoft 术语中定义为基本数据分区 DISKPART 将 (GUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7) 报告为Primary
。具有讽刺意味的是,Linux 对应实用程序fdisk
正确地将其报告为Microsoft basic data
如果将磁盘从基本磁盘转换为动态磁盘,则 BDP 会正确报告类型Dynamic Data
。
我曾寻找有关 DISKPART 术语的参考资料(关于list partition
命令),但没有找到。此外,在当前Microsoft GPT 实施,没有任何迹象表明这一点。
这种分区类型到底是什么?它只是 BDP 分区的一个友好名称吗?
编辑
对于某些人来说,我问的是什么不清楚。很抱歉。尝试这样做:
Diskpartlist part
命令将一些 GPT 分区标记为Type: Primary
。由于 GPT 规范中没有主分区的定义,您能否提供:
- GPT 主分区的定义?
- 非主 GPT 分区的一个例子?
答案1
术语可能会令人困惑,因为其中一些术语更多的是公认的做法,而不是正式标准文档中定义的任何内容,而且人们经常误用术语。不同圈子的人对事物的引用方式也有所不同。例如,Windows 用户通常将分区称为“驱动器”,而在 Linux 中,“驱动器”一词通常指物理硬盘,而在 macOS 中,“卷”一词通常用于分区。这就像关于英式英语和美式英语的俏皮话:我们因共同的语言而分裂。
无论如何,为 MBR 设计并随后适用于 GPT 的旧分区工具通常会将“主”一词应用于所有 GPT 分区。正如您所说,这在最好的情况下毫无意义,在最坏的情况下可能会造成混淆,但原因似乎是程序的数据结构和/或用户界面坚持要应用“主”、“扩展”或“逻辑”标签,而最接近 GPT 分区的是“主”,因此这就是显示的那个。
这与分区的类型代码不同。在 MBR 下,这是一个 1 字节值,通常(但并非总是)以十六进制表示,例如 NTFS(或 HPFS)的 0x07 或 FAT-32 LBA 的 0x0c。在 GPT 下,类型代码是一个 16 字节 GUID 值,例如 Windows“基本数据”分区(普通 FAT 或 NTFS 分区)的 EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 或 EFI 系统分区 (ESP) 的 C12A7328-F81F-11D2-BA4B-00A0C93EC93B。这些 GPT 类型代码很笨拙,人们很难记住,因此大多数工具要么不明确显示它们,要么通过将它们映射到名称或助记符代码来显示它们。不过,这些映射往往对于特定程序来说是独一无二的,因此程序 A 呈现它们的方式可能与程序 B 呈现它们的方式不同。还请注意,从 MBR 到 GPT 类型代码的映射不是 1:1。有时有一个非常清晰的映射(例如 MBR 的 0x83,它用于 Linux 文件系统,它清楚地映射到 GPT 中的 0FC63DAF-8483-4772-8E79-3D69D8477DE4);但其他时候,在一个分区表方案或另一个分区表方案中可能没有等效项(例如 GPT 的 21686148-6449-6E6F-744E-656564454649,用于 BIOS 启动分区,没有 MBR 等效项),或者一个系统中的一个代码可能映射到另一个系统中的多个代码(例如 GPT 的 EBD0A0A2-B9E5-4433-87C0-68B6B72699C7,或 Windows 基本数据分区,它映射到多个 MBR 类型代码)。
答案2
你只是做了一个错误的类比。MBR 分区表中的分区也有分区类型,但它们不是主/扩展/逻辑分区,而是这些:
https://en.m.wikipedia.org/wiki/Partition_type#List_of_partition_IDs
只是在 MBR 分区表中,类型采用单字节 ID(有时称为代码)的形式,而在 GPT 中,类型采用 GUID 的形式。
该字段填写“主要”只是因为没有必要为 GPT 中的分区创建另一个术语。您可能会争辩说,微软本可以将该字段留空,但我想这不是他们的风格,因为他们可能担心用户看到这样的字段留空时会感到恐慌。
答案3
就 GPT 主分区而言,情况如下:
想象一下分区表。MBR 和 GPT 并非完全不同,也没有任何相似之处。它们仍然是表。我实际上更喜欢将 MBR 分区方案称为 MSDOS 分区方案(就像 GParted 开发人员一样),但这只是个人喜好问题。
至于 MSDOS 和 GPT 之间的区别,它们只是具有不同的数据结构。它们仍然具有主分区;由于结构原因,MSDOS 不允许超过四个主分区和 +2TB 大小的磁盘。但 GPT 允许这些。理论上,它可以拥有几乎无限数量的分区(至少对于我们的用途而言)(在 Windows 上限制为 128 个,这仍然远远超过普通用户可能使用的分区数量)。GPT 主分区具有与 MSDOS 主分区几乎相同的结构;但是在 GPT 中,它们由 GUID 引用;MSDOS 使用单字节十六进制分区类型代码(如 \Ox83(Linux))来引用其分区。
这只是一个什么被视为主分区、什么被视为扩展/逻辑分区的问题。理论上,如果要定义 GPT,它可以有扩展分区和逻辑分区。扩展分区只是容器,不一定是分区。逻辑分区具有不同的结构,因此它们能够适合 MSDOS 分区方案。