`

GPT和parted命令详解(原创)

 
阅读更多

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

0
1
分享到:
评论

相关推荐

    Android Parted GPT分区工具包

    Android Parted GPT分区工具包是一款专为Android设备设计的磁盘分区管理工具,它集成了GPT(GUID Partition Table)分区表的支持,使得用户能够更有效地管理和调整Android设备的存储空间。在Android系统中,分区管理...

    GPT及GNU parted使用法

    ### GPT与GNU Parted详解:现代磁盘分区与管理技术 #### 一、GPT(GUID Partition Table)概述 GPT(GUID Partition Table),即全局唯一标识符分区表,是一种较新的磁盘分区方案标准,它作为MBR(Master Boot ...

    parted parted的使用

    在这个命令中,parted 会显示当前磁盘的分区情况,包括每个分区的开始和结束位置、大小、类型、文件系统和标志等信息。 parted 的交互模式 parted 也可以在交互模式下使用。在交互模式下,用户可以输入命令来管理...

    详解GPT及未来机会 详解一下chatGPT

    **GPT技术详解** GPT,全称Generative Pre-trained Transformer,是由OpenAI开发的一种基于Transformer架构的语言模型。它的核心在于使用自回归式学习方法,通过预训练在大规模文本数据集上,掌握语言的内在规律,...

    分区格式化 parted 源码包

    1. **解压源码**:首先,使用`tar`命令解压缩parted-2.2.tar.gz文件,例如:`tar -zxvf parted-2.2.tar.gz`。 2. **进入源码目录**:解压后,进入解压后的目录,如`cd parted-2.2`。 3. **配置源码**:运行`./...

    GPT与MBr详解与区别

    ### GPT与MBR详解及区别 #### 一、MBR (Master Boot Record) MBR,即主引导记录,是一种传统的硬盘分区表格式,自个人电脑问世以来便一直被广泛使用。随着技术的发展,尤其是大容量硬盘的普及,MBR 的局限性逐渐...

    硬盘MBR和GPT分区详解.doc

    本文主要讨论两种常见的硬盘分区形式:MBR(Master Boot Record)和GPT(GUID Partition Table)。这两种分区方式各有优缺点,适用于不同的场景。 MBR分区是传统的分区方式,自1983年IBM PC DOS 2.0以来就一直被...

    linux大于2T的磁盘使用GPT分区的方法分享

    在linux我们可以先把大... 对GPT磁盘分区表进行操作,我们要使用功能强大的parted命令。 例:常用的parted命令 # parted /dev/sdb GNU Parted 1.8.1 Using /dev/sdb Welcome to GNU Parted! Type ‘help’ to view a li

    基于CentOS7的磁盘分区以及扩容_parted工具.md

    ### 基于CentOS7的磁盘分区及扩容——Parted工具详解 #### 一、Parted工具介绍 在Linux环境下,对于磁盘管理的需求非常常见,包括但不限于磁盘分区、格式化、扩容等。Parted是一款强大的磁盘分区管理工具,它可以...

    Linux GPT分区和文件系统组成详解

    本文将从硬盘的内部结构开始,详细解释Linux GPT分区和文件系统的组成,最后介绍软硬链接的创建。 硬盘结构分为几个部分,包括机械硬盘和ZBR磁盘,它们在存储数据时有着不同的结构和特点。 机械硬盘采用的是古老的...

    测试 GPT3.5与GPT4:哪个模型写的代码更优

    首先,我们试试看使用 GPT3.5 和 GPT4 为本文撰写开篇简介。下面是我的输入: Create a fun intro to a blog post comparing GPT4 with GPT3 on code generation tasks。 为一篇比较 GPT4 和 GPT3 在代码生成任务上...

    GPT自我揭秘GPT-3.5模型原理

    GPT-3.5模型是在GPT-3模型的基础上进一步优化和改进的。它采用了自回归语言模型的架构,即将文本序列作为输入,生成文本序列作为输出。这种模型的优点是可以生成自然流畅的文本,且可以自动学习语言规则和语言模式。...

    gnu parted 分区工具源码

    GNU Parted是一款强大的开源分区工具,它主要用于在Linux操作系统中创建、删除、调整和移动磁盘分区。Parted支持多种文件系统,并且可以处理大型硬盘,包括那些超过2TB的大容量磁盘。这个源码包"parted-1.8.3"提供了...

    xp系统支持gpt分区硬盘补丁

    《XP系统支持GPT分区硬盘补丁详解》 在信息技术领域,操作系统与硬件的兼容性是至关重要的。本文将深入探讨“XP系统支持GPT分区硬盘补丁”的相关知识点,帮助用户理解如何使老旧的Windows XP系统能够识别并支持GPT...

    parted分区工具

    Parted支持多种文件系统类型,包括常见的FAT、NTFS、EXT2/3/4、HFS+等,同时,它也支持Linux LVM(Logical Volume Manager)和GPT(GUID Partition Table)分区表,这对于现代操作系统和服务器环境来说至关重要。...

    gpt2-chinese

    《GPT2中文预训练小模型详解》 GPT2(Generative Pre-trained Transformer 2)是由OpenAI开发的一种先进的语言模型,它在自然语言处理领域具有广泛的应用和影响力。这个名为“gpt2-chinese”的项目,是GPT2模型针对...

    GPT2_1W.zip_CGPT2_1w_World_GPT2_GPT2_1w_gpt2气象参数_对流层

    标题中的"GPT2_1W.zip_CGPT2_1w_World_GPT2_GPT2_1w_gpt2气象参数_对流层"暗示了这是一个与GPT2模型相关的压缩包,其中包含了用于预测气象参数特别是对流层条件的资源。GPT2(Generative Pre-trained Transformer 2...

    GPT背后原理详解:从T5到GPT-4,国内20余位顶级大牛联合撰写

    总结来说,《GPT背后原理详解:从T5到GPT-4》这本书深入剖析了这一技术背后的理论框架、模型演进以及实际应用,对于理解和掌握这一前沿技术具有极高的价值。通过学习,我们可以更好地理解人工智能的发展趋势,以及...

Global site tag (gtag.js) - Google Analytics