GPT磁盘体系结构详解.docx

上传人:b****5 文档编号:12674325 上传时间:2023-04-21 格式:DOCX 页数:32 大小:231.28KB
下载 相关 举报
GPT磁盘体系结构详解.docx_第1页
第1页 / 共32页
GPT磁盘体系结构详解.docx_第2页
第2页 / 共32页
GPT磁盘体系结构详解.docx_第3页
第3页 / 共32页
GPT磁盘体系结构详解.docx_第4页
第4页 / 共32页
GPT磁盘体系结构详解.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

GPT磁盘体系结构详解.docx

《GPT磁盘体系结构详解.docx》由会员分享,可在线阅读,更多相关《GPT磁盘体系结构详解.docx(32页珍藏版)》请在冰豆网上搜索。

GPT磁盘体系结构详解.docx

GPT磁盘体系结构详解

GPT磁盘体系结构详解

2009年04月16日星期四上午10:

24

之前对于GPT体系结构的认识有一些偏差,前段时间在happylearning的会议上同事大牛又training了我们一把,实在是受益匪浅。

LBA0和LBA1就不说了,前面已经描述过了。

从LBA2到LBA33这里面包含了4*32=128个entry,每个entry对应描述一个磁盘分区的信息。

所以可以很清楚的看出GPT磁盘可以支持128个分区,而我们所熟知的MBR磁盘最多只能分到4个主分区,这就是因为在MBR磁盘中只保留了一个LBA来存储entry的信息,所以最大只能是4个主分区,当然在这些磁盘中采取一些补救的措施,就是可以创建一些扩展分区,这些扩展分区的内容依附于某个主分区上,那么这个扩展分区的entry信息在哪了,如果我猜的没错的话,因为就在它所依附的主分区的数据信息的头上。

很显然,这种依附关系限制了分区的发展。

最下面的LBA-1到LBA-33就是上面LBA1到LBA33的备份。

关于LBA1和LBA-1的每个位的意思都是有它的意义的:

LBA

Size

Contents

0

8

Signature("EFIPART",4546492050415254)

8

4

Revision(Forversion1.0,thevalueis00000100)

12

4

Headersize(inbytes,usually5C000000meaning92bytes)

16

4

CRC32ofheader(0toheadersize),withthisfieldzeroedduringcalculation

20

4

reserved,mustbezero

24

8

CurrentLBA(locationofthisheadercopy)

32

8

BackupLBA(locationoftheotherheadercopy)

40

8

FirstusableLBAforpartitions(primarypartitiontablelastLBA+1)

48

8

LastusableLBA(secondarypartitiontablefirstLBA-1)

56

16

DiskGUID(alsoreferredasUUIDonUNIXes)

72

8

PartitionentriesstartingLBA(always2inprimarycopy)

80

4

Numberofpartitionentries

84

4

Sizeofapartitionentry(usually128)

88

4

CRC32ofpartitionarray

92

*reserved

mustbezeroesfortherestoftheblock(420bytesfora512-byteLBA)

首先,让我们将一块GPT磁盘的LBA0,LBA1,LBA2都dump到一个文件中,对它进行分析。

[root@maxxm~]# ddif=/dev/cciss/c0d0of=/root/imagebs=512count=3

[root@maxxm~]# hexdump/root/image

000000000000000000000000000000000000000

*

00001c00001feeeffff00010000597f11150000

00001d000000000000000000000000000000000

*

00001f00000000000000000000000000000aa55

0000200464520494150545200000001005c0000

000021099ce562a000000000001000000000000

0000220597f1115000000000022000000000000

0000230595e111500000000ca012c4ddaa24b22

0000240f9b8eb6e14dfeaa00002000000000000

0000250008000000080000047b2a6c300000000

000026000000000000000000000000000000000

*

00004007328c12af81f11d24bbaa0003ec93bc9

0000410afc2fc712e49411eee8088ed9c7cb4ca

000042000220000000000004021000600000000

000043000000000000000000000ffffffffffff

0000440ffffffffffffffffffffffffffffffff

*

0000480fd6d0657a4ab43c4e58433094bc84f4f

0000490ec29c51b2c7b4698d4ad0d04e6a6295c

00004a04022000600000000c021004400000000

00004b000000000000000000000ffffffffffff

00004c0ffffffffffffffffffffffffffffffff

*

0000500a0a2ebd0b9e54433c087b66826b7c799

0000510b3de4f2bedf84c2960bfcfa8d7e85371

0000520c022004400000000595e111500000000

000053000000000000000000000ffffffffffff

0000540ffffffffffffffffffffffffffffffff

*

000058000000000000000000000000000000000

*

0000600

还有关于entry的解释:

Offset

Length

Contents

0

16

PartitiontypeGUID

16

16

UniquepartitionGUID

32

8

FirstLBA(little-endian)

40

8

LastLBA(inclusive,usuallyodd)

48

8

Attributeflags(e.g.bit60denotesread-only)

56

72

Partitionname(36UTF-16LEcodeunits)

partitionattributesBitContent

0

systempartition(diskpartitioningutilitiesmustreservethepartitionasis)

60

read-only

62

hidden

63

donotautomount(eg.donotassigndriveletter)

每个分区对应的GUID:

Assoc.

OSPartitionType

Globally-UniqueIdentifier(GUID)

(None)

Unusedentry

00000000-0000-0000-0000-000000000000

MBRpartitionscheme

024DEE41-33E7-11D3-9D69-0008C781F39F

EFISystemPartition

C12A7328-F81F-11D2-BA4B-00A0C93EC93B

BIOSBootPartition

21686148-6449-6E6F-744E-656564454649

Windows

MicrosoftReservedPartition

E3C9E316-0B5C-4DB8-817D-F92DF00215AE

BasicDataPartition

EBD0A0A2-B9E5-4433-87C0-68B6B72699C7

LogicalDiskManagermetadatapartition

5808C8AA-7E8F-42E0-85D2-E1E90434CFB3

LogicalDiskManagerdatapartition

AF9B60A0-1431-4F62-BC68-3311714A69AD

HP-UX

Datapartition

75894C1E-3AEB-11D3-B7C1-7B03A0000000

ServicePartition

E2A1E728-32E3-11D6-A682-7B03A0000000

Linux

Datapartition

EBD0A0A2-B9E5-4433-87C0-68B6B72699C7

RAIDpartition

A19D880F-05FC-4D3B-A006-743F0F84911E

Swappartition

0657FD6D-A4AB-43C4-84E5-0933C84B4F4F

LogicalVolumeManager(LVM)partition

E6D6D379-F507-44C2-A23C-238F2A3DF928

Reserved

8DA63339-0007-60C0-C436-083AC8230908

FreeBSD

Bootpartition

83BD6B9D-7F41-11DC-BE0B-001560B84F0F

Datapartition

516E7CB4-6ECF-11D6-8FF8-00022D09712B

Swappartition

516E7CB5-6ECF-11D6-8FF8-00022D09712B

UnixFileSystem(UFS)partition

516E7CB6-6ECF-11D6-8FF8-00022D09712B

Vinumvolumemanagerpartition

516E7CB8-6ECF-11D6-8FF8-00022D09712B

ZFSpartition

516E7CBA-6ECF-11D6-8FF8-00022D09712B

MacOSX

HierarchicalFileSystem(HFS+)partition

48465300-0000-11AA-AA11-00306543ECAC

AppleUFS

55465300-0000-11AA-AA11-00306543ECAC

ZFS

6A898CC3-1DD2-11B2-99A6-080020736631

AppleRAIDpartition

52414944-0000-11AA-AA11-00306543ECAC

AppleRAIDpartition,offline

52414944-5F4F-11AA-AA11-00306543ECAC

AppleBootpartition

426F6F74-0000-11AA-AA11-00306543ECAC

AppleLabel

4C616265-6C00-11AA-AA11-00306543ECAC

AppleTVRecoverypartition

5265636F-7665-11AA-AA11-00306543ECAC

Solaris

Bootpartition

6A82CB45-1DD2-11B2-99A6-080020736631

Rootpartition

6A85CF4D-1DD2-11B2-99A6-080020736631

Swappartition

6A87C46F-1DD2-11B2-99A6-080020736631

Backuppartition

6A8B642B-1DD2-11B2-99A6-080020736631

/usrpartition

6A898CC3-1DD2-11B2-99A6-080020736631

/varpartition

6A8EF2E9-1DD2-11B2-99A6-080020736631

/homepartition

6A90BA39-1DD2-11B2-99A6-080020736631

EFI_ALTSCTR

6A9283A5-1DD2-11B2-99A6-080020736631

Reservedpartition

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

Swappartition

49F48D32-B10E-11DC-B99B-0019D1879648

FFSpartition

49F48D5A-B10E-11DC-B99B-0019D1879648

LFSpartition

49F48D82-B10E-11DC-B99B-0019D1879648

RAIDpartition

49F48DAA-B10E-11DC-B99B-0019D1879648

concatenatedpartition

2DB519C4-B10F-11DC-B99B-0019D1879648

encryptedpartition

2DB519EC-B10F-11DC-B99B-0019D1879648

GPT,即GUIDPartitionTable(GUID 分区表,GPT)的简写形式,它是WindowsServer2003 中的一种新型磁盘架构,是一种由基于 Itanium 计算机中的可扩展固件接口 (EFI*) 使用的磁盘分区架构。

这种64位的Itanium版Windows系统采用的磁盘布局架构,与传统的32位磁盘完全不同。

与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点:

◆∙∙∙∙∙∙∙∙∙它允许每个磁盘有多达 128 个分区(MBR磁盘最多只能有4个主分区,或者3个主分区加一个扩展分区和无限制的逻辑驱动器)。

◆∙∙∙∙∙∙∙∙∙支持高达 18 千兆兆字节(EB,exabytes)的卷大小(MBR磁盘支持的最大卷为2TB)。

◆∙∙∙∙∙∙∙∙∙允许将主磁盘分区表和备份磁盘分区表用于冗余。

◆∙∙∙∙∙∙∙∙∙支持唯一的磁盘和分区 ID(GUID)。

◆∙∙∙∙∙∙∙∙∙性能更加稳定。

 

...

 

  GPT磁盘总体布局

可以在运行带有ServicePack1(SP1) 的 WindowsServer2003的磁盘管理中进行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分区部分和备份区域。

◆∙∙∙∙∙∙∙∙∙EFI信息区,也称为GPT头,起始于磁盘的1号扇区,通常只占用这一个扇区。

GPT磁盘创建后,由GPT头定义分区表的位置和大小。

Windows限定分区表项为128个。

GPT头还包含头和分区表的校验和,这样就可以及时发现错误或者改变。

◆∙∙∙∙∙∙∙∙∙分区表区域包含分区表项。

这个区域由GPT头定义,一般占用磁盘2~33号扇区。

分区表中的每个表项由起始和结束地址、类型值、名字、属性标志和GUID值组成。

分区表建立后,128位的GUID对系统来说是唯一的。

◆∙∙∙∙∙∙∙∙∙分区部分是最大的区域,由分配给分区的扇区组成。

这个区域的起始和结束地址由GPT头定义。

◆∙∙∙∙∙∙∙∙∙备份区域位于磁盘的尾部,包含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码“EFIPART”

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个字节,保留。

WindowsandGPTFAQ

Updated:

June15,2011

ThisarticleprovidesanswerstofrequentlyaskedquestionsabouttheGUIDPartitionTable(GPT).

Thisarticleappliestothefollowingoperatingsystems:

∙Windows7

∙WindowsServer2008

∙WindowsServer2008R2

∙WindowsVista

∙WindowsServer2003SP1

∙WindowsServer2003(64-bit)

∙WindowsXPx64edition

OnThisPage

 AbouttheGPT

 WindowsDiskSupport

 WindowsGPTRequiredPartitions

 WindowsGPTESPImplementation

 ManipulatingGPTDisksandTheirContents

AbouttheGPT

Q.

WhatisaGPTdisk?

 

 

A.

TheGUIDPartitionTable(GPT)wasintroducedaspartoftheUnifiedExtensibleFirmwareInterface(UEFI)initiative.GPTprovidesamoreflexiblemechanismforpartitioningdisksthantheolderMasterBootRecord(MBR)partitioningschemethatwascommontoPCs.

Apartitionisacontiguousspaceofstorageonaphysicalorlogicaldiskthatfunctionsasifitwereaphysicallyseparatedisk.Partitionsarevisible

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1