在 Linux 中使用 Parted 创建和管理磁盘分区

有许多实用程序,例如 fdisk、cdisk,用于在 Linux 和类 Unix 系统中对硬盘进行分区。 在本文中,我们将重点介绍怎样使用 parted 实用程序在 Linux 中创建分区和管理磁盘分区(调整大小、删除分区)。

什么是分开?

GNU Parted 是一个命令行套件,用于在 Linux 和 Unix 系统中创建和操作分区表。 使用 Parted,可以创建、调整大小、删除分区、重新组织磁盘使用、复制数据和创建磁盘映像。

Parted 包含一个库, 自由分离,以及命令行前端, 分开,也可以在脚本中使用。 Parted 旨在最大程度地减少数据丢失的机会。 它执行许多安全检查,以避免在不可预见的情况下丢失数据,例如 example 电源(检测)失败。

Parted 是现代 Linux 操作系统默认附带的免费开源程序。

在 Linux 中安装 Parted

Parted 随所有 Linux 发行版一起安装。 如果您的发行版中没有 parted,您可以运行以下命令来安装它。

要在 Alpine Linux 上安装 Parted,请运行:

$ sudo apk add parted

在 Arch Linux、EndeavourOS 和 Manjaro Linux 上,运行:

$ sudo pacman -S parted

对于 Debian/Ubuntu 及其衍生版本,运行以下命令。

$ sudo apt -y install parted

Fedora、RHEL、AlmaLinux 和 Rocky Linux:

$ sudo dnf install parted -y

选择正确的设备

在使用 parted 之前首先要注意的是你要分区的磁盘。 当您运行 parted 命令而不传递磁盘名称作为参数时,它将使用它找到的第一个块设备并使用它。

$ sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)     

小心: 您应该使用 sudo 或切换为 root 用户并运行 parted 命令。

要使用特定设备,您必须通过该设备(例如 /dev/sdc) 作为 parted 命令的参数。

$ sudo parted /dev/sdc
GNU Parted 3.2
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)

或者,从 parted 实用程序内部,您可以使用 "select" 命令。

(parted) select /dev/sdb
Using /dev/sdb
(parted) select /dev/sdc
Using /dev/sdc

要获取 parted 命令的列表,请运行 help 命令。

(parted) help

  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resizepart NUMBER END                    resize partition NUMBER
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  disk_set FLAG STATE                      change the FLAG on selected device
  disk_toggle [FLAG]                       toggle the state of FLAG on selected device
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted

这些命令中的每一个都有一个单独的帮助部分。 为了 example如果你想获得支持选项 print 命令您可以运行以下命令。

(parted) help print

如果您希望查看所有可用块设备的分区表,请从终端运行以下命令。

$ sudo parted -l

要查看 parted 实用程序中的分区表,请使用 "print" 命令。

print 命令最后会为您提供磁盘型号、磁盘大小、分区方案和分区表等信息。 由于这是一个新磁盘,因此没有创建分区。

打印命令

要获取磁盘的分区方案,您可以运行 print 在分开的控制台中执行命令或直接从终端运行以下命令。

$ sudo parted /dev/sdc print | grep -i table
Partition Table: gpt

您可以通过传递单独获取块设备名称 "devices" 作为打印命令的参数。

(parted) print devices
/dev/sdc (21.5GB)
/dev/sda (53.7GB)
/dev/sdb (21.5GB)
/dev/sr0 (61.1MB)

您可以通过传递获得磁盘上剩余的可用空间量 "free" 作为论据 print 命令。

(parted) print free                                                       
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
        17.4kB  21.5GB  21.5GB  Free Space

要打印 parted 中的所有设备信息,请通过 "list,all" 作为一个论据 print 命令。

(parted) print list,all

未标记的磁盘

在使用驱动器创建分区之前,应将驱动器标记为使用特定的分区方案。 如果您在未标记的磁盘上运行打印命令,您会看到错误。

(parted) print
Error: /dev/sdc: unrecognised disk label
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

要创建标签,您可以使用 mklabel 要么 mktable 命令。 如果您不知道支持的标签列表,请运行“help mklabel“ 要么 ”help mktable”。

显示 mklabel 命令帮助

我将标记此驱动器以使用 GPT 方案。 如果您需要 MBR 分区方案,请使用 msdos.

(parted) mklabel gpt

现在如果你运行 print 再次命令,您可以看到标签。

警告: 在运行此命令之前,请确保您使用的是正确的磁盘。 因为这个命令可以用它的数据清除磁盘中的整个分区。

使用 Parted 创建新分区

要创建分区,您必须使用 mkpart 命令。

在运行 mkpart 命令之前,请查看帮助信息,其中将提供有关选项列表的详细信息。

help mkpart

我将创建两个大小为 10GB 的分区。 让我们创建第一个分区。

(parted) mkpart
Partition name? []? project
File system type? [ext2]? ext4
Start? 1
End? 10GB

此步骤将是交互式的。

  • 为分区选择一个名称。
  • 选择文件系统类型。 默认情况下,它设置为 ext2.
  • 选择磁盘的起始位置。 您可以以 MB、GB 为单位进行指定。 这里我给出了 1,所以它将从 1MB 开始。
  • 选择磁盘的结束位置。 这里, 10GB 给出。

跑过 print 命令,您可以看到创建的分区。

(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
​
Number Start   End     Size   File system Name                 Flags
1     1049kB 10.0GB 9999MB               project

让我们创建第二个分区。 您可以组合所有交互式输入并将它们作为参数传递给 mkpart 命令。

(parted) mkpart project1 ext4 10001MB 19999MB

您创建的分区尚未保存。 您必须使用“partprobe” 命令通知内核您所做的分区表更改。

Exit 通过键入“离开parted实用程序quit“并运行 partprobe 命令。

$ sudo partprobe

删除分区

您可以使用删除分区 rm 命令。 这 rm 命令接受分区号作为参数并删除该分区。

help rm

如果分区是活动的并且已经挂载了文件系统,那么最好先清理数据,卸载文件系统,然后删除分区。

如果您在使用时尝试删除分区,系统会提示您确认删除分区,并且会提示您更改将在重新启动后生效。 选择 ”Ignore”。

(parted) rm 1
Warning: Partition /dev/sdc1 is being used. Are you sure you want to continue?
Yes/No? yes
Error: Partition(s) 1 on /dev/sdc have been written, but we have been unable to inform the kernel of the
change, probably because it/they are in use. As a result, the old partition(s) will remain in use. You
should reboot now before making further changes.
Ignore/Cancel? ignore

将名称标记到分区

您可以使用“name” 命令重命名或为分区分配名称。 name 命令接受分区号作为第一个参数,后跟新名称。

(parted) name 2 p1

在这里,我将分区 2 的名称从 项目1p1.

调整分区大小

您可以使用 resizepart 命令。 命令 resizepart 将分区 ID 作为参数。 它会问你应该是什么大小(结束?)。

让我们缩小我创建的第一个分区。 分区 ID 为 1 并且分区大小是 10GB. 在这里,我将分区缩小到 5GB.

(parted) resizepart 1
End? [10.0GB]? 5 GB
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? yes

我的第二个分区有 5GB 空间,我希望再添加 2GB 并使其达到 7GB。

(parted) resizepart 2
End? [15.0GB]? 17GB

现在,如果我打印我的分区表,我的第一个分区缩小到 5GB,第二个分区扩展到 7GB。

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  5000MB  4999MB  ext4         p1
 2      10.0GB  17.0GB     7000MB  ext4         p2

修改分区标志

使用 set 命令,您可以为分区分配一个标志。 要获取支持的标志列表,请运行以下命令 help 命令。

(parted) help set
设置命令帮助设置命令帮助

假设如果要将分区标记为交换分区,则必须运行以下命令

set [partition name] [flag] [ON/OFF]

(parted) set 1 swap ON

创建文件系统

到目前为止,您已经学习了怎样使用 parted 来执行不同的磁盘分区操作。 您可能已经知道,您需要格式化分区并挂载它才能开始使用该分区。

您可以检查通过运行创建的分区 lsblk 命令。

$ lsblk
lsblk 命令输出lsblk 命令输出

让我们创建一个类型的文件系统 ext4 为了 /dev/sdc1 通过运行以下命令。

$ mkfs.ext4 /dev/sdc1

现在根据需要将文件系统安装在任何目录中并使用分区。

$ mount /dev/sdc1 /mnt/
$ df -h /dev/sdc1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc1       4.6G   19M  4.3G   1% /mnt

结论

在本文中,我们讨论了怎样使用 parted 实用程序在 Linux 中通过 Parted 程序创建和管理磁盘分区。 我们还研究了怎样使用 ext4 文件系统格式化新创建的分区并将其挂载到我们的系统中。

从 RHEL 版本 8 开始,Red Hat 建议使用 parted 实用程序而不是 fdisk。 所以如果你是准备 RHCSA 认证的人,那么这篇文章对你很有用。

对于 Linux 桌面用户,parted 有一个 GUI 版本,称为 GParted. 我们将很快在另一篇文章中详细讨论 Gparted。 敬请关注!

资源:

相关阅读:

  • 怎样在 Linux 中查找挂载的文件系统类型