GPT
,即
GUID Partition Table
(
GUID
分区表,
GPT
)的简写形式,它是
Windows Server 2003
中的一种新型磁盘架构,是
一种由基于
Itanium
计算机中的可扩展固件接口
(EFI*)
使用的磁盘分区架构。这种
64
位的
Itanium
版
Windows
系统采用的磁盘布局架构,与传统的
32
位磁盘完全不同。
与主启动记录
(MBR)
分区方法相比,
GPT
具有更多的优点:
u 它允许每个磁盘有多达 128 个分区(MBR磁盘最多只能有4个主分区,或者3个主分区加一个扩展分区和无限制的逻辑驱动器)。
u 支持高达 18 千兆兆字节(EB,exabytes)的卷大小(MBR磁盘支持的最大卷为2TB)。
u 允许将主磁盘分区表和备份磁盘分区表用于冗余。
u 支持唯一的磁盘和分区 ID (GUID)。
u 性能更加稳定。
...
GPT磁盘总体布局
可以在运行带有
Service Pack 1 (SP1)
的
Windows Server 2003
的磁盘管理中进行
MBR
与
GPT
磁盘的相互转换,然后进行相应的分区操作。也
可以使用
DiskPart.exe
命令行实用程序或
EFI
固件实用程序
Diskpart.efi
在基本
GPT
磁盘上创建分区。
一个转换为
GPT
并建立分区后的磁盘,总体布局如图
2.37
所示。
图
2.37 GPT
磁盘总体布局
我们可以看到,一个
GPT
磁盘可以分为两大部分:保护
MBR
和
EFI
部分。
(
1
)第一部分只由
0
号扇区组成,在这个扇区中包含一个
DOS
分区表,分区表内只有一个表项,这个表项描述了一个类型值为
0xEE
的分区,大小为整个磁盘(如图
2.38
所示)。这个分区的存在可以使计算机认为这个磁盘是合法的,并且已被使用,从而不再试图对其进行格式化等操作,所以该扇区又被称为“保护
MBR
”。实际上,
EFI
根本不使用这个分区表。
图
2.38 GPT
磁盘的
0
号扇区
(
2
)另一部分为
EFI
部分,
EFI
部分又可以分为
4
个区域:
EFI
信息区
(
又称为
GPT
头
)
部分、分区表部分、
GPT
分区部分和备份区域。
u EFI信息区,也称为GPT头,起始于磁盘的1号扇区,通常只占用这一个扇区。GPT磁盘创建后,由GPT头定义分区表的位置和大小。Windows限定分区表项为128个。GPT头还包含头和分区表的校验和,这样就可以及时发现错误或者改变。
u 分区表区域包含分区表项。这个区域由GPT头定义,一般占用磁盘2~33号扇区。分区表中的每个表项由起始和结束地址、类型值、名字、属性标志和GUID值组成。分区表建立后,128位的GUID对系统来说是唯一的。
u 分区部分是最大的区域,由分配给分区的扇区组成。这个区域的起始和结束地址由GPT头定义。
u 备份区域位于磁盘的尾部,包含GPT头和分区表的备份。它占用GPT结束扇区和EFI结束扇区之间的33个扇区。其中最后一个扇区用来备份1号扇区的EFI信息,其余的32个扇区用来备份2~33号扇区的分区表。
数据结构
1. EFI信息扇区数据结构
EFI
信息扇区位于磁盘的
1
号扇区,也称为
GPT
头。
GPT
磁盘创建后,由
GPT
头定义分区表的位置和大小,
Windows
限定分区表项为
128
个。
GPT
头还包含头和分区表的校验和。
EFI
信息扇区的结构如表
2.21
所示。
表
2.21 EFI
信息扇区结构
相对字节偏移
(
十六进制
)
|
字节数
|
说明
|
00
~
07
|
8
|
签名
(ASCII
码“
EFI PART
”
|
08
~
0B
|
4
|
版本
|
0C
~
0F
|
4
|
GPT
头大小字节数
|
10
~
13
|
4
|
GPT
头
CRC
校验和
|
14
~
17
|
4
|
保留
|
18
~
1F
|
8
|
当前
GPT
头的
LBA
扇区号,也即为
EFI
区域起始扇区号
|
20
~
27
|
8
|
GPT
头备份
LBA
扇区号,也即为
EFI
区域结束扇区号
|
28
~
2F
|
8
|
GPT
分区区域起始
LBA
|
30
~
37
|
8
|
GPT
分区区域结束
LBA
|
38
~
47
|
12
|
磁盘
GUID
|
48
~
4F
|
8
|
GPT
分区表起始
LBA
|
50
~
53
|
4
|
分区表项数
|
54
~
57
|
4
|
每分区表项占用字节数
|
58
~
5B
|
4
|
分区表
CRC
校验和
|
5C
~
1FF
|
366
|
保留
|
通过这些结构中的描述值,我们可以确定
GPT
头、分区表、
GPT
分区区域、分区表的备份位置等结构布局。图
2.39
显示了一个
GPT
头的实例。
图
2.39 GPT
头
具体分析如下:
1) 0x00
~
0x07
:
8
个字节,
GPT
头签名“
4546492050415254
”,
ASCII
码为“
EFI PART
”。
2) 0x08
~
0x0B
:
4
个字节,版本号。
3) 0x0C
~
0x0F
:4个字节,
GPT
头大小字节数,此处的值为
0x5C
,即92个字节。
4) 0x10
~
0x13
:4个字节,
GPT
头校验和。
5) 0x14
~
0x17
:4个字节,保留。
6) 0x18
~
0x1F
:8个字节,当前
GPT
头的
LBA
扇区号,即
EFI
区域起始扇区号,通常为1。
7) 0x20
~
0x27
:
8
个字节,
GPT
头备份位置的
LBA
扇区号,即
EFI
区域结束扇区号,此处的值为
224909
(
0x086E8D
)。
8) 0x28
~
0x2F
:8个字节,
GPT
分区区域起始
LBA
扇区号,此处的值为
34
(
0x22
)。
9) 0x30
~
0x37
:8个字节,
GPT
分区区域结束
LBA
扇区号,此处的值为
224876
(
0x036E6C
)。
10)0x38
~
0x47
:
16
个字节,磁盘
GUID
。
11)0x48
~
0x4F
:8个字节,
GPT
分区表起始
LBA
扇区号,此处的值为
2
(
0x02
),通常都是起始于
2
号扇区。
12)0x50
~
0x53
:
4
个字节,分区表项数,限定为
128
(
0x80
)。
13)0x54
~
0x57
:
4
个字节,每分区表项占用字节数,固定为
128
(
0x80
)。
14)0x58
~
0x5B
:
4
个字节,分区表
CRC
校验和。
15)0x5C
~
0x1FF
:
420
个字节,保留。
本文转自老骥伏枥51CTO博客,原文链接:
http://blog.51cto.com/sjhfml/129146
,如需转载请自行联系原作者