2023年11月25日发(作者:)

parted分区命令

Parted是⼀个⽐fdisk更⾼级的⼯具,它⽀持多种分区表格式,包括MS-DOSGPT。它允许⽤户创建,删除,调整⼤⼩,缩⼩,移动和复制分区,重

新组织磁盘使⽤,以及将数据复制到新硬盘,但在缩⼩分区时它没有按预期⼯作,我⼤部分时间都得到了错误,所以我建议⽤户不要缩⼩分

区,GParted是分⼿的GUI前端。作为⼀种设计⽤于Linux的⼯具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格

式,包括:ext2ext3fat16fat32NTFSReiserFSJFSXFSUFSHFS以及Linux交换分区。

这⾥要主要parted的操作是即刻⽣效的,所以操作前要认真想好

⼀、parted命令格式

⽤法:parted [选项] [设备] [指令]

将带有参数的命令应⽤于设备。如果没有给出命令,则以交互模式运⾏。

选项:

-h, 显⽰此求助信息

-l, 列出系统系统中所有的磁盘设备,和fdisk -l命令的作⽤差不多。

-m, 进⼊交互模式,如果后⾯不加设备则对第⼀个磁盘进⾏操作

-s, 脚本模式

-v, 显⽰版本

设备:磁盘设备名称,如/dev/sda

指令:如果没有给出指令,则parted将进⼊交互模式运⾏。

align-check 检查分区N的类型(min|opt)是否对齐

help 打印通⽤求助信息,或关于[指令]的帮助信息

mklabel 创建新的磁盘标签 (分区表)

mkpart 创建⼀个分区

name 给指定的分区命名

print 打印分区表,或者分区

quit 退出程序

rescue 修复丢失的分区

resizepart 调整分区⼤⼩

rm 删除分区

select 选择要编辑的设备,默认只对指定的设备操作,这⾥可以改变指定的设备

disk_set 更改选定设备上的标志

disk_toggle 切换选定设备上的标志状态

set 更改分区的标记

toggle 设置或取消分区的标记

unit 设置默认的单位

version 显⽰版本信息

⼆、parted交互模式分区管理

fdisk类似,parted可以使⽤命令“parted 设备名进⼊交互模式。进⼊交互模式后,可以通过parted的各种指令对磁盘分区进⾏管理。

1、新建GPT分区

这⾥要主要parted的操作是即刻⽣效的,所以操作前要认真想好。

root@debian:~# parted /dev/sdb #对磁盘/dev/sdb进⾏分区

GNU Parted 3.2

Using /dev/sdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) #如果忘记有那些可⽤的命令按两次Tab键可以显⽰所以可⽤的指令,也⽀持Tab命令补齐,和上下查找历史记。可⽤命令如

下:

align-check disk_toggle mklabel mktable print rescue resizepart select toggle version

disk_set help mkpart name quit resize rm set unit

(parted) help mklable #查看mklable命令的⽤法及⽀持的分区表

mklabel,mktable LABEL-TYPE create a new disklabel (partition table) #⽤法,mktable也是⼀样的作⽤

LABEL-TYPE is one of: atari, aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, loop #⽀持的分区类型

(parted) mklable gpt #创建gpt分区表,如果以存在分区表也可以通过这⾥命令更改

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?

Yes/No? yes # 警告⽤户磁盘上的数据将会被销毁,询问是否继续,我们这⾥是新的磁盘,输⼊yes后回车

(parted) print #查看分区表的信息

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5369MB

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

Partition Table: gpt #分区表以是gpt格式

Disk Flags:

Number Start End Size File system Name Flags

(parted) mkpart #输⼊mkpart新建分区,如果输⼊mkpart指令不带任何参数,parted会⼀步步提⽰⽤户输⼊相关信息最终完成创建,如

下所⽰:

Partition name? []? #分区的名字,这⾥可以直接回车不给分区命名,也可以输⼊⽤来标记的名字

File system type? [ext2]? #分区被格式化的⽂件系统,可以按两次Tab键查看⽀持的⽂件系统

affs0 affs6 amufs3 btrfs freebsd-ufs linux-swap ntfs

affs1 affs7 amufs4 ext2 hfs linux-swap(new) reiserfs

affs2 amufs amufs5 ext3 hfs+ linux-swap(old) sun-ufs

affs3 amufs0 apfs1 ext4 hfsx linux-swap(v0) swsusp

affs4 amufs1 apfs2 fat16 hp-ufs linux-swap(v1) xfs

affs5 amufs2 asfs fat32 jfs nilfs2 zfs

File system type? [ext2]? ext4 #输⼊被格式化的⽂件系统为ext4,这⾥必须要输⼊⽂件系统

Start? 0% #开始位置,这⾥要输⼊0%2048s1M都可以但是不要输⼊别的,下⾯有说明。

End? 1G #结束位置,默认单位为compact,我们想要⽤其他单位必须在数字后⾯加上单位

(parted) mkpart pname ext4 1G 2G #如果想⼀步就把分区创建好可以像左边⼀样,pname表⽰分区名这样分区这⾥必须有,后⾯3项⽬分

别是⽂件系统,开始位置,结束位置

(parted) mkpart pname 2G 100% #如果不想创建⽂件系统这⾥可以不加这个选项,后⾯两项分别是开始位置,和结束位置,100%表⽰使

⽤全部剩余空间

(parted) p #输⼊print查看分区情况,如果指令是唯⼀的直接输⼊指令的⾸字母也可以。

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5369MB #磁盘的总容量

Sector size (logical/physical): 512B/512B #扇区的⼤⼩

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 1000MB 999MB ext4 #通过⼀步步创建的第⼀个分区

2 1000MB 2000MB 999MB ext4 pname #通过⼀步就创建的分区

3 2000MB 5368MB 3368MB pname #创建不带⽂件系统的分区

如果Start位置输⼊的不是0%2048s1M0G的数值,分区结束会有这个的提⽰,Warning: The resulting partition is not properly aligned for best

/Cancel? (意思是说警告:⽣成的分区没有正确对齐以获得最佳性能。忽略/取消? 我们可以输⼊Ignore以忽略,但是这样并不好)

这是因为在512B扇区的磁盘驱动器上,Parted希望分区从2048的倍数(1 MiB对齐)扇区开始。

2、设置默认的单位

(parted) unit #输⼊unit更改默认单位,如果不知道⽀持那些单位直接回车

Unit? [compact]? #按两次Tab键,列出⽀持的单位,在parted交互模式下不知道怎么输⼊就先按两次Tab键看看有什么结果,很好⽤

% B chs compact cyl GB GiB kB kiB MB MiB s TB TiB

Unit? [compact]? GB #输⼊更改后的默认单位

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB #默认单位以改称GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB ext4 #默认单位以改称GB

2 1.00GB 2.00GB 1.00GB ext4 pname

3 2.00GB 5.37GB 3.37GB pname

3、更改分区名

(parted) name #输⼊name指令更改分区名,输⼊后直接回车

Partition number? 3 #输⼊要更改名的分区号

Partition name? [pname]? namep #输⼊新的名字

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB ext4

2 1.00GB 2.00GB 1.00GB ext4 pname

3 2.00GB 5.37GB 3.37GB namep #名称已经更改

4、配置分区的标记

parted的分区标记相当于fdisk gdisk⾥⾯的分区类型

(parted) set #输⼊set更改分区标记,输⼊后直接回车

Partition number? 3 #更改标记的分区

Flag to Invert? #输⼊更改标记的类型,按⼆次Tab键查看⽀持的类型

atvrecv boot esp hp-service legacy_boot msftdata prep

bios_grub diag hidden irst lvm msftres raid

Flag to Invert? lvm #标记为lvm类型

New state? [on]/off? on #输⼊on回车表⽰打开

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB ext4

2 1.00GB 2.00GB 1.00GB ext4 pname

3 2.00GB 5.37GB 3.37GB pname lvm #分区的标记已经成效

(parted) set #取消标记操作

Partition number? 3

Flag to Invert? lvm

New state? on/[off]? off #添加标记和取消标记的主要区别就在这⾥,这⾥要输⼊off来关闭标记

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB ext4

2 1.00GB 2.00GB 1.00GB ext4 pname

3 2.00GB 5.37GB 3.37GB pname #分区的标记已经取消

5、删除分区

(parted) rm #输⼊删除指令rm直接回车,如果后⾯加上分区号在回车就可以直接删除分区

Partition number? 3 #输⼊要删除的分区,这⾥操作⼀定要慎重,⼀旦回车就⽣效了,是不可退的。

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags #成功删除了分区

1 0.00GB 1.00GB 1.00GB

2 1.00GB 2.00GB 1.00GB pname

6、查看剩余可⽤的空间等信息

(parted) p #先查看分区的信息

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB

2 1.00GB 2.00GB 1.00GB pname

可⽤分区的容量需要⽤Disk /dev/sdb: 这⾏提供的总容量减去最后⼀个分区的结束位置的容量,这⾥举例中可⽤分区容量为:5.37GB-2.00GB=3.37G

7、调整分区⼤⼩

尽量不要对分区进⾏调整,可能会丢失数据,如果要调整也要先备份数据

(parted) resizepart #输⼊调整分区的指令resizepart直接回车,这⾥增加容量,增加容量的分区后⾯必须得有可⽤的未分配的分区

Partition number? 2 #输⼊要更改的分区

End? [2.00GB]? 4G #扩容后这个分区的结束位置,这个要根据扩容前分区结束的位置和增加的容量来确定最终的分区位置

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB

2 1.00GB 4.00GB 3.00GB ext4 pname

(parted) resizepart #这⾥减少容量

Partition number? 2

End? [4.00GB]? 3G

Warning: Shrinking a partition can cause data loss, are you

sure you want to continue?

Yes/No? yes #减少容量会有这样的警告:收缩分区会导致数据丢失,你确定要继续吗?

(parted)

三、⾮交互式parted分区命令

⾮交互模式建议把要操作的命令都在⽂本⽂件中写出来,确认⽆误后在进⾏配置。

1、创建GPT分区表

root@debian:~# parted /dev/sdc mklabel gpt #通过这⾥命令直接创建GPT分区表

Information: You may need to update /etc/fstab.

root@debian:~# parted /dev/sdc print #通过这⾥命令直接查看分区信息,print改称p也可以

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5369MB

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

Partition Table: gpt #创建成功

Disk Flags:

Number Start End Size File system Name Flags

root@debian:~#

2、创建分区

root@debian:~# parted /dev/sdc mkpart pname 0G 1G #创建1G容量的分区pname为分区名必须添加,这⾥不能直接添加⽂件系统类型,后⾯是

起始和结束位置

root@debian:~# parted /dev/sdc p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5369MB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 1000MB 999MB pname #成功创建,起始位置是0G也会从2048扇区开

始创建。

3、更改默认显⽰单位

root@debian:~# parted /dev/sdc unit GB print #需要在查看指令print前添加unit GB指令来以GB显⽰

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB pname

2 1.00GB 2.00GB 1.00GB pname

3 2.00GB 5.37GB 3.37GB pname

4、更改分区名

root@debian:~# parted /dev/sdc name 3 namep #更改分区3的分区名

root@debian:~# parted /dev/sdc print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5369MB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 1000MB 999MB pname

2 1000MB 2000MB 999MB pname

3 2000MB 5368MB 3368MB namep #更改成功

5、配置分区的标记

root@debian:~# parted /dev/sdc set 3 lvm #为分区3添加lvm标记

New state? [on]/off? on #输⼊on回车表⽰打开

Information: You may need to update /etc/fstab.

root@debian:~# parted /dev/sdc print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5369MB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 1000MB 999MB pname

2 1000MB 2000MB 999MB pname

3 2000MB 5368MB 3368MB namep lvm

root@debian:~# parted /dev/sdc set 3 lvm #取消分区3lvm标记

New state? on/[off]? off #添加标记和取消标记的主要区别就在这⾥,这⾥要输⼊off来关闭标记

Information: You may need to update /etc/fstab.

root@debian:~# parted /dev/sdc print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5369MB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 1049kB 1000MB 999MB pname

2 1000MB 2000MB 999MB pname

3 2000MB 5368MB 3368MB namep #取消分区3lvm标记成功

6、删除分区

root@debian:~# parted /dev/sdc rm 3 #删除分区3

Information: You may need to update /etc/fstab.

root@debian:~# parted /dev/sdc print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5369MB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags #删除分区3成功

1 1049kB 1000MB 999MB pname

2 1000MB 2000MB 999MB pname

7、查看剩余可⽤的空间等信息

root@debian:~# parted /dev/sdc unit GB print #查看分区的信息,以GB为单位显⽰

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB

2 1.00GB 2.00GB 1.00GB pname

可⽤分区的容量需要⽤Disk /dev/sdb: 这⾏提供的总容量减去最后⼀个分区的结束位置的容量,这⾥举例中可⽤分区容量为:5.37GB-2.00GB=3.37G

8、调整分区⼤⼩

尽量不要对分区进⾏调整,可能会丢失数据,如果要调整也要先备份数据

root@debian:~# parted /dev/sdc resizepart 2 4G #增加分区容量,要输⼊调整分区的指令及调整的分区,和扩容后这个分区的结束位置,这

个要根据扩容前分区结束的位置和增加的容量来确定最终的分区位置

Information: You may need to update /etc/fstab.

root@debian:~# parted /dev/sdc unit GB print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB ext4 pname

2 1.00GB 4.00GB 3.00GB ext4 pname #分区2的容量已经增加

root@debian:~# parted /dev/sdc resizepart 2 3G #减⼩分区的容量

Warning: Shrinking a partition can cause data loss, are you

sure you want to continue?

Yes/No? yes #减少容量会有这样的警告:收缩分区会导致数据丢失,你确定要继续吗?

Information: You may need to update /etc/fstab.

root@debian:~# parted /dev/sdc unit GB print

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdc: 5.37GB

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

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 0.00GB 1.00GB 1.00GB ext4 pname

2 1.00GB 3.00GB 2.00GB ext4 pname #分区2的容量已经减少

四、parted配额MBR分区

实际⽣产⽤对MBR的分区推荐⽤fdisk来进⾏操作

1、更改分区表

(parted) mklabel msdos #将现有的GPT分区更改成MBR分区,新磁盘也是通过这个指令来创建MBR分区

Warning: The existing disk label on /dev/sdb will be destroyed

and all data on this disk will be lost. Do you want to

continue? #警告:/dev/sdb上现有的磁盘标签将被销毁这个磁盘上的所有数据都将丢失。你想继续吗?

Yes/No? yes #输⼊yes继续,我的硬盘有gpt分区表才会提⽰,如果是新的磁盘不会提⽰

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5369MB

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

Partition Table: msdos #分区表已经改成MBR

Disk Flags:

Number Start End Size Type File system Flags

2、新建MBR分区

(parted) mkpart #新建第⼀个分区,MBR磁盘标签不⽀持分区名下⾯不会有输⼊选项

Partition type? primary/extended? primary #新建主分区还是扩展分区

File system type? [ext2]? ext4 #分区的⽂件系统类型

Start? 0% #起始位置

End? 1G #结束位置

(parted) mkpart primary 1G 2G #不进⾏交互直接创建主分区,不创建⽂件系统,

(parted) mkpart extended 2G 100% #直接创建扩展分区,不进⾏交互

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5369MB

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

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system Flags

1 1049kB 1000MB 999MB primary ext4 lba #新建的主分区

2 1000MB 2000MB 999MB primary lba #新建的主分区

3 2000MB 5369MB 3369MB extended lba #新建的扩展分区

(parted) mkpart #继续创建逻辑分区

Partition type? primary/logical? logical #新建主分区还是逻辑分区,只有创建了扩展分区才会出现逻辑分区的选项,输⼊logical

File system type? [ext2]? ext4

Start? 2G

End? 3G

(parted) mkpart logical ext4 3G 4G #直接创建逻辑分区同时格式化

(parted) p

Model: ATA VBOX HARDDISK (scsi)

Disk /dev/sdb: 5369MB

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

Partition Table: msdos

Disk Flags:

Number Start End Size Type File system Flags

1 1049kB 1000MB 999MB primary

2 1000MB 2000MB 999MB primary

3 2000MB 5369MB 3369MB extended lba

5 2001MB 3000MB 999MB logical ext4 lba #逻辑分区成功分区号从5开始

6 3001MB 4000MB 999MB logical ext4 lba

其他的操作和gpt分区下⼀样这⾥就不说了

五、Linux下分区⼯具