Parted

出自 ArchWiki
(重定向自 GParted

GNU Parted 是一个用于创建和操作分区表的程序。 GParted 是一个图形前端。

安装

安装 以下软件包之一

注意: xorg-xhost 可选依赖项是运行 GParted 在 Wayland 上以 root 身份运行 GUI 应用程序 所必需的。 [1]

用法

Parted 有两种模式:命令行和交互式。 Parted 应该始终使用以下命令启动

# parted device

其中 device块设备 名称,例如 /dev/sda/dev/nvme0n1/dev/mmcblk0 等。 如果您省略 device 参数,parted 将尝试猜测您想要的设备。

命令行模式

在命令行模式下,后跟一个或多个命令。 例如

# parted /dev/sda --script mklabel gpt mkpart P1 ext3 1MiB 8MiB 
注意: 选项(如 --help)只能在命令行中指定。

交互模式

交互模式简化了分区过程,并通过自动将所有分区命令应用于指定的设备来减少不必要的重复。

为了开始在设备上操作,执行

# parted /dev/sdx

您会注意到命令行提示符从井号 (#) 变为 (parted):这也意味着新提示符不是在示例中运行命令时要手动输入的命令。

要查看可用命令列表,请输入

(parted) help

完成后,或者如果希望为另一个设备实现分区表或方案,请使用以下命令退出 parted

(parted) quit

退出后,命令行提示符将变回 #

如果您不给命令提供参数,Parted 将提示您输入。 例如

(parted) mklabel
New disk label type? gpt

舍入

由于许多分区系统都有复杂的约束,Parted 通常会做一些与您要求的略有不同的事情。(例如,创建一个从 10.352Mb 而不是 10.4Mb 开始的分区)如果计算值差异太大,Parted 会要求您确认。如果您确切知道自己想要什么,或者想确切地了解 Parted 在做什么,那么以扇区为单位(带有“s”后缀)指定分区端点并给出“unit s”命令会很有帮助,以便分区端点以扇区为单位显示。

从 parted-2.4 开始,当您使用 IEC 二进制单位(如 “MiB”、“GiB”、“TiB” 等)指定起始值和/或结束值时,parted 会将这些值视为精确值,并且等同于以字节为单位指定的相同数字(即,带有 “B” 后缀),因为它不提供 “有帮助的” 粗略范围。 与请求 “4GB” 的分区开始位置形成对比,后者实际上可能会解析为在该点之前或之后的最多 500MB 的某个扇区。 因此,在创建分区时,您应该首选指定字节 (“B”)、扇区 (“s”) 或 IEC 二进制单位(如 “MiB”)作为单位,而不是 “MB”、“GB” 等。

分区

创建新的分区表

警告: 如果您在包含数据的磁盘上创建新的分区表,它将擦除磁盘上的所有数据。 确保这是您想要做的。
提示

当设备以前从未分区过,或者当您想要更改其分区表的类型时,您需要(重新)创建设备的分区表。 当需要从头开始重构分区方案时,重新创建设备的分区表也很有用。

打开每个必须(重新)创建分区表的设备,使用

# parted /dev/sdx

然后创建新的 GUID 分区表,使用以下命令

(parted) mklabel gpt

要改为创建新的 主引导记录/MS-DOS 分区表,请使用

(parted) mklabel msdos

分区方案

此文章或章节需要扩充。

原因: 将所有百分比替换为显式的 MiB 对齐大小,以防止 对齐问题。 还要警告这些问题。(在 Talk:Installation guide#Remove parted 中讨论)

您可以决定设备应拆分为的分区数量和大小,以及将用于挂载已安装系统中分区的目录(也称为挂载点)。 有关所需分区,请参阅 分区#分区方案

以下命令将用于创建分区

(parted) mkpart part-type-or-part-label fs-type start end
  • part-type-or-part-label 的解释方式因分区表而异
    • MBR:该参数被解释为 part-type,可以是 primaryextendedlogical 之一。
    • GPT:该参数被解释为 part-label,它设置分区的 PARTLABEL 属性。 要避免设置分区标签,请传递一个空引号字符串 ("")。
      注意: 网络上的许多教程使用以 mkpart primary 开头的命令,即使对于 GPT 也是如此。 它们是错误的,这会将 “primary” 设置为分区标签。
  • fs-type 是从输入 help mkpart 列出的那些标识符中选择的标识符,作为与您将使用的文件系统最接近的匹配项。 mkpart 命令实际上并不创建文件系统:parted 将简单地使用 fs-type 参数来为 GPT 分区设置 分区类型 GUID 或为 MBR 分区设置 分区类型 ID
    提示
    • parted 将以 Linux 原生文件系统命名的类型映射到相同的 “Linux 文件系统” 分区类型(GUID 0FC63DAF-8483-4772-8E79-3D69D8477DE4 或 ID 0x83),因此例如对于 ext4 格式化的分区使用 ext2 是完全安全的。
    • 当使用 GPT 时,建议遵循 可发现分区规范,因为 systemd-gpt-auto-generator 可以自动挂载它们。 EFI 系统分区、XBOOTLDR 分区、交换分区和 home 分区类型可以使用 set 命令 更改,而对于根分区和其他分区,您需要使用 type 命令手动指定分区类型 UUID。
  • start 是分区从设备开始处的起始位置。 它由一个数字后跟一个 单位 组成,例如 1MiB 表示从 1 MiB 开始。
  • end 是分区从设备开始处的结束位置(不是start 值开始)。 它具有与 start 相同的语法,例如 100% 表示在设备末尾结束(使用所有剩余空间)。
提示
  • 在具有 MBR 分区表的磁盘上,在磁盘末尾保留至少 33 个 512 字节的扇区(16.5 KiB)的可用未分区空间,以允许 在 MBR 和 GPT 之间转换
  • 如果您不想在设备中留下未使用的空间,请确保每个分区都从上一个分区结束的位置开始。
注意
  • parted 不支持指定相对于上一个分区的分区的起始位置和结束位置。 请参阅 bug #59176bug #55841
  • parted 可能会发出类似以下的警告
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?
在这种情况下,请阅读 分区#分区对齐 并按照 #对齐 进行修复。

以下命令将用于标记包含 /boot 目录的分区为可启动

(parted) set partition boot on
  • partition 是要标记的分区的编号(请参阅 print 命令的输出)。
  • esp 是 GPT 上 boot 的别名。 [2]
  • legacy_boot 设置 Legacy BIOS 可启动属性。 此属性由 syslinux[3] 和其他具有传统 PC-AT BIOS 固件实现的软件使用。[4]

此文章或章节需要扩充。

原因: 解释 bootlegacy_bootesp 标志及其在 MBR 和 GPT 上的不同用法。(在 Talk:Parted 中讨论)

UEFI/GPT 示例

在每个实例中,都需要一个特殊的可启动 EFI 系统分区

如果创建新的 EFI 系统分区,请使用以下命令(建议大小至少为 1 GiB)

(parted) mkpart "EFI system partition" fat32 1MiB 1025MiB
(parted) set 1 esp on

其余分区方案完全由您决定。 对于使用 100% 剩余空间的一个根分区

(parted) mkpart "root partition" ext4 1025MiB 100%
(parted) type 2 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709

对于单独的交换分区(4 GiB)和 / 分区(所有剩余空间)

(parted) mkpart "swap partition" linux-swap 1025MiB 5121MiB
(parted) mkpart "root partition" ext4 5121MiB 100%
(parted) type 3 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709

对于单独的交换分区(4 GiB)、/ 分区(32 GiB)和 /home 分区(所有剩余空间)

(parted) mkpart "swap partition" linux-swap 1025MiB 5121MiB
(parted) mkpart "root partition" ext4 5121MiB 37889MiB
(parted) type 3 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
(parted) mkpart "home partition" ext4 37889MiB 100%
(parted) set 4 linux-home on

BIOS/MBR 示例

对于使用所有可用磁盘空间的最小单个主分区,将使用以下命令

(parted) mkpart primary ext4 1MiB 100%
(parted) set 1 boot on

在以下实例中,将创建一个 4 GiB 交换分区,后跟一个使用所有剩余空间的 / 分区

(parted) mkpart primary linux-swap 1MiB 4097MiB
(parted) mkpart primary ext4 4097MiB 100%
(parted) set 2 boot on

在下面的最后一个示例中,将创建单独的 /boot (1 GiB)、交换 (4 GiB)、/ (32 GiB) 和 /home (所有剩余空间) 分区

(parted) mkpart primary ext4 1MiB 1025MiB
(parted) set 1 boot on
(parted) set 1 bls_boot on
(parted) mkpart primary linux-swap 1025MiB 5121MiB
(parted) mkpart primary ext4 5121MiB 37889MiB
(parted) mkpart primary ext4 37889MiB 100%

调整分区大小

警告: 正在调整大小的 ext2/3/4 分区必须卸载且未使用。 在运行的操作系统上尝试编辑根文件系统是困难且危险的; 请改用 live 媒体/救援系统。
注意
  • 您只能使用 parted 移动分区的末尾。
  • 从 parted v3.2 开始,resizepart 可能需要使用 #交互模式[5]
  • 这些说明适用于具有 ext2、ext3、ext4 或 btrfs 文件系统的分区。

如果您要扩大分区,则必须首先调整分区大小,然后调整其上的文件系统大小,而对于缩小分区,必须先调整文件系统大小,然后再调整分区大小,以避免数据丢失。

扩大分区

要扩大分区(在 parted 交互模式下)

(parted) resizepart number end

其中 number 是您要扩大的分区的编号,end 是分区的新末尾(需要大于旧末尾)。

然后,要扩大分区上的 (ext2/3/4) 文件系统(如果未指定 size,则默认设置为分区的大小)

# resize2fs /dev/sdaX size

或者扩大 Btrfs 文件系统

# btrfs filesystem resize size /path/to/mount/point

其中 /path/to/mount/point 代表您要扩大的分区的挂载点,size16G+1G 的形式表示分区的新大小或修改量。 使用 max 填充分区上的剩余空间。

缩小分区

要缩小分区上的 ext2/3/4 文件系统

# resize2fs /dev/sdaX size
注意: 与 parted 相比,resize2fs(8) 使用 K、M、G 和 T 来表示 KiB、MiB、GiB 和 TiB。 请注意,e2fsprogs 文档错误地将 kibibytes、mebibytes、gibibytes 和 tebibytes 称为 “2 的幂次方千字节、兆字节、千兆字节、太字节”。

要缩小 Btrfs 文件系统

# btrfs filesystem resize size /path/to/mount/point

其中 /path/to/mount/point 代表您要缩小的分区的挂载点,size 是分区的新大小。

然后缩小分区(在 parted 交互模式下)

(parted) resizepart number end

其中 number 是您要缩小的分区的编号,end 是分区的新末尾(需要小于旧末尾)。

完成后,使用 util-linux 中的 resizepart 命令来告知内核新的大小

# resizepart device number size

其中 device 是包含分区的设备,number 是分区的编号,size 是分区的新大小,以 512 字节扇区为单位。

已知问题

Parted 始终会在执行可能危险的操作之前警告您,除非该命令是那些本质上危险的命令之一(例如 rmmklabelmkpart)。

对齐

警告: parted 仅对齐分区起始位置,但不包括大小。 这对于 dm-crypt/LUKS 来说是不够的,请参阅 高级格式#分区对齐

创建分区时,parted 可能会警告分区对齐不当,但不会提示正确的对齐方式。 例如

(parted) mkpart primary fat16 0 32M
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel?                                                     

此警告表示分区起始位置未对齐。 输入 “忽略” 以继续,以扇区为单位打印分区表以查看其起始位置,并删除/重新创建分区,并将起始扇区向上舍入为 2 的递增幂,直到警告停止。 例如,在具有 512B 扇区的闪存驱动器上,Parted 希望分区从 2048 的倍数的扇区开始,即 1 MiB 对齐。

如果您希望 parted 尝试为您计算正确的对齐方式,请将起始位置指定为 0% 而不是某个具体值。 要创建一个大的 ext4 分区,您的命令将如下所示

(parted) mkpart primary ext4 0% 100%

技巧和窍门

检查对齐

警告: parted 仅验证分区起始位置的对齐,但不包括大小。 这对于 dm-crypt/LUKS 来说是不够的,请参阅 高级格式#分区对齐

在已分区的磁盘上,您可以使用 parted 验证设备上分区的对齐方式。 例如,要验证 /dev/sda 上分区 1 的对齐方式

# parted /dev/sda
(parted) align-check optimal 1
1 aligned

参见