fdisk
util-linux fdisk 是基于命令行界面的分区表创建和编辑工具。一个硬盘需要分为一个或多个分区,这个信息被记录在分区表里面。
本文介绍 fdisk(8) 和 sfdisk(8) 工具的使用。
要使用 fdisk 及相关工具,请使用 util-linux包 软件包,这个软件包是 base包 元软件包的依赖。
要列出块设备上的分区表和分区,可以运行以下命令,其中设备的名称类似于 /dev/sda、/dev/nvme0n1、/dev/mmcblk0 等:
# fdisk -l /dev/sda
/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
硬盘分区的第一步是创建分区表。然后,根据所需的分区方案创建实际分区。参见分区表一文来帮助你选择使用 MBR 或是 GPT。
在开始之前,您可能希望备份您当前的分区表和方案。
fdisk 会自动在 2048 个 512 字节扇区(1 MiB)块大小基础上自动进行分区对齐,这应该与所有使用先进格式化的 HDD 和绝大多数 SSD 兼容。这意味着默认设置会自动使用正确的对齐方式。
To use fdisk, run the program with the name of the block device you want to change/edit. This example uses /dev/sda:
要使用 fdisk,需带上你想要更改/编辑的块设备的名字来运行程序。在本例中我们使用 /dev/sda:
# fdisk /dev/sda
这将启动 fdisk 程序,您可以在其中键入命令。
- 分区前,请检查 NVMe 硬盘和高级格式硬盘是否使用了最佳逻辑扇区大小。
- 在固态硬盘(SSD)上分区前应考虑清空 SSD 存储单元。
要创建一个新的分区表并清除当前所有的分区信息,请在提示符下输入 g 以新建一个 GUID 分区表(GPT)或输入 o 新建一个 MBR 分区表。若已创建所需的分区表,请跳过此步骤。
使用 n 命令创建分区。需要输入分区编号,起始扇区和结束扇区。对于 MBR 类型分区,还可能需要输入分区类型。
使用 MBR 时,fdisk 会询问 MBR 分区的类型。输入 p 创建主分区,输入 e 创建扩展分区,最多可以创建四个主分区。
fdisk 默认不询问分区类型 ID,而是直接使用 'Linux filesystem',稍后可修改该 ID。
分区编号是分区在硬盘中的编号,例如硬盘 /dev/sda 的 1 号分区为 /dev/sda1,对于 /dev/nvme0n1 是 /dev/nvme0n1p1,而 /dev/mmcblk0 则是 /dev/mmcblk0p1。有关命名方案的详细信息请参阅设备分区名。分区的编号可能不与硬盘上的分区顺序一致,请参考分区排序。
建议使用 fdisk 推荐的默认编号。
起始扇区必须使用绝对扇区号。结束扇区可使用绝对扇区号或以这些单位指定:K、M、G、T 或 P。
结束扇区的位置可以是:
- 从硬盘起始位置开始的绝对位置。例如,
40M作为起始扇区,指定了距硬盘开头 40 MiB 的位置。 - 在
+size或-size后接大小的相对位置。例如,使用+2G以指定位于起始扇区之后 2 GiB 的位置,或使用-200M以指定位于最后一个可用扇区之前 200 MiB 的位置。
未输入扇区位置的指定值而直接按 Enter 键将使用默认值,对于起始扇区是最大可用块的开始位置,对于结束扇区则是最大可用块的结束位置。
重复此过程,直到获得所需的分区。
每个分区都有类型,MBR 使用分区 ID 进行定义; GPT 使用分区类型 GUID 进行定义。
按下 t 修改分区类型,可以使用以下别名指定常用分区类型:
输入 a 可以将一个 MBR 分区设置为可启动(即活动)分区。
- 使用
p显示更改内容。 - 使用
q放弃更改。 - 使用
w将更改写入硬盘并退出程序。
要移动分区,先要准备足够的空余硬盘空间。如果需要,可以缩小分区及文件系统,请参考 Parted#缩小分区。要移动分区:
# echo '+sectors,' | sfdisk --move-data device -N number
其中 sectors 是要偏移的扇区数,+ 表示增加,device 是分区所在设备,number 是分区编号。如果在硬盘的开始或中间增加了分区,想重新编号,可以参考 #分区排序 或 fdisk 的“额外功能”模式。
这适用于在两个分区之间的空间中创建或删除了分区的情况。本例中使用了 /dev/sda。
# sfdisk -r /dev/sda
在调整分区顺序后,如果没有使用块设备持久化命名,则需要调整 /etc/fstab、/etc/crypttab 等使用分区编号的配置文件。