当前位置:专辑空间 -- 技术备忘录
Linux超2T硬盘parted命令分区详解
2022-12-04 18:29: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%          #输入1磁盘开始位置,这里要输入0%或2048s或1M都可以但是不要输入别的,下面有说明。
End?   1G          #输入-1磁盘结束位置,默认单位为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)
发布:木船