parted命令详解
Parted是一个比fdisk更高级的工具,它支持多种分区表格式,包括MS-DOS和GPT。它允许用户创建,删除,调整大小,缩小,移动和复制分区,重新组织磁盘使用,以及将数据复制到新硬盘,但在缩小分区时它没有按预期工作,我大部分时间都得到了错误,所以我建议用户不要缩小分区,GParted是分手的GUI前端。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及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%或2048s或1M都可以但是不要输入别的,下面有说明。
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%或2048s或1M或0G的数值,分区结束会有这个的提示,Warning: The resulting partition is not properly aligned for best performance.Ignore/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 #取消分区3的lvm标记
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 #取消分区3的lvm标记成功
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下分区工具