GPT和parted命令详解(原创)
GPT概述
全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。传统的主启动记录 (MBR) 磁盘分区支持最大卷为2.2TB (terabytes) ,每个磁盘最多有 4 个主分区(或 3 个主分区,1 个扩展分区和无限制的逻辑驱动器)。与MBR 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达 18 千兆兆字节(exabytes,1EB=10^6TB) 的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
与 MBR 分区的磁盘不同,GPT的分区信息是在分区中,而不象MBR一样在主引导扇区。为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区 (Protective MBR)的MBR分区表,这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。另外,GPT 分区磁盘有多余的主要及备份分区表来提高分区数据结构的完整性。
在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在硬盘最后保存了一份分区表的副本。与主启动记录 (MBR) 分区方法相比,GPT 具有更多的优点,因为它允许每个磁盘有多达 128 个分区,支持高达18 千兆兆字节的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区ID(GUID)。
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进制编辑器修改。
分区表头的格式如下
parted使用实例
# parted /dev/sdd
GNU Parted 1.8.1
Using /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print???????????????????????????????????????????????????????????
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 27.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
???????????????????????????????????????????????????????
(parted) print???????????? #查看分区信息 ?????????????????????????????????????????????
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 27.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number? Start?? End???? Size??? Type????? File system? Flags
?1????? 16.4kB? 4001MB? 4001MB? primary????????????????????
?4????? 4001MB? 4703MB? 701MB?? extended???????????????????
?5????? 4001MB? 4102MB? 101MB?? logical????????????????????
?6????? 4102MB? 4203MB? 101MB?? logical????????????????????
?7????? 4203MB? 4303MB? 101MB?? logical????????????????????
?8????? 4303MB? 4404MB? 101MB?? logical????????????????????
?9????? 4404MB? 4416MB? 11.5MB? logical????????????????????
10????? 4416MB? 4437MB? 21.0MB? logical????????????????????
11????? 4437MB? 4468MB? 31.4MB? logical????????????????????
12????? 4468MB? 4509MB? 40.9MB? logical?? ext3?????????????
(parted) mkpart???????????????? #创建新的分区 ??????????????????????????????????????
Partition type?? primary/logical? l??????????????????????????????????????
File system type?? [ext2]? ext3??????????????????????????????????????????
Start? 4509MB????????????????????????????????????????????????????????????
End? -1s??????? # 表示硬盘最后一个扇区,就是硬盘的最末尾处
Warning: You requested a partition from 4509MB to 27.1GB.????????????????
The closest location we can manage is 4516MB to 4697MB.? Is this still acceptable to you?
Yes/No? y????????????????????????????????????????????????????????????????
(parted) print???????????????????????????????????????????????????????????
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 27.1GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number? Start?? End???? Size??? Type????? File system? Flags
?1????? 16.4kB? 4001MB? 4001MB? primary????????????????????
?4????? 4001MB? 4703MB? 701MB?? extended???????????????????
?5????? 4001MB? 4102MB? 101MB?? logical????????????????????
?6????? 4102MB? 4203MB? 101MB?? logical????????????????????
?7????? 4203MB? 4303MB? 101MB?? logical????????????????????
?8????? 4303MB? 4404MB? 101MB?? logical????????????????????
?9????? 4404MB? 4416MB? 11.5MB? logical????????????????????
10????? 4416MB? 4437MB? 21.0MB? logical????????????????????
11????? 4437MB? 4468MB? 31.4MB? logical????????????????????
12????? 4468MB? 4509MB? 40.9MB? logical?? ext3?????????????
13????? 4516MB? 4697MB? 181MB?? logical????????????????????
(parted) unit s????????????? #设置单位为扇区???????????????????????????????????????
(parted) print???????????????????????????????????????????????????????????
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 52953087s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number? Start???? End?????? Size????? Type????? File system? Flags
?1????? 32s?????? 7815167s? 7815136s? primary????????????????????
?4????? 7815168s? 9185279s? 1370112s? extended???????????????????
?5????? 7815200s? 8011775s? 196576s?? logical????????????????????
?6????? 8011808s? 8208383s? 196576s?? logical????????????????????
?7????? 8208416s? 8404991s? 196576s?? logical????????????????????
?8????? 8405024s? 8601599s? 196576s?? logical????????????????????
?9????? 8601632s? 8624127s? 22496s??? logical????????????????????
10????? 8624160s? 8665087s? 40928s??? logical????????????????????
11????? 8665120s? 8726527s? 61408s??? logical????????????????????
12????? 8726560s? 8806399s? 79840s??? logical?? ext3?????????????
13????? 8819748s? 9173114s? 353367s?? logical????????????????????
(parted) rm 13?????????????? #删除分区13 ????????????????????????????????????????????????????????????
(parted) p
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 52953087s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number? Start???? End?????? Size????? Type????? File system? Flags
?1????? 32s?????? 7815167s? 7815136s? primary????????????????????
?4????? 7815168s? 9185279s? 1370112s? extended???????????????????
?5????? 7815200s? 8011775s? 196576s?? logical????????????????????
?6????? 8011808s? 8208383s? 196576s?? logical????????????????????
?7????? 8208416s? 8404991s? 196576s?? logical????????????????????
?8????? 8405024s? 8601599s? 196576s?? logical????????????????????
?9????? 8601632s? 8624127s? 22496s??? logical????????????????????
10????? 8624160s? 8665087s? 40928s??? logical????????????????????
11????? 8665120s? 8726527s? 61408s??? logical????????????????????
12????? 8726560s? 8806399s? 79840s??? logical?? ext3?????????????
(parted) set 12 lvm on????????? #将分区12的lvm标志打开,这里仅打开标志,并未实际创建lv
(parted) p???????????????????????????????????????????????????????????????
Model: OPNFILER VIRTUAL-DISK (scsi)
Disk /dev/sdd: 52953087s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number? Start???? End?????? Size????? Type????? File system? Flags
?1????? 32s?????? 7815167s? 7815136s? primary????????????????????
?4????? 7815168s? 9185279s? 1370112s? extended???????????????????
?5????? 7815200s? 8011775s? 196576s?? logical????????????????????
?6????? 8011808s? 8208383s? 196576s?? logical????????????????????
?7????? 8208416s? 8404991s? 196576s?? logical????????????????????
?8????? 8405024s? 8601599s? 196576s?? logical????????????????????
?9????? 8601632s? 8624127s? 22496s??? logical????????????????????
10????? 8624160s? 8665087s? 40928s??? logical????????????????????
11????? 8665120s? 8726527s? 61408s??? logical????????????????????
12????? 8726560s? 8806399s? 79840s??? logical?? ext3???????? lvm?
(parted) q??????????????? #退出交换模式 ??????????????????????????????????????????????
Information: Don't forget to update /etc/fstab, if necessary.
参考至:http://blog.sina.com.cn/s/blog_6ca646a00100z0uq.html
??????????? http://goward.jimdo.com/2010/07/19/linux-parted%E5%88%86%E5%8C%BA%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E8%AF%A6%E8%A7%A3/
??????????? http://zh.wikipedia.org/wiki/GUID%E7%A3%81%E7%A2%9F%E5%88%86%E5%89%B2%E8%A1%A8
??????????? http://baike.baidu.com/view/493745.htm
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com