Chinaunix首页 | 论坛 | 博客
  • 博客访问: 812457
  • 博文数量: 172
  • 博客积分: 3836
  • 博客等级: 中校
  • 技术积分: 1988
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-10 14:59
文章分类

全部博文(172)

文章存档

2014年(2)

2013年(1)

2012年(28)

2011年(141)

GPT

分类:

2012-09-25 19:33:51

原文地址:GPT 作者:arrisunix

全局唯一标识分区表GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。但因为MBR分区表不支持容量大于2.2TB(2.2 × 1012字节)的分区,所以也有一些BIOS系统为了支持大容量硬盘而用GPT分区表取代MBR分区表。[1]GPT分区表支持最多9.4ZB(9.4 × 1021字节)的硬盘和分区。[1][2]

截止至2010年,常见操作系统对GPT的支持非常有限,见#操作系统支持。

GPT分区表的结构。此例中,每个逻辑块(LBA)为512字节,每个分区的记录为128字节。负数的LBA地址表示从最后的块开始倒数,−1表示最后一个块。
目录  [隐藏] 
  • 1 特点
  • 2 传统MBR (LBA 0)
  • 3 分区表头 (LBA 1)
  • 4 分区表项 (LBA 2–33)
  • 5 操作系统支持
    • 5.1 类Unix操作系统
    • 5.2 32位Windows
    • 5.3 64位Windows
  • 6 分区类型GUID
  • 7 参见
  • 8 外部链接
  • 9 参考资料
[编辑]特点

在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。

跟现代的MBR一样,GPT也使用逻辑区块地址(LBA)取代了早期的CHS寻址方式。传统MBR信息存储于LBA 0,GPT头存储于LBA 1,接下来才是分区表本身。64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA 34是硬盘上第一个分区的开始。

苹果公司曾经警告说:[3]“不要假定所有设备的块大小都是512字节。”一些现代的存储设备如固态硬盘可能使用1024字节的块,一些磁光盘(MO)可能使用2048字节的扇区(但是磁光盘通常是不进行分区的)。一些硬盘生产商在计划生产4096字节一个扇区的硬盘,但截至2010年初,这种新硬盘使用固件对操作系统伪装成512字节一个扇区。[4]

使用英特尔架构的苹果机也使用GPT。

为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本。

[编辑]传统MBR (LBA 0)

在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。

在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。如Boot Camp就是使用这种方式启动Windows。

[编辑]分区表头 (LBA 1)

分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)

分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。

分区表头的格式
起始字节 长度 内容
0 8字节 签名("EFI PART", 45 46 49 20 50 41 52 54)
8 4字节 修订(在1.0版中,值是 00 00 01 00)
12 4字节 分区表头的大小(单位是字节,通常是92字节,即 5C 00 00 00)
16 4字节 分区表头(第0-91字节)的CRC32校验,在计算时,把这个字段作为0处理,需要计算出分区串行的CRC32校验后再计算本字段
20 4字节 保留,必须是 0
24 8字节 当前LBA(这个分区表头的位置)
32 8字节 备份LBA(另一个分区表头的位置)
40 8字节 第一个可用于分区的LBA(主分区表的最后一个LBA + 1)
48 8字节 最后一个可用于分区的LBA(备份分区表的第一个LBA − 1)
56 16字节 硬盘GUID(在类UNIX系统中也叫UUID)
72 8字节 分区表项的起始LBA(在主分区表中是2)
80 4字节 分区表项的数量
84 4字节 一个分区表项的大小(通常是128)
88 4字节 分区串行的CRC32校验
92 * 保留,剩余的字节必须是0(对于512字节LBA的硬盘即是420个字节)

主分区表和备份分区表的头分别位于硬盘的第二个扇区(LBA 1)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。

[编辑]分区表项 (LBA 2–33)

GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

GPT分区表项的格式
起始字节 长度 内容
0 16字节 分区类型GUID
16 16字节 分区GUID
32 8字节 起始LBA(小端序)
40 8字节 末尾LBA
48 8字节 属性标签(如:60表示“只读”)
56 72字节 分区名(可以包括36个UTF-16(小端序)字符)
[编辑]操作系统支持

对于不标准的MBR/GPT混合硬盘,不同的系统中的实现有些不一致。[5]除非另加说明,操作系统在处理混合硬盘时优先读取GPT分区表

以下表格中的“不支持”应该理解成:不能识别GPT分区的硬盘,[6]系统只能识别保护分区。GPT硬盘的数据可以通过第三方管理工具进行操作。

[编辑]类Unix操作系统
操作系统 版本 平台 自BIOS/GPT启动 自EFI/GPT启动 备注
FreeBSD 7.0以后 x86、x86-64 在MBR/GPT混合硬盘中,可以同时使用GPT和MBR分区标识。
Linux 大多数x86架构的Linux发行版

Fedora 8+、Ubuntu 8.04+[7]

x86-64、IA-64、x86 一些分区工具,如fdisk,不支持GPT。

而gdisk、grub2之类的新工具[8]支持GPT。

Mac OS X 10.4.0以后(一些功能要到10.4.6以后)[9] x86、x86-64
Solaris Solaris 10 以后 x86、x86-64、SPARC No (Work in Progress) No (Work in Progress)
[编辑]32位Windows
操作系统 版本 平台 自BIOS/GPT启动 自EFI/GPT启动 支持GPT磁盘读取写入 备注
Windows XP (2001-10-25) x86 不支持
Windows Server 2003 (2003-04-24) x86 不支持
Windows Server 2003 Service Pack 1 (2005-03-30) x86 仅支持作为数据盘使用,[6]在MBR/GPT混合硬盘中优先使用MBR。
Windows Vista (2005-07-22) x86 在MBR/GPT混合硬盘中优先使用MBR。
Windows Server 2008 (2008-02-27) x86 在MBR/GPT混合硬盘中优先使用MBR。
Windows 7 (2009-10-22) x86 在MBR/GPT混合硬盘中优先使用MBR。[5]
[编辑]64位Windows

下表列出了支持GPT的64位版Windows。既包括IA-64架构的服务器版本,也包括x86-64和EM64T架构。

操作系统 版本 平台 自BIOS/GPT启动 自EFI/GPT启动 支持GPT磁盘读取写入 备注
Windows XP 64-bit (2001-10-25) IA-64 在MBR/GPT混合硬盘中优先使用MBR。可拆卸磁盘仅支持MBR分区表。
Windows XP 64-bit, Version 2003 (2003-03-28)
(Workstation variant of Windows Server 2003 64-bit)
IA-64 在MBR/GPT混合硬盘中优先使用MBR。可拆卸磁盘仅支持MBR分区表。
Windows Server 2003 64-bit (2003-04-24) IA-64 在MBR/GPT混合硬盘中优先使用MBR。 默认使用GPT。IA-64架构的启动盘必须是GPT硬盘,其余硬盘可以使用MBR也可以使用GPT。[10]
Windows Server 2003 x64, Service Pack 1 (2005-03-30) x86-64 仅支持作为数据盘使用,[6]在MBR/GPT混合硬盘中优先使用MBR。
Windows XP Professional x64 (2005-04-25)
(Workstation variant of Windows Server 2003 x64)
x86-64 仅支持作为数据盘使用,[6]在MBR/GPT混合硬盘中优先使用MBR。可拆卸磁盘仅支持MBR分区表。
Windows Vista (2005-07-22) x86-64 在MBR/GPT混合硬盘中优先使用MBR。
Windows Server 2008 (2008-02-27) x86-64,IA-64 在MBR/GPT混合硬盘中优先使用MBR。
Windows 7 (2009-10-22) x86-64 在MBR/GPT混合硬盘中优先使用MBR。[5]
Windows Server 2008 R2 (2009-10-22)
(Server variant of Windows 7)
x86-64,IA-64 在MBR/GPT混合硬盘中优先使用MBR。
[编辑]分区类型GUID
相关操作系统 分区类型 GUID[1]
(None) 未使用 00000000-0000-0000-0000-000000000000
MBR分区表 024DEE41-33E7-11D3-9D69-0008C781F39F
EFI系统分区 C12A7328-F81F-11D2-BA4B-00A0C93EC93B
BIOS引导分区 21686148-6449-6E6F-744E-656564454649
Windows 微软保留分区 E3C9E316-0B5C-4DB8-817D-F92DF00215AE
基本数据分区[2] EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
逻辑软盘管理工具元数据分区 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
逻辑软盘管理工具数据分区 AF9B60A0-1431-4F62-BC68-3311714A69AD
Windows恢复环境 DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
IBM通用并行文件系统(GPFS)分区 37AFFC90-EF7D-4e96-91C3-2D7AE055B174
HP-UX 数据分区 75894C1E-3AEB-11D3-B7C1-7B03A0000000
服务分区 E2A1E728-32E3-11D6-A682-7B03A0000000
Linux 数据分区[2] EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
RAID分区 A19D880F-05FC-4D3B-A006-743F0F84911E
交换分区 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
逻辑卷管理器(LVM)分区 E6D6D379-F507-44C2-A23C-238F2A3DF928
保留 8DA63339-0007-60C0-C436-083AC8230908
FreeBSD 启动分区 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
数据分区 516E7CB4-6ECF-11D6-8FF8-00022D09712B
交换分区 516E7CB5-6ECF-11D6-8FF8-00022D09712B
UFS分区 516E7CB6-6ECF-11D6-8FF8-00022D09712B
en:Vinum volume manager分区 516E7CB8-6ECF-11D6-8FF8-00022D09712B
ZFS分区 516E7CBA-6ECF-11D6-8FF8-00022D09712B
Mac OS X HFS(HFS+)分区 48465300-0000-11AA-AA11-00306543ECAC
苹果公司UFS 55465300-0000-11AA-AA11-00306543ECAC
ZFS[3] 6A898CC3-1DD2-11B2-99A6-080020736631
苹果RAID分区 52414944-0000-11AA-AA11-00306543ECAC
苹果RAID分区,下线 52414944-5F4F-11AA-AA11-00306543ECAC
苹果启动分区 426F6F74-0000-11AA-AA11-00306543ECAC
Apple Label 4C616265-6C00-11AA-AA11-00306543ECAC
Apple TV 恢复分区 5265636F-7665-11AA-AA11-00306543ECAC
Solaris 启动分区 6A82CB45-1DD2-11B2-99A6-080020736631
根分区 6A85CF4D-1DD2-11B2-99A6-080020736631
交换分区 6A87C46F-1DD2-11B2-99A6-080020736631
备份分区 6A8B642B-1DD2-11B2-99A6-080020736631
/usr 分区[3] 6A898CC3-1DD2-11B2-99A6-080020736631
/var 分区 6A8EF2E9-1DD2-11B2-99A6-080020736631
/home 分区 6A90BA39-1DD2-11B2-99A6-080020736631
备用扇区 6A9283A5-1DD2-11B2-99A6-080020736631
保留分区 6A945A3B-1DD2-11B2-99A6-080020736631
6A9630D1-1DD2-11B2-99A6-080020736631
6A980767-1DD2-11B2-99A6-080020736631
6A96237F-1DD2-11B2-99A6-080020736631
6A8D2AC7-1DD2-11B2-99A6-080020736631
NetBSD[4] 交换分区 49F48D32-B10E-11DC-B99B-0019D1879648
FFS分区 49F48D5A-B10E-11DC-B99B-0019D1879648
LFS分区 49F48D82-B10E-11DC-B99B-0019D1879648
RAID分区 49F48DAA-B10E-11DC-B99B-0019D1879648
concatenated分区 2DB519C4-B10F-11DC-B99B-0019D1879648
加密分区 2DB519EC-B10F-11DC-B99B-0019D1879648
  1. ^  本表中的GUID使用小端序表示。例如,EFI系统分区的GUID在这里写成C12A7328-F81F-11D2-BA4B-00A0C93EC93B但实际上它对应的16字节的串行是 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B ——只有前3部分的字节序被交换了。
  2. a b  Linux和Windows的数据分区使用相同的GUID。
  3. a b  Solaris系统中/usr分区的GUID在Mac OS X上被用作普通的ZFS分区。
  4. ^ 具体定义见src/sys/sys/disklabel_gpt.h。NetBSD的GUID在单独定义之前曾经使用过FreeBSD的GUID。
阅读(2086) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~