跳至內容

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/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 程序,您可以在其中鍵入命令。

創建新的分區表

[編輯 | 編輯原始碼]
警告:如果在存有數據的硬碟上創建新分區表,它將擦除硬碟上的所有數據。請務必確保這是你想要做的
提示:

要創建一個新的分區表並清除當前所有的分區信息,請在提示符下輸入 g 以新建一個 GUID 分區表(GPT)或輸入 o 新建一個 MBR 分區表。若已創建所需的分區表,請跳過此步驟。

創建分區

[編輯 | 編輯原始碼]

使用 n 命令創建分區。需要輸入分區編號,起始扇區和結束扇區。對於 MBR 類型分區,還可能需要輸入分區類型。

注意:分區大小和位置的選擇請參考 分區#分區方案

分區類型

[編輯 | 編輯原始碼]

使用 MBR 時,fdisk 會詢問 MBR 分區的類型。輸入 p 創建主分區,輸入 e 創建擴展分區,最多可以創建四個主分區。

fdisk 默認不詢問分區類型 ID,而是直接使用 'Linux filesystem',稍後可修改該 ID。

分區編號

[編輯 | 編輯原始碼]

分區編號是分區在硬碟中的編號,例如硬碟 /dev/sda1 號分區為 /dev/sda1,對於 /dev/nvme0n1/dev/nvme0n1p1,而 /dev/mmcblk0 則是 /dev/mmcblk0p1。有關命名方案的詳細信息請參閱設備分區名。分區的編號可能不與硬碟上的分區順序一致,請參考分區排序

建議使用 fdisk 推薦的默認編號。

起始和結束扇區

[編輯 | 編輯原始碼]

起始扇區必須使用絕對扇區號。結束扇區可使用絕對扇區號或以這些單位指定:KMGTP

結束扇區的位置可以是:

  • 從硬碟起始位置開始的絕對位置。例如,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 修改分區類型,可以使用以下別名指定常用分區類型:

  • uefiESP
  • xbootldr: XBOOTLDR 分區
  • homehome 分區
  • swapswap 交換分區
  • 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)。

另見

[編輯 | 編輯原始碼]