http://czmmiao.iteye.com/blog/1751408

GPT概述

全局唯一标识分区表(GUID Partition Table,缩写:GPT)是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。 传统的主启动记录 (MBR) 磁盘分区支持最大卷为 2.2 TB (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进制编辑器修改。
分区表头的格式如下

起始字节 长度 内容
0 8字节 签名("EFI PART", 45 46 49 20 50 41 52 54)
8 4字节 修订(在1.0版中,值是 00 00 01 00)
12 4字节 分区表头的大小(单位是字节,通常是92字节,即 5C 00 00 00)
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)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。

分区表项 (LBA 2–33) 
GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。
GPT分区表项的格式如下

起始字节 长度 内容
0 16字节 分区类型GUID
16 16字节 分区GUID
32 8字节 起始LBA(小端序 )
40 8字节 末尾LBA
48 8字节 属性标签(如:60 表示“只读”)
56 72字节 分区名(可以包括36个UTF-16(小端序)字符)

parted概述

上文介绍了GPT,由于常见的fdisk不支持GPT(在硬盘容量大于2Tb的时候无法使用fdisk进行分区的管理),故在IA64平台上管理磁盘时parted还是相当实用的,GNU Parted 具有丰富的功能,它除了能够进行分区的添加、删除等常见操作外,还可以进行移动分区、创建文件系统、调整文件系统大小、复制文件系统等操作。它可以处理最常见的分区格式,包括:ext2,ext3,fat16,fat32,NTFS,ReiserFS,JFS,XFS,UFS,HFS,以及Linux交换分区。 
parted 命令格式 
parted 有两种运行模式:命令行模式和交互模式。与 fdisk 的交互模式交互模式不同,在 parted 的交互模式下执行命令,一旦按回车键确认,命令就马上执行,对磁盘的更改就立刻生效。
parted 命令的常用格式是:
1、# parted [选项] <硬盘设备名>
2、# parted [选项] <硬盘设备名> <子命令> [<子命令参数>]
格式(1)用于进入parted 的交互模式,在该模式下输入parted的子命令对指定的硬盘进行分区等操作。quit 命令用于退出交互模式。
格式(2)直接在命令行方式下对指定的硬盘进行分区等操作。
其中常用的选项为:
-h, ––help — 显示求助信息
-i, ––interactive — 在必要时提示用户
-l, ––list — 显示所有磁盘设备的分区表
-s, ––script — 从不提示用户
-v, ––version — 显示版本
无论哪种模式,在parted中都可以使用若干子命令,见下表。

命令 
说明
help [COMMAND] 打印命令的帮助信息,或指定命令的帮助信息
print  [free|NUMBER|all]     显示分区表, 指定编号的分区, 或所有设备的分区表
mkpart PART-TYPE [FSTYPE] START END 创建新分区。PART-TYPE 是以下类型之一:primary(主分 区)、extended(扩展分区)、logical(逻辑分区)。START 和 END 是新分区开始和结束的具体位置。
rm NUMBER 删除指定编号 NUMBER 的分区。
set NUMBER FLAG STATE 对指定编号 NUMBER 的分区设置分区标记 FLAG。对于 PC 常用的 msdos 分区表来说,分区标记 FLAG 可有如下值:”boot”(引导), “hidden”(隐藏), “raid”(软RAID磁盘阵), “lvm”(逻辑卷), “lba” (LBA,Logic Block Addressing模式)。 状态STATE 的取值是:on 或 off
unit UNIT 设置默认输出时表示磁盘大小的单位为 UNIT,UNIT 的常用取值可以为:‘MB’、‘GB’、‘%’(占整个磁盘设备的百分之多少)、‘compact’(人类易读方式,类似于 df 命令中 -h 参数的用)、‘s’(扇区)、‘cyl’ (柱面)、‘chs’ (柱面cylinders:磁头 heads:扇区 sectors 的地址)
mkfs NUMBER FS-TYPE 对指定编号 NUMBER 的分区创建指定类型 FS-TYPE 的文件系 统。
mkpartfs PART-TYPE FSTYPE START END 创建新分区同时创建文件系统。FS-TYPE 是以下类型一:ext2、fat16、fat32、linuxswap、NTFS、reiserfs、ufs 等
cp [FROM-DEVICE] FROM-NUMBER TONUMBER 将分区 FROM-NUMBER 上的文件系统完整地复制到分区TO-NUMBER 中,作为可选项还可以指定一个来源硬盘的设备名称FROM-DEVICE,若省略则在当前设备上进行复制。
move NUMBER START END 将指定编号 NUMBER 的分区移动到从 START 开始 END 结束的位置上。注意:(1)只能将分区移动到空闲空间中。(2)虽然分区被移动了,但它的分区编号是不会改变的
resize NUMBER START END 对指定编号 NUMBER 的分区调整大小。分区的开始位置和结束位置由 START 和 END 决定
check NUMBER 检查指定编号 NUMBER 分区中的文件系统是否有什么错误
rescue START END 恢复靠近位置 START 和 END 之间的分区
mklabel,mktable LABELTYPE 创建一个新的 LABEL-TYPE 类型的空磁盘分区表,对于PC而言 msdos 是常用的 LABELTYPE。 若是用 GUID 分区表,LABEL-TYPE 应该为 gpt

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.

# parted -l /dev/sda             # 直接在命令模式下显示sda的分区表

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sda: 8590MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Number Start End Size Type File system 标志

1 32.3kB 107MB 107MB 主分区 ext3 启动

2 107MB 8587MB 8480MB 主分区 lvm

Model: VMware, VMware Virtual S (scsi)

参考至: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

转载于:https://www.cnblogs.com/JimMoriarty/p/3669256.html

GPT和parted命令详解相关推荐

  1. parted命令详解

    用法:parted [选项]... [设备 [命令 [参数]...]...]  将带有"参数"的命令应用于"设备".如果没有给出"命令",则 ...

  2. linux parted命令,Linux分区之parted命令详解

    作用:规划大小超过2T的分区,也可用于小分区的规划. 用法:parted [选项]... [设备 [命令 [参数]...]...] 帮助选项:-h, --help                    ...

  3. Linux分区之parted命令详解

    作用: 规划大小超过2T的分区,也可用于小分区的规划. 用法: parted [选项]... [设备 [命令 [参数]...]...] 帮助选项: -h, --help 显示此求助信息 -l, --l ...

  4. parted工具详解

    通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大:而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘.但是现在的磁盘空间很多都已经是 ...

  5. linux parted分区教程,分区工具parted的详解及常用分区使用方法

    分区工具parted的详解及常用分区使用方法 一. parted的用途及说明 概括使用说明: parted用于对磁盘(或RAID磁盘)进行分区及管理,与fdisk分区工具相比,支持2TB以上的磁盘分区 ...

  6. nmcli命令详解_【高新课堂】第一百二十五期Liunx必备命令

    点击上方"蓝字"关注我们吧! Liunx系统启动默认为字符界面,一般不会启用图像界面,所以对命令行的熟练程度能更加高效.便捷的管理Liunx服务器. 这节课向读者介绍Liunx系统 ...

  7. ceph命令系列(一):ceph-deploy/ceph/rados/rbd 常用命令详解

    ceph-deploy 常用命令详解 命令 描述 ceph-deploy new [mon-node ...] 指定node(s)为monitor,开始部署一个新的ceph集群,并且在当前目录创建ce ...

  8. 如何获取服务器机器码_dmidecode命令详解(获取硬件信息)

    如何获取服务器机器码_dmidecode命令详解_获取硬件信息 零.获取linux服务器机器码 一.dmidecode简介 二.dmidecode的作用 三.dmidecode命令用法 dmideco ...

  9. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

最新文章

  1. Git创建本地分支并关联远程分支
  2. exchange之2003迁移至2007
  3. 交叉熵代价函数——当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢...
  4. 知识图谱论文阅读【十二】【KDD2020】 使用贝叶斯图卷积神经网络推荐精确和多样化项目的框架【看不懂,待续】
  5. 业界资讯:adobe creative suite 5.5你准备好了吗?
  6. channel9.msdn.com 微软虚拟学院MVA系列视频课程
  7. 《树莓派实战秘籍》——1.20 技巧20使用Swap添加额外的内存
  8. HDU 4679 Terrorist’s destroy
  9. 调用有密码Web Service接口
  10. Lambert 投影转换相关代码
  11. Android 的singleTask和singleInstance的一点思考
  12. 远程访问centos系统
  13. 23万字 前端HTML与CSS学习笔记总结篇(超详细)
  14. DOS下常用网络命令技巧
  15. 利用E4A编写APP获取安卓手机加速度传感器数据
  16. 计算机打印错误,打印机错误正在打印处理方法,详细教您电脑打印机错误正在打印处理方法...
  17. ubuntu18与win10双系统引导修复
  18. 【flutter 起步走】Flutter 布局解决消消乐,谁说只会写写布局不能做游戏?
  19. DirectX11--实现一个3D魔方(3)
  20. AnimationDrawable 帧动画 爆炸特效

热门文章

  1. 单点登录(SSO)的原理,实现,对接。(完善之中)
  2. linux离线安装bower,linux 下bower安装和使用
  3. Java实现假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。
  4. 艾美捷EndoGrade卵清蛋白注意事项说明
  5. introduction to software exploits off-by-one 一字节溢出
  6. 黄聪:一位软件工程师的7年总结 [转]
  7. mac docker oracle11g,MacOS下使用Docker安装Oracle 11g
  8. OpenStack架构详解
  9. php日程提醒,window_Win10的日历应用中怎么新增日程安排及提醒?,Win10 内置“日历”应用 - phpStudy...
  10. 一位总经理的辞职信,以及回复