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)。

另見[編輯 | 編輯原始碼]