Fdisk

来自 Arch Linux 中文维基

util-linux fdisk 是基于命令行界面的分区表创建和编辑工具。一个硬盘需要分为一个或多个分区,这个信息在分区表里面记录。

本文介绍 fdisk(8)sfdisk(8) 工具的使用。

注意:util-linux的2.23版本起,fdisk已支持GPT[1]或者,也可以使用gptfdisk。详情见gdisk
提示:cfdisk(8) 工具提供了基本的功能和 curses 文本界面。

安装[编辑 | 编辑源代码]

要使用 fdisk 及相关工具,请使用 util-linux 软件包,这个软件包是 base 的依赖。

显示分区[编辑 | 编辑源代码]

要列出设备上的分区表和分区,可以运行以下命令,假设设备的名称为 /dev/sda:

# 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

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

要稍后恢复此布局,可以运行:

# sfdisk /dev/sda < sda.dump

创建分区表和分区[编辑 | 编辑源代码]

磁盘 partitioning 的第一步是创建分区表. 然后, 根据所需的 partition scheme 创建实际分区.参见 partition table 一文来帮助你选择使用 MBR 或是 GPT.

在开始之前,您可能希望 backup 您当前的分区表和方案.

fdisk 的最近版本不再使用磁道作为默认显示单位并放弃了对MS-DOS文件系统的兼容性。fdisk在 2048 个 512 字节扇区 (1 MiB) 块大小基础上自动进行分区对齐,这应该与所有使用 Advanced Format 的HDD和绝大多数 SSD 兼容。 这意味着默认设置会自动使用正确的对齐方式。

为了使用 fdisk, 带上你想要更改/编辑的 block device 的名字,运行程序。在本例中我们使用 /dev/sda:

# fdisk /dev/sda

这将启动“fdisk”程序,您可以在其中键入命令。

创建新的分区表[编辑 | 编辑源代码]

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

输入 o 来新建一个 MBR 分区表并清除磁盘上的所有数据;输入 g 来新建一个GUID分区表 (GPT)。 如果已创建所需的分区表,请跳过此步骤。

创建分区[编辑 | 编辑源代码]

使用 n 命令创建分区。需要输入 MBR 分区类型、分区号、起始扇区和结束扇区。

分区大小和位置的选择请参考 Partitioning#Partition scheme

分区类型[编辑 | 编辑源代码]

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

fdisk 不会询问分区类型 ID, 直接使用默认的 'Linux filesystem',可以在随后修改分区类型 ID。

分区编号[编辑 | 编辑源代码]

分区编号是分区在磁盘中的编号,例如 磁盘 /dev/sda1 号分区为 /dev/sda1。分区的编号可能不与磁盘上的分区顺序一致,请参考 分区排序

建议使用 fdisk 推荐的默认编号。

起始和结束扇区[编辑 | 编辑源代码]

起始扇区必须使用绝对扇区号,结束扇区可以使用绝对位置或者使用 + 符号指定相对偏移量,单位可指定为 KMGT) 或 P,例如设置为 +2G 表示结束扇区为起始扇区增加 2GiB,不输入直接按 Enter 将用第一个空余扇作为开始扇区,同区块的结尾作为结束扇区。

这篇文章的某些内容需要扩充。

原因: Suggest using Discoverable Partitions. (在 Talk:Fdisk 中讨论)
提示:
  • 在分区时,遵循第一个和最后一个分区扇区的默认值是一个好主意。此外,使用“+<size>{M,G,…}”来指定分区大小。此类分区始终根据设备属性对齐。
  • 在MBR分区的磁盘上,如果需要,在磁盘末端留出至少16.5 KiB的可用空间以简便地 converting between MBR and GPT
  • EFI system partition 需要系统为 EFI System.
  • 在将GRUB安装到 BIOS 系统的磁盘时 GRUB 需要一个 BIOS boot 类型的 BIOS boot partition.
  • 建议在任何的 swap 分区使用 Linux swap , 因为 systemd 将会自动挂载它.

有关这些分区的大小和位置的注意事项,请参见相应的文章。

重复此过程,直到获得所需的分区。

修改分区类型[编辑 | 编辑源代码]

每个分区都有类型,MBR 使用 分区 ID 进行定义; GPT 使用 分区类型 GUID 进行定义。

t 修改分区类型,默认是 Linux filesystem,正常情况下都无需修改。

提示:

设置分区启动位[编辑 | 编辑源代码]

a 可以将一个 MBR 分区设置为可启动分区。

将改动写入磁盘[编辑 | 编辑源代码]

使用 w 退出程序并将分区写入磁盘中.

移动分区[编辑 | 编辑源代码]

警告: 因为移动分区时需要重写全部的分区数据,所以要移动的分区必须先下线。移动分区的动作很慢且存在风险,强烈建议操作前进行备份。sfdisk 手册中有说明: "这个操作存在风险而且是非原子操作。"

要移动分区,先要准备足够的空余磁盘空间。如果需要,可以缩小分区及文件系统,请参考 Parted#Shrinking partitions。要移动分区:

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

其中 sectors 是要偏移的扇区数,+ 表示增加, device 是分区所在设备,number 是分区编号。如果在磁盘的开始或中间增加了分区,想重新编号,可以参考 #分区排序fdisk 的 "额外功能" 模式。

提示和技巧[编辑 | 编辑源代码]

分区排序[编辑 | 编辑源代码]

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

# sfdisk -r /dev/sda

在调整分区顺序后,如果没有使用 Persistent block device naming,需要调整 /etc/fstab/etc/crypttab 等使用分区编号的配置文件。

注意: 内核必须要读取新分区表,/dev/sda1需要是可访问状态,重启系统或让内核 重新读取分区表(执行partprobe /dev/sda)。

另见[编辑 | 编辑源代码]