硬盘MBR和GPT分区详解.docx
《硬盘MBR和GPT分区详解.docx》由会员分享,可在线阅读,更多相关《硬盘MBR和GPT分区详解.docx(43页珍藏版)》请在冰豆网上搜索。
硬盘MBR和GPT分区详解
硬盘MBR和GPT分区详解
马达
OillMrKr亠
电子燼路
目前磁盘分区有两种形式:
GPT分区和MB盼区。
MBF相比而言比较常见,大多数磁盘都是采用这种分区形式。
MBF分区和GPT分区的区别在于:
MBR最多只支持4个主分区,GPT能够支持128个主分区。
然而GPT分区形式在重装系统需要主板的EFI支持,所以导致出现上面的这种情况。
因此解决的办法就是将分区形式转换为MBR分区形式。
但是在转换之前必须要做好数据备份,将磁盘里重要的东西全部拷出来,因为只有整个磁盘全部为空时,才能够进行转换。
传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区
数目(4个字节)等内容。
由于MBRS区只有64个字节用于分区表,所以只能记录4个分区的信息。
这就是硬盘主分区数目不能超过4个的原因。
后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。
但每个分区项仍用16个字节存储。
GPT1盘是指使用GUID分区表的磁盘,是源自EFI标准的一种较新的磁盘分区表结构的标准。
与普遍使用的主引导记录(MBR分区方案相比,GPT提供了更加灵活的磁盘分区机制。
MBR的全称是MasterBootRecord(主引导记录),MBF早在1983年
IBMPCDOS2.0中就已经提出。
之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。
这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。
主引导扇区是硬盘的第一扇区。
它由三个部分组成,主引导记录MBR硬盘分区表
DPT和硬盘有效标志。
在总共512字节的主引导扇区里MBF占446个字节,偏移地址
0000H--0088H),它负责从活动分区中装载,并运行系统引导程序;第二部分是
table
TjVPartitionW巧
Partibonswichinanaxtend
III
-Partition1_rlition2—
III
Ptirlibon3(Exi«ri(Jed}
Partitiontable区(DPT分区表),占64个字节;第三部分是Magicnumber,占2个字节。
MBF扇区代码
Offset
0
1
2
3
4
5
&
7
8
9
A
B
C
D
E
F
诂问▼1
0000000000
33
co
8E
DO
BC
00
7C
FB
50
07
50
IF
FC
BE
IB
7C
誠屑.鷗F.・l
0000000010
BF
IB
oe
50
57
B9
55
01
F3
A4
CB
BD
BE
07
Bl
04
?
.PW瑰.螭私沔
0000000020
38
6E
00
7C
09
75
13
83
C5
10
E2
F4
CD
18
8B
yn
an.Lu.®.柞?
蟆
0000000030
S3
C6
10
49
74
19
33
2C
74
A0
B5
07
E4
07
SB
0000000040
ro
AC
sc
00
为
FC
BB
07
00
明
0E
CD
10
EE
F2
88
0000000050
4E
10
E8
46
00
?
3
2A
FE
46
10
SO
7E
04
0B
74
0B
N.鐵-討悻..t.
0000000060
so
7E
04
oc
%
05
A0
E6
07
75
D2
30
旺
02
06
S3
£…七・彳由.u禰F…
0000000070
46
08
06
83
5t
0A
00
ES
21
00
73
05
AO
BG
07
EB
F…悟乩屜.e
0000000080
BC
SI
3E
FE
7D
55
M
74
0B
80
7E
10
00
池
C8
A0
前励瞬二滇
0000000090
&7
07
EB
A9
8B
FC
IE
57
8B
F5
CB
BF
0E
00
8A
同
w螟赴••契v
OOOOOOOOAO
00
网
08
CD
13
72
23
8A
Cl
24
3F
98
3A
DE
SA
FC
・?
?
T谶J磁适孔
00000000B0
43
F7
E3
8B
DI
86
D6
Bl
06
D2
EE
42
F7
E2
39
56
c縻無嗨月翌e庵gw
OOOOOOOOCO
捲
77
23
72
05
39
46
08
73
1C
B8
01
02
BB
00
K
.讷“9F.s.?
.?
1.|
0000000000
SB
4E
02
8B
56
00
CD
13
73
51
4F
74
4E
32
E4
8A
嫌-竭・¥sQ0tN2鉢&
OOOOOOOOEO
56
OO
CD
13
EB
E4
8A
56
00
60
BB
AA
55
B4
41
CD
电瀬獎「华咂I
OOOOOOOOFO
13
72
36
81
FB
55
AA
75
30
Cl
01
¥4
2B
61
60
-工血1旗0隽.t+a'
0000000100
厲
00
GA
00
RP
7G
0A
FF
75
03
GA
00
62
00
7C
6A
j-j-v.v.j.ll.
0000000110
01
6A
10
B1
42
SB
网
CD
13
61
61
73
0E
4F
74
OB
.j.磐ffiJ^aas.Ot..
0000000120
32
E4
SA
56
00
CD
13
EB
D6
61
F9
C3
49
GE
76
ei
2^$V_。
胫白Invaa
0000000130
&C
69
64
2Q
70
61
吃
74
69
为
69
6F
6E
20
74
61
lidpartitionta
0000000140
&2
6C
65
00
45
?
2
72
6F
72
20
6C
6F
61
64
69
6E
ble.Error1oadin
0000000150
说
20
GF
70
65
72
61
74
69
6E
67
20
73
他
73
74
呂operatingsyst
0000000160
隔
6D
00
4D
69
73
73
旳
6E
67
20
6F
70
6£
72
61
em_Missingopera
0000000170
74
69
GE
67
20
73
79
73
西
65
6D
00
00
00
00
00
■tingsystsir■…・+
0000000180
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
ooooooono
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
4•熾孔豊找码….
00000001A0
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
OOOOOOOIBO
00
00
00
00
00
2C
Q4
63
33
Bl
33
Bl
00
00
80
01
Bc3?
?
.€,
OOOOOOOICO
0000000100
01
Cl
00
7C
07
OF
FE
FE
PF丽
7B
FF
3F
?
C
00
AS
00
DA
00
00
3D
45
A8
8F
DAIE
00
oc
00
00
00
00
00000001E0
00
00
00
00
00
0D
00
00
00
00
00
00
00
00
00
00
二审H為数it朮二
OOOOOOOIFO
00
00
00
00
00
00
00
°%2°
00
00
00
00
00
55
AA
在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。
也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。
第二个分区表项描述除基本分区外的其余空间,一般
而言,就是我们所说的扩展分区。
这部分的大体说明见表1。
|表1图2分匡表第一宇段-_]
宇节怪移
宇段廉度
值
字段茗却定史
OtKO1BE
BYTE
0s80
弓i#^rr(Boot
Indicator)扌旨明该井IS是否是活动盛
teulBF
8YTE
1
开怕磁头(Sta.rtingHead.)
0x01CD
6ft
OkUI
开(StartingSector)只用了旷血后面的两傥(第6位和第T位)被开贻柱而宇段所傥ffl
OtzOlCl
10ft
0x00
开始柱面(StartingCylinder)除了开始扇医宇段的最后两位外,还使用了1垃耒组成佼柱面值*开贻柱面是一牛1Mt數’量大值^)1023
Ote01C2
BYTE
OkOT
系统ID(SystemID)定义了分区的类型,详细定义,请参fit图Q
0x01C3
BYTE
OkFE
(EndingHead)
otsdicq
OkFF
结東扇区.[EruliTigSector)只
使用了旷5也堤后两住K第乩T位)被结東桂面宇段斯僮用
0x0ICE
1O&
OxTB
结東柱面(EndingCylinder)除了绪束扇区宇段最后的两位外,还使用了1位,以组成该柱面值口结束柱面是一吓1讯立的数,最拘1为1瞪3
OsOlCG
DVOED
Ox00DO003F
相对(RelativeSectors)从该蛊盘的开胎到该分区的开始的位務量,球扁区来计算
OxCl匚A
DWORD
OxOQDAAEJD
总扇反数(TotalSectors)该井区中的扇匡总数
DPT代码分析
注:
上表中的超过1字节的数据都以实际数据显示,就是按高位到地位的方式显示。
存储时是按低位到高位存储的。
两者表现不同,请仔细看清楚。
以后出现的表,图均同。
也可以在winhex中看到这些参数的意义:
惡laslLex-
BootEecotA^基iEtlOS越呈-0
Offsel
标题
数值
0鴨椁
Masterbootstraploadercvde|33CO8EDOBC00兀FB
Partition
TableEntry#1
1BE
SO=activepartition逢闻騎压ti姦
60叭斥谯E艇*非
1BF
Sturtte*d脅耐曼
1
ICO
StartsectorW
1
ICO
Startcylinder
0
1C2
□peritingsystemindicatorQim
07
1C3
End魚屛曲髯(ft坐
254
1C<
Endsector姑隹幕E
63
1C4
Endcylindsr會桂祈
691
1C6
SectorsprecediiKgparti.tion1
IE
Lengthofidem1in,sectoir
H329917水料氐的常总輕粘
Partxtion
TableEntry#2
1CTE
80=activepartition
00
1CF
Starthmi
0
100
Startsector
1
IDO
Startcylinder
692
102
Operatingsyslemiindicator(h町t
OF
103
Endhe^d
£54
1D4
Endsector
63
1D4
Endcylinder
1023
IM
Sectorsprecedingpartition2
143299®
IDA
Lengthofpirtition2iniscltor
220106565
Partition
TablieEntry#3
imOM
80sactivepartition
00
IDTtH
Starthead
0
iso2M
Startsector
0
1E02M
Sturtcylinder
0
1E2"M
Operatingsystemindicator(h色疋
00
1E3
Endhe&d
0
1E4fctt
Endi«ctor
0
1E46M
Endcylinder
u
1E6
SectorsprecediiKgpartition3
0
ieaCH
Lengthofpurtit.ioTi3insector
0
Fartitioxi
TableEntry#4
1EE
60=activep«rtilien
00
1EF
StartLea.d
0
1F0
Startsgetor
0
1F0
Startcylinder
0
1F2
OperatingsystemindicaterQisjc
00
1F3
Endhe=&d
0
1F4
Endsector
0
1F4
Endcylinder
D
1F6
Sectorsprecedirtgpartition4
0
说明:
每个分区表项占用16个字节,假定偏移地址从0开始。
如图3的分区表项3。
分
区表项4同分区表项3。
1、0H偏移为活动分区是否标志,只能选00H和80H。
80H为活动,00H为非活动。
其余值对microsoft而言为非法值。
2、重新说明一下(这个非常重要):
大于1个字节的数被以低字节在前的存储格式格式(littleendianformat)或称反字节顺序保存下来。
低字节在前的格式是一种保存数的方法,这样,最低位
的字节最先出现在十六进制数符号中。
例如,相对扇区数字段的值0x3F000000的低字节在前表示
为0X0000003F。
这个低字节在前的格式数的十进制数为63。
3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。
有时候我们分区是输入分区的大小为7000M,分出来却是6997M,就是这个原因。
偏移2H和偏移
6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇区数的二进制表示。
其高两位做柱面数10位中的高两位,偏移7H组成的8位做柱面数10位中的
低8位。
由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区从
1开始编号,所以最多只能表示1024个柱面X63个扇区X256个磁头X512byte=8455716864byte。
即通常的8.4GB(实际上应该是7.8GB左右)限制。
实际上磁头数通常只用到255个(由汇编语言的
寻址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。
在后来的操作系统中,超过8.4GB的分区其实已经不通过C/H/S的方式寻址了。
而是通过偏移CH-偏移FH共4个字节32位线性扇区
地址来表示分区所占用的扇区总数。
可知通过4个字节可以表示2A32个扇区,即2TB=2048GB目
前对于大多数计算机而言,这已经是个天文数字了。
在未超过8.4GB的分区上,C/H/S的表示方法
和线性扇区的表示方法所表示的分区大小是一致的。
也就是说,两种表示方法是协调的。
即使不协调,也以线性寻址为准。
(可能在某些系统中会提示出错)。
超过8.4GB的分区结束C/H/S一般填充
为FEHFFHFFH即C/H/S所能表示的最大值。
有时候也会用柱面对1024的模来填充。
不过这几个
字节是什么其实都无关紧要了。
虽然现在的系统均采用线性寻址的方式来处理分区的大小。
但不可跨柱面的原则依然没变。
本
分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。
(保留扇区中
的第一个扇区就是存放分区表的MBR或虚拟MBR勺扇区,分区的扇区总数在线性表示方式上是不计
入保留扇区的。
如果是第一个分区,保留扇区是本分区前的所有扇区。
附:
分区表类型标志如图4
00空.mocrosofl不允许使川护
63GWHURDorSys
01FAT32
64Nov^l1Netware
02XENIXroot
65NovellNetware
()3XENIXusr
70DiskSecureMu]t
01FAT16<32M
75PC/1X
05Extended
80OldMinix
06FAT16
81Minix/OldLinux
07HPFS/NTFS
82Linuxswap
08All
83Linux
09AIXbootable
84OS/2hiddenC:
0AOS/2BoelMmuge
85Linux«Ktendtid
0BV1H9SFAT32
8CNIT'Svojuroesei
0CWin95FAT32
87NTFSvclumtiset
0EWin95FAT16
93AnfJtba
OFWin95Extended08GB)
94Anu^baBBT
I0OPUS
A(lIBMThinkpadhidden
11HiddenFAT12
A5BSD/386
12Compaqdifignost
Afi0p«nBSD
16HiddenFAT16
ATNextSTEP
14HiddenFAT16<32GB
B7BSDIfs
17HiddenHPFS/NTFS
B8BSD!
18ASTWindowsswap
BESolarisbool
IBHiddenFAT32
partition
1CHiddenFAT32partition
COM-D0S/NovellDOS
(usingLBA-mody
sHcuredparLilion
INT13extensions)
ClDHIXS/sec
IEHiddenLBAVFATpartilien
C4DRDOS/sec
24NECDOS
C6DKIXK/sec
3CPartitionMagic
C7Syrinx
40VenixH0286
DBCP/N/CTOS
41PPCPrePBoot
ElDOSaccess
42SFS
E3DOSR/0
4DQNX4.x
E4Speedstor
4EQNX4.x2ndpart
EBBeOSfs
4FQNX4.x3rdpart
FlSpe^dStor
50OntrackDM
F2DOS3*3*secondary
51OntrackDM6Aux
partiLiun
52CPZM
F4SpetdSror
53oNtRACKDM6Aux
FELANstep
54OnTrackDM6
FFBBT
分区畑标志:
55EZ-Drive
56GoldenBev
5CPriamEdLsk
61SpeedStcr
3.2扩展分区
扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录(ExtendedBootRecord,
EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。
扩展引导记录包括一个扩展分区表和该扇区的标签。
扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信
息。
一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。
但是,如果磁盘上没有扩展分区,
那么就不会有扩展引导记录和逻辑驱动器。
第一个逻辑驱动器的扩展分区表中的第一项指向它自身
的引导扇区。
第二项指向下一个逻辑驱动器的EBR如果不存在进一步的逻辑驱动器,第二项就不
会使用,而且被记录成一系列零。
如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。
第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动
器的EBR扩展分区表的第三项和第四项永远都不会被使用。
逻辑砸动器-逻辑駆隣畫
I主引勰录1
r第1券区表顶
1第2分区表项
r第$分区却
1第斗分区表頂
1引导島区
引耳喘区
1.扩
0x$5AA
L引9扇医
1
I.(H55AA
|弓焊扃匡
|基本分区2
!
!
基本分区3
!
!
茏■益分区1
i引录
i引录i
通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式。
如图5
图$—亍4付区的貳本破盘
关于扩展分区,如图6所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。
该图显
示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩
展分区表中的差异。
分区盍希接阁于
除了扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每个逻辑驱动器
中都是重复的:
第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的
EBR最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。
最后一个扩展分区表的第二个项
到第四个项被使用。
却扩展分区表顶的內容
扩展分医表顶
1毎盧表项的内容
第一吓项
包括数据的开贻地址在內的与扩展分区中当前逻辑驱动議有关的信息
第二吓烦
有关旷屣仆氐中的下一吓逻塾瞞器的僧息,包括包會下一个逻辑驱动器的EER的扇区的她址。
如