Fdisk
util-linux fdisk 是基于命令行界面的分区表创建和编辑工具。一个硬盘需要分为一个或多个分区,这个信息在分区表里面记录。
本文介绍 fdisk(8) 和 sfdisk(8) 工具的使用。
安装[编辑 | 编辑源代码]
要使用 fdisk 及相关工具,请使用 util-linux包 软件包,这个软件包是 base包 的依赖。
显示分区[编辑 | 编辑源代码]
要列出设备上的分区表和分区,可以运行以下命令,假设设备的名称为 /dev/sda
:
# 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 /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/sda
的 1
号分区为 /dev/sda1
。分区的编号可能不与磁盘上的分区顺序一致,请参考 分区排序。
建议使用 fdisk 推荐的默认编号。
起始和结束扇区[编辑 | 编辑源代码]
起始扇区必须使用绝对扇区号,结束扇区可以使用绝对位置或者使用 +
符号指定相对偏移量,单位可指定为 K
、M
、G
、T
) 或 P
,例如设置为 +2G
表示结束扇区为起始扇区增加 2GiB,不输入直接按 Enter
将用第一个空余扇作为开始扇区,同区块的结尾作为结束扇区。
- 在分区时,遵循第一个和最后一个分区扇区的默认值是一个好主意。此外,使用“+<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
,正常情况下都无需修改。
- 按
L
可以显示 fdisk 的内部码表。 - 使用 GPT 时,建议遵循 可侦测分虚标准,这样 systemd-gpt-auto-generator(8) 会自动挂载这些分区。
设置分区启动位[编辑 | 编辑源代码]
a
可以将一个 MBR 分区设置为可启动分区。
将改动写入磁盘[编辑 | 编辑源代码]
使用 w
退出程序并将分区写入磁盘中.
移动分区[编辑 | 编辑源代码]
要移动分区,先要准备足够的空余磁盘空间。如果需要,可以缩小分区及文件系统,请参考 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
等使用分区编号的配置文件。