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
創建分區表和分區[編輯 | 編輯原始碼]
磁盤 partitioning 的第一步是創建分區表. 然後, 根據所需的 partition scheme 創建實際分區.參見 partition table 一文來幫助你選擇使用 MBR 或是 GPT.
在開始之前,您可能希望 backup 您當前的分區表和方案.
fdisk在 2048 個 512 字節扇區 (1 MiB) 塊大小基礎上自動進行分區對齊,這應該與所有使用 Advanced Format 的HDD和絕大多數 SSD 兼容。 這意味着默認設置會自動使用正確的對齊方式。
為了使用 fdisk, 帶上你想要更改/編輯的 block device 的名字,運行程序。在本例中我們使用 /dev/sda
:
# fdisk /dev/sda
這將啟動「fdisk」程序,您可以在其中鍵入命令。
創建新的分區表[編輯 | 編輯原始碼]
- 分區前,請檢查 NVMe 驅動器和高級格式硬盤驅動器是否使用最佳邏輯扇區大小。
- 在固態硬盤(SSD)上分區前應考慮執行 SSD 內存單元清理。
要創建一個新的分區表並清除當前所有的分區信息,請在提示符下輸入 g
以新建一個 GUID 分區表(GPT)或輸入 o
新建一個 MBR 分區表。若已創建所需的分區表,請跳過此步驟。
創建分區[編輯 | 編輯原始碼]
使用 n
命令創建分區。需要輸入 MBR 分區類型、分區號、起始扇區和結束扇區。
分區大小和位置的選擇請參考 Partitioning#Partition scheme。
分區類型[編輯 | 編輯原始碼]
使用 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
修改分區類型,默認是 Linux filesystem
,正常情況下都無需修改。
- 按
L
可以顯示 fdisk 的內部碼表。 - 由於 systemd-gpt-auto-generator 會自動掛載 GPT 分區,因此在使用 GPT 分區時,建議遵循 可偵測分區標準。例如,為根分區使用
Linux root (x86-64)
、為交換分區(swap)使用Linux swap
、為 home 分區使用Linux home
,以此類推。
設置分區啟動位[編輯 | 編輯原始碼]
a
可以將一個 MBR 分區設置為可啟動分區。
檢查分區表更改[編輯 | 編輯原始碼]
- 使用
p
顯示更改內容。 - 使用
q
放棄更改。 - 使用
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
等使用分區編號的配置文件。