系统安装时的硬盘格式问题

全局唯一标识分区表的出现是为了替代旧式的MBR。对于那些扇区为512字节的磁盘,MBR分区表不支持容量大于2.2TB(2.2 × 10字节)的分区[1] ,然而,一些硬盘制造商(诸如希捷和西部数据)注意到了这个局限性,并且将他们的容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了8.8TB。这个看似“正确的”解决方案,在临时地降低了人们对GPT的需求的同时,也给市场带来了,关于在有较大的块(block)的设备上从BIOS启动时,如何最佳的划分磁盘分区的困惑。
苹果公司曾经警告说:“不要假定所有设备的块大小都是512字节。”一些现代的存储设备如固态硬盘可能使用1024字节的块,一些磁光盘(MO)可能使用2048字节的扇区(但是磁光盘通常是不进行分区的)。一些硬盘生产商在计划生产4096字节一个扇区的硬盘,但截至2010年初,这种新硬盘使用固件对操作系统伪装成512字节一个扇区。
GPT作为MBR的继任者,正是为了解决MBR所带来的诸多限制。
2特点
编辑

在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
跟现代的MBR一样,GPT也使用逻辑区块地址(LBA)取代了早期的CHS寻址方式。传统MBR信息存储于LBA 0,GPT头存储于LBA 1,接下来才是分区表本身。64位Windows操作系统使用16,384字节(或32扇区)作为GPT分区表,接下来的LBA 34是硬盘上第一个分区的开始。
为了减少分区表损坏的风险,GPT在硬盘最后保存了一份分区表的副本。
总的来说,GPT都将修复 MBR 的许多限制:
GPT只使用LBA,因此,CHS问题就不复存在。
磁盘指针的大小为64位,假设512字节扇区,这意味着GPT可以处理的磁盘大小最高达512 x 264字节(8zebibytes,即86亿TiB)。
GPT数据结构在磁盘上存储两次:开始和结束各一次。在因事故或坏扇区导致损坏的情况下,这种重复提高了成功恢复的几率。
循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率。
GPT将所有分区存储在单个分区表中(带有备份),因此扩展分区或逻辑分区没有存在的必要。GPT默认支持128个分区,当然您也可以更改分区表的大小,如果您的分区软件支持这种更改的话。
虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型。这使分区类型更不容易冲突。
GPT支持存储人类可读的分区名称。您可以使用这个字段来命名您的Linux /home、/usr、/var和其他分区,以便它们在分区软件中更容易识别。
[1]
3结构
编辑

LBA 0

在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR也叫做保护性MBR(Protective MBR)。
保护性MBR保护GPT磁盘不受以前发布的MBR磁盘工具(比如FDISK或WindowsNT磁盘管理器)的危害。这些工具不能感知GPT,也无法正确地访问GPT磁盘。不能识别GPT的旧软件在访问GPT磁盘时只解释保护性MBR。这些工具通过解释保护性MBR,将GPT磁盘看成一个封装的(可能无法识别)分区,而不是错误地当成一个未分区的磁盘[2] ,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。例如,当在32位的Windows XP系统中挂载GPT磁盘时,会将其识别为“GPT 保护分区(GPT Protective Partition)”,并且用户无法对这个分区进行任何操作(除非使用命令行工具)[3] ,这是因为32位的Windows XP并不支持GPT,它仅仅只是知道挂载的是一个GPT磁盘而已。
在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。
另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。如Boot Camp就是使用这种方式启动Windows。[4]
LBA 1

分区表头(LBA 1)定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)
分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。[4]
分区表头的格式
起始字节
长度
内容
0
8字节
签名("EFI PART")
8
4字节
修订
12
4字节
分区表头的大小
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)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。[4]
LBA 2–33

LBA 2–33的位置存放的是分区表项。GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。[4]
GPT分区表项的格式
起始字节 长度 内容
0 16字节 分区类型GUID
16 16字节 分区GUID
32 8字节 起始LBA(小端格式)
40 8字节 末尾LBA
48 8字节 属性标签(如:60表示"只读")
56 72字节 分区名(可以包括36个UTF-16(小端格式)字符)
4操作系统支持
编辑

Windows

能在所有基于x64平台上用作存储卷,包括运行Windows XP Professional x64 Edition的平台。从Windows Server 2003 SP1开始,GPT磁盘也可用作基于x86的Windows平台上的存储卷。[5]
可用作基于x64的Windows 7、Windows Vista和Windows Server 2008版本上的引导卷。从Windows Server 2003 SP1开始,GPT磁盘也可用作基于Itanium的系统上的引导卷。[5]
尽管GPT规范对分区数量几乎没有限制。但是,Windows实现限制的分区数量为128个。GPT中的分区项的保留空间大小会限制分区数量。对于Windows Server 2003 SP1、Windows XP x64版本及更新的版本,支持的最大原始分区为18EB。(Windows文件系统目前的限制为每个256TB)。[2]
32位Windows GPT支持状况一览
操作系统版本
发行日期
平台
读写支持
启动支持
备注
Windows XP
2001-10-25
IA-32
-
Windows Server 2003
2003-04-24
IA-32
-
Windows Server 2003 SP1
2005-03-30
IA-32
混合硬盘1中优先使用MBR
Windows Vista
2006-07-22
IA-32
混合硬盘中优先使用MBR
Windows Server 2008
2008-02-27
IA-32
混合硬盘中优先使用MBR
Windows 7
2009-10-22
IA-32
混合硬盘中优先使用MBR
Windows 8
2012-08-01
IA-32
混合硬盘中优先使用MBR
64位Windows GPT支持状况一览
操作系统版本 发行日期 平台 读写支持 启动支持 备注
Windows XP Professional x64 Edition
Windows Server 2003
2005-04-25 x64 是 否 混合硬盘中优先使用MBR
Windows Server 2003 2005-04-25 IA-64 是 是 混合硬盘中优先使用MBR
Windows Vista 2006-07-22 x64 是 需要UEFI 混合硬盘中优先使用MBR
Windows Server 2008 2008-02-27 x64 是 需要UEFI 混合硬盘中优先使用MBR
Windows Server 2008 2008-02-27 IA-64 是 是 混合硬盘中优先使用MBR
Windows 7
Windows Server 2008 R2
2009-10-22 x64 是 需要UEFI 混合硬盘中优先使用MBR.
Windows Server 2008 R2 2009-10-22 IA-64 是 是 混合硬盘中优先使用MBR
Windows 8
Windows Server 2012
2012-08-01 x64 是 需要UEFI 混合硬盘中优先使用MBR.
注1:此处混合硬盘指MBR/GPT混合硬盘。
Mac OS X

Mac OS X 10.4或者更高的版本都支持挂载GPT磁盘。[6]
使用英特尔架构的苹果机也使用GPT。[6]
Linux

Linux内核必须提供GPT支持,以便对磁盘分区上的数据提供访问。幸运的是,长久以来,Linux一直包含这种支持。[1]
5分区类型GUID
编辑

操作系统
分区类型
GUID
EFI文件系统(标准)[2] [7]
C12A7328-F81F-11D2-BA4B-00A0C93EC93B
Windows[2]
微软保留分区
E3C9E316-0B5C-4DB8-817D-F92DF00215AE
基本数据分区
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
逻辑软盘管理工具元数据分区
5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
逻辑软盘管理工具数据分区
AF9B60A0-1431-4F62-BC68-3311714A69AD
Mac OS X[6]
HFS+分区
48465300-0000-11AA-AA11-00306543ECAC
UFS
55465300-0000-11AA-AA11-00306543ECAC
启动分区
426F6F74-0000-11AA-AA11-00306543ECAC
RAID分区
52414944-0000-11AA-AA11-00306543ECAC
RAID分区(Offline)
52414944-5F4F-11AA-AA11-00306543ECAC
标签
4C616265-6C00-11AA-AA11-00306543ECAC
ChromeOS[7]
Linux数据(标准)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
ChromeOS内核
FE3A2A5D-4F32-41A7-B725-ACCC3285A309
ChromeOS根文件系统
3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
ChromeOS固件
CAB6E88E-ABF3-4102-A07A-D4BB9BE3C1D3
ChromeOS将来使用
2E0A753D-9E48-43B0-8337-B15192CB1B5E
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值