parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk命令不同,它能够调整分区的大小,并且它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区等。
需要特别注意的是parted的操作是即刻生效的,所以操作前要认真想好。
【说明】以下操作在openEuler 22.03系统中完成。
用法格式:parted [选项] [设备] [指令]
parted命令有交互式模式和非交互式模式两种运行模式, 如果没有给出“指令”,则以交互模式运行。
常用选项如下表所示:
在指令中,常用的子命令如下:
与fdisk类似,parted可以使用命令【parted 设备名】进入交互模式。进入交互模式后,可以通过上表中的各种子命令对磁盘分区进行管理。
以下以两个新磁盘/dev/sdb和/dev/sdc为操作对象。
mklabel或者mktable子命令用于创建或更改磁盘标签(分区表类型)。以下以mkmklabel子命令为例进行介绍。
语法格式:mklabel LABEL-TYPE
利用【help mklabel】命令可以查看到LABEL-TYPE 支持的类型,其中最常用的就是gpt和msdos(也就是MBR) 。
mklabel命令通常不会破坏磁盘数据,但有可能让数据变得不可读。这是就需要用到rescue子命令来恢复分区,详见后面的rescue子命令。
用法示例1:创建MBR磁盘分区表, 以新磁盘/dev/sdb为例。
用法示例2:创建GPT磁盘分区表,以新磁盘/dev/sdc为例。
利用mklabel子命令创建新的分区标签并没有创建任何分区,还需要使用mkpart子命令创建新的分区。
语法格式:mkpart 分区类型 [文件系统类型] 起始点 结束点
利用【help mkpart】命令可以查看到支持的分区类型和支持的文件系统类型。
其中:分区类型包括primary(主分区)、logical(逻辑分区)和extended(扩展分区)三种。扩展分区和逻辑分区只对msdos和dvh分区表有效。
文件系统包括ext2、ext3、ext4、xfs、fat32和ntfs等数十种类型。
起始点和结束点分别指定分区的开始和结束位置,比如2048s、0%或者2GB等值,负值表示磁盘的末尾数起。例如,-1s 表示最后一个扇区。通常第一个分区的起始点为0%或者2048s,第二分区的起始点为第一个分区的结束点。结束点与起始点的差就是该磁盘分区的大小。
(1)创建MBR分区
MBR分区表中有主分区、扩展分区和逻辑分区之分。主分区和扩展分区的编号为1-4,逻辑分区的编号从5开始编号。
- 创建MBR主分区示例
- 创建MBR扩展分区和逻辑分区示例
要建立逻辑分区必须先建立扩展分区,逻辑分区是在扩展分区中创建的。
(2)创建GPT分区
GPT分区表下的所有分区都是主分区,分区编号从1开始顺序编号,创建GPT分区示例如下:
2、设置默认的单位
从前面的示例中可以看到,系统默认使用的单位是MB来显示磁盘分区容量,使用unit子命令可以指定默认单位。
语法格式:unit 单位
利用【help unit】子命令,或者在unit子命令后连续两次Tab键,可以查看支持的单位,主要单位及其简要介绍如下:
- s:扇区(n个字节,取决于扇区大小,通常为512字节)
- B:字节
- KiB:千字节(1024字节)
- MiB:兆字节(1048576字节)
- GiB:gibibyte(1073741824字节)
- TiB:tebibyte(1099511627776字节)
- kB:千字节(1000字节)
- MB:兆字节(1000000字节)
- GB:千兆字节(1000000000字节)
- TB:兆字节(1000000000000字节)
- %:设备的百分比(0到100之间)
- cyI:柱面(与BIOS CHS几何相关)
- chs:柱面,磁头,扇区寻址(与BIOS CHS几何相关)
- compact:这是一个特殊的单位,默认输入为兆字节,并且选择一个单位,以紧凑的可读格式表示输出
用法示例:
可以利用name子命令命名或更改分区名称,但只支持GPT, Mac, MIPS 和PC98 格式的分区。
语法格式:name 分区编号 分区名称
示例如下:
利用set子命令可以设置分区的旗标(flag)及其状态。
语法格式:set 分区编号 旗标 状态
利用【help set】子命令可以查看set子命令的用法和支持的旗标类型
旗标的状态有两种:on(生效)和off(失效)。
常见的旗标类型及其简介如下:
- boot:设置该旗标类型的状态为on表示从该分区引导系统。
- lba:用于MS-DOS分区表,该旗标告诉系统使用LBA(Logic Block Addressing)模式。
- swap:如果某分区是Linux系统的交换分区,那么就要对该分区启用这个标记。
- hidden:启用这个标记能使一个分区‘隐藏’起来。
- raid:启用这个标记能够告诉Linux系统这是一个软RAID磁盘阵列。
- LVM:启用这个标记能够告诉Linux系统这是一个LVM逻辑卷。
用法示例:
利用toggle子命令可以切换分区旗标的状态。
语法格式:toggle 分区编号 旗标
用法示例:
利用resizepart子命令可以调整分区的大小。但尽量不要对分区大小进行缩减,缩减磁盘分区大小可能会丢失数据,若确要调整建议要先备份好数据。
语法格式:resizepart 磁盘分区编号 结束点
用法示例:
利用rm子命令可以删除指定的磁盘分区。
语法格式:rm 磁盘分区编号
用法示例:
若用parted的rm子命令误删除了一个分区,就可以使用rescue子命令恢复误删除的磁盘分区。
语法格式:rescue 起始点 结束点
用法示例:上一个示例中已经删除了磁盘分区,现在通过rescue子命令将其恢复。
注:经测试,未格式化的磁盘分区被删除后不能成功恢复。
非交互模式就是把要操作的命令完整地写出来,对parted命令比较熟悉后就可以采用这种模式。
语法格式:parted 磁盘名称 print
用法示例:
语法格式:parted 磁盘名称 mklabel 分区表类型
用法示例:
语法格式: parted 磁盘名称 mkpart 磁盘分区名称 起始点 结束点
用法示例:
语法格式: parted 磁盘名称 unit 单位 print
用法示例:从上面的例子中可以看到显示单位为compact,以下命令更改为用GiB显示。
语法格式: parted 磁盘名称 name 分区编号 分区名称
用法示例:在上面的例子中可以看到分区1的名称为data1, 以下命令将其更改为data2
语法格式: parted 磁盘名称 set 分区编号 旗标类型 旗标状态
用法示例:在上面的例子中可以看到标志为空,且为off状态
语法格式: parted 磁盘名称 toggle 分区编号 旗标类型
用法示例:在上面的例子中,分区1的lvm旗标是on状态,以下命令将其切换为off状态。
语法格式: parted 磁盘名称 resizepart 分区编号 结束点
用法示例:在上面的例子中可以看到分区1的大小为2GB,以下命令将其调整到3GB。
语法格式: parted 磁盘名称 rm 分区编号
用法示例:在上面的示例中可以看有一个磁盘分区,以下命令将删除该分区
语法格式: parted 磁盘名称 rescue 起始点 结束点
用法示例:在上面两个示例中分别可以磁盘分区的起始点和结束点,并成功地删除了该分区,以下命令将恢复该分区(该分区在删除前要求格式化)