parted分区命令

时间:2024-12-10 08:35:26

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下分区工具

parted分区命令