fdisk - Arch Linux 中文维基

跳至內容

# fdisk

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 fdisk，最近一次同步於 2026-04-08，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- 文件系統
- GPT fdisk
- Parted
- 分區
- dd

util-linux fdisk 是基於命令行界面的分區表創建和編輯工具。一個硬碟需要分為一個或多個分區，這個信息被記錄在分區表裡面。

本文介紹 3 種有著不同交互界面的分區工具：

- fdisk(8)——常用的命令行分區工具（對話式交互）。
- sfdisk(8)——支持腳本的分區工具，可用於自動配置和備份、恢復分區。
- cfdisk(8)——操作簡單方便的 TUI 分區工具。

## 安裝

要使用 fdisk 及相關工具，請使用 util-linux包 軟體包，這個軟體包是 base包 元軟體包的依賴。

## 顯示分區

要列出塊設備上的分區表和分區，可以運行以下命令，其中設備的名稱類似於 `/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

## 創建分區表和分區

硬碟分區的第一步是創建分區表。然後，根據所需的分區方案創建實際分區。參見分區表一文來幫助你選擇使用 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` 鍵將使用默認值，對於起始扇區是最大可用塊的開始位置，對於結束扇區則是最大可用塊的結束位置。

注意：

- 分區時，使用起始分區的默認值總是個不錯的選擇。此外，確保指定分區大小時使用 `+size{M,G,T,P}` ，不要使用小於 1 MiB 的大小。此類分區始終根據設備屬性對齊。
- EFI 系統分區需要 `EFI System` 類型的分區。
- 將 GRUB 安裝到基於 BIOS 系統的 GPT 分區的設備上時，GRUB 需要一個 `BIOS boot` 類型的 BIOS 啟動分區。

提示：在使用 MBR 分區表的硬碟上，需在硬碟末尾保留至少 33 個 512 字節扇區大小（16.5 KiB）的未分區空間以便在 MBR 與 GPT 分區表之間轉換。

重複此過程，直到獲得所需的分區。

### 修改分區類型

每個分區都有類型，MBR 使用分區 ID 進行定義; GPT 使用分區類型 GUID 進行定義。

按下 `t` 修改分區類型，可以使用以下別名指定常用分區類型：

- `uefi`： ESP
- `xbootldr`： XBOOTLDR 分區
- `home`：home 分區
- `swap`： swap 交換分區
- `linux`：用於其它分區

提示：

- 按下 `L` 可以顯示 fdisk 的內部碼表。
- 在使用 GPT 時，建議遵循 可偵測分區標準，以使用 GPT 自動掛載功能。

### 將 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 操作更簡單方便，但也不支持 fdisk 在 extra/expert 下的大多數特性和功能。 cfdisk 的使用方式如下：

    # cfdisk /dev/sda

- 按下 `?` 顯示幫助頁面。
- cfdisk 啟動後，界面頂部會顯示目前的分區情況。有著 `>>` 游標和反色背景的分區是被選中的分區。用戶可以使用上下方向鍵來選擇不同的分區。
- 界面底部顯示已被選中的分區的詳細信息以及可用的命令列表。命令的幫助說明顯示在命令的下方。使用左右方向鍵選擇某個命令，按下 `Enter` 鍵執行。
- 類似 fdisk，所有的操作都會按順序列隊並等待用戶運行 `Write` 命令後才會真正執行並寫入硬碟。用戶可以隨時丟棄任何修改並安全地退出程序。
- 如果磁碟上還沒有分區，cfdisk 會詢問是否需要創建一個分區。如需要修改已有的分區表格式，則必須擦除硬碟內容或改用 fdisk 重建分區表。

## 另見

- Managing partitions in Linux with fdisk

分類：​

- 文件系統
- 系統恢復
- 命令

fdisk
新增話題