跳转至内容

fdisk

来自 ArchWiki

util-linux fdisk 是一个对话驱动的命令行实用程序,用于在硬盘上创建和操纵分区表及分区。硬盘被划分为若干分区,这种划分被描述在分区表中。

本文介绍了 3 种具有不同接口的分区工具

  • fdisk(8) - 主要的对话驱动交互式工具,
  • sfdisk(8) - 脚本友好型工具,用于自动配置以及分区的备份/恢复,
  • cfdisk(8) - 面向 TUI 的交互式工具,通常被认为更用户友好。

安装

fdisk 及其相关实用程序由 util-linux 软件包提供,该包是 base 元软件包 的依赖项。

列出分区

要列出 块设备 上的分区表和分区,可以运行以下命令,其中 device 是一个名称,如 /dev/sda/dev/nvme0n1/dev/mmcblk0 等。

# fdisk -l /dev/sda
注意 如果未指定设备,fdisk 将列出 /proc/partitions 中的所有分区。

备份和恢复分区表

在对硬盘进行更改之前,您可能想要备份驱动器的分区表和分区方案。您还可以使用备份将相同的分区布局复制到多个驱动器中。

对于 GPT 和 MBR,您可以使用 sfdisk-d/--dump 选项将设备的分区布局保存到文件中。针对设备 /dev/sda 运行以下命令

# sfdisk -d /dev/sda > sda.dump

对于一个大小为 1 GiB 的单个 ext4 分区,文件内容应类似于这样

sda.dump
label: gpt
label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE
device: /dev/sda
unit: sectors
first-lba: 34
last-lba: 1048576
sector-size: 512

/dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7

若要随后恢复此布局,您可以运行

# sfdisk /dev/sda < sda.dump

创建分区表和分区

分区磁盘的第一步是创建分区表。之后,根据所需的分区方案 partition scheme 创建实际的分区。请参阅 分区表 文章以帮助决定使用 MBR 还是 GPT

在开始之前,您可能希望 备份 当前的分区表和方案。

fdisk 自动在 2048 个 512 字节扇区(1 MiB)的块大小基础上执行分区对齐,这应与所有 高级格式 (Advanced Format) HDD 以及绝大多数(如果不是全部)SSD 兼容。这意味着默认设置将为您提供正确的对齐。

要使用 fdisk,请运行该程序并指定您想要更改/编辑的 块设备 名称。本示例使用 /dev/sda

# fdisk /dev/sda

这将打开 fdisk 对话界面,您可以在其中输入命令。

创建新表

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

要创建新的分区表并清除所有当前分区数据,请在提示符下输入 g 以创建 GUID 分区表 (GPT),或输入 o 以创建 MBR 分区表。如果您需要的表已经创建,请跳过此步骤。

创建分区

使用 n 命令创建新分区。您必须输入分区编号、起始扇区和结束扇区。如果使用 MBR 格式,可能还需要指定分区类型。

注意 有关分区大小和位置的考虑,请参阅 分区#分区方案

分区类型

使用 MBR 时,fdisk 会询问 MBR 分区类型。请指定它,输入 p 创建主分区,或输入 e 创建扩展分区。最多可以有四个主分区。

fdisk 不会询问分区类型 ID,默认使用“Linux filesystem”;您可以稍后更改它

分区编号

分区编号是分配给分区的数字,例如,在 /dev/sda 磁盘上编号为 1 的分区将是 /dev/sda1,在 /dev/nvme0n1 上是 /dev/nvme0n1p1,在 /dev/mmcblk0 上是 /dev/mmcblk0p1。有关命名方案的详细信息,请参阅 设备文件#分区。分区编号可能不总是与磁盘上的分区顺序匹配,在这种情况下可以 排序

建议选择 fdisk 建议的默认编号。

起始扇区和结束扇区

起始扇区必须使用扇区编号以绝对值指定。结束扇区可以使用扇区编号的绝对位置,或者使用 kibibytes (K)、mebibytes (M)、gibibytes (G)、tebibytes (T) 或 pebibytes (P) 测量的位置来指定;

结束扇区的位置可以指定为

  • 从磁盘开始的绝对位置。例如,40M 作为起始扇区指定了距离磁盘开始处 40 MiB 的位置。
  • 相对项,在大小前加上 +size-size。例如 +2G 指定起始扇区后 2 GiB 的点,或 -200M 指定最后一个可用扇区前 200 MiB 的点。

Enter 键而不输入任何内容会指定默认值,即起始扇区为最大可用块的开始,结束扇区为同一块的结束。

  • 分区时,遵循分区的起始扇区默认值始终是一个好主意。此外,请确保使用 +size{M,G,T,P} 标记指定分区大小,并且不要使用小于 1 MiB 的大小。这样的分区将始终根据设备属性对齐。
  • EFI 系统分区 需要分区类型为 EFI System
  • 在基于 BIOS 的系统上将 GRUB 安装到 GPT 分区的磁盘时,GRUB 需要一个分区类型为 BIOS bootBIOS 引导分区
提示 在具有 MBR 分区表的磁盘上,在磁盘末尾保留至少 33 个 512 字节扇区(16.5 KiB)的未分区空闲空间,以便允许在 MBR 和 GPT 之间转换

重复此过程,直到拥有所需的分区。

更改分区类型

每个分区都关联一个类型。MBR 使用分区 ID;GPT 使用分区类型 GUID

按下 t 更改分区的类型。您可以使用常用分区类型的别名

  • uefi 用于 ESP
  • xbootldr 用于 XBOOTLDR 分区
  • home 用于 home 分区
  • swap 用于 swap 分区
  • linux 用于其他分区
提示

使 MBR 分区可引导

您可以通过输入 a 使 MBR 分区可引导(即激活)

检查并写入分区表更改

  • 通过 p 命令打印更改。
  • 通过 q 命令放弃更改。
  • 使用 w 命令将更改写入磁盘并退出。

创建文件系统

要在新分区上创建文件系统,请参阅 文件系统#创建文件系统

移动分区

警告 分区只能在离线状态下移动。因为移动分区需要将整个分区在磁盘上重写,这是一个缓慢且潜在危险的操作。强烈建议进行备份!根据 sfdisk(8) § OPTIONS ,“此操作具有风险且非原子性的”。

为了移动分区,您需要有可用的空闲空间用于移动分区。如有必要,您可以通过缩小分区及其上的文件系统来腾出空间。请参阅 Parted#缩小分区。要重新定位分区

# echo '+sectors,' | sfdisk --move-data device -N number

其中 sectors 是移动分区的扇区数(+ 表示向前移动),device 是持有该分区的设备,number 是分区编号。请注意,如果您在磁盘中间或开头添加新分区,您可能需要重新对分区编号。请参阅 #排序分区fdisk 的“额外功能”模式。

技巧与提示

排序分区

这适用于在两个分区之间的空间中创建了新分区或删除了分区的情况。本示例中使用 /dev/sda

# sfdisk -r /dev/sda

排序分区后,如果您未使用 持久块设备命名,则可能需要调整 /etc/fstab 和/或 /etc/crypttab 配置文件。

注意 内核必须读取新的分区表,分区(例如 /dev/sda1)才能使用。请重启系统或告诉内核重新读取分区表(即 partprobe /dev/sda)。

cfdisk

cfdisk(8) 实用程序提供了一个基于 curses 的 TUI,比 fdisk 更用户友好,但不支持 extra/expert 命令下列出的大多数 fdisk 功能。运行方式如下

# cfdisk /dev/sda
  • 您可以按下键盘上的 ? 键来显示 TUI 的帮助屏幕。
  • cfdisk 启动时,TUI 在屏幕顶部显示当前分区列表。其中一个分区总是被 >> 光标和反色背景选中 - 您可以使用上/下方向键移动选择。
  • 在底部,cfdisk 显示当前选中分区的详细信息以及可以对其执行的命令列表 - 使用左/右方向键选择命令,然后按 Enter 运行。帮助文本显示在命令下方。
  • 与标准 fdisk 类似,所有操作都被排队,仅在您运行 Write 命令时执行 - 在此之前磁盘上不会发生任何更改。您可以随时退出程序以安全地丢弃所有更改。
  • 如果您的磁盘还没有分区表,系统将提示您创建。如果您想更改现有的分区表格式,您必须擦除磁盘内容或使用经典 fdisk 来清除并重新创建分区表

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.