fdisk 與 parted:磁碟分割實戰
在 Linux 系統管理的世界裡,磁碟分割(Partitioning)是基礎且關鍵的一環。無論是安裝作業系統、擴展儲存空間,還是配置 RAID,你總是需要與磁碟分割表打交道。雖然圖形化工具如 GParted 提供了直觀的操作介面,但作為系統管理員,熟練掌握終端機指令 fdisk 與 parted 才是應對緊急狀況與自動化腳本的必備技能。
這篇文章將深入解析這兩款主流工具的差異與實戰用法,幫助你在 Ubuntu 22.04 或 Debian 12 環境中游刃有餘地處理磁碟問題。
為什麼需要區分 fdisk 與 parted?
在開始之前,我們必須釐清兩者的核心差異:
fdisk:傳統且強大的分割表操作工具,主要支援 MBR(Master Boot Record)分割表。雖然新版 fdisk 也支援 GPT,但在處理超過 2TB 的磁碟時,它並非最佳選擇。它的優勢在於精細控制每一個分割區,且幾乎在所有 Linux 發行版中預設安裝。parted:現代化的磁碟分割工具,原生支援 GPT(GUID Partition Table),能夠輕鬆處理超過 2TB 的大容量磁碟。它的命令語法更接近直覺,適合快速建立大容量的分割區。
警告:以下操作皆會修改磁碟結構,務必先確認設備名稱(如 /dev/sdb),並確保重要資料已備份,否則數據遺失風險極高。
fdisk 實戰:精細控制 MBR 分割
假設我們有一塊名為 /dev/sdb 的磁碟,我們想使用 fdisk 進行分割。
首先,進入 fdisk 互動模式:
sudo fdisk /dev/sdb
進入後,你可以輸入 p 查看目前磁碟的分割表狀態。若磁碟是全新的,你會看到 "No partition table found" 的訊息。
步驟一:建立新分割區
輸入 n 建立新分割區。系統會詢問分割區類型(p 為主分割區,e 為延伸分割區),通常選擇 p。接著指定分割區編號(預設為 1)以及起始磁軌(直接按 Enter 使用預設值)和結束磁軌(若希望使用所有空間,可輸入 +100G 指定大小或按 Enter 使用全部)。
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039):
步驟二:寫入變更
建立完分割區後,務必輸入 w 將變更寫入磁碟並離開。若輸入 q 則會放棄所有變更。
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
寫入後,系統可能不會自動識別新分割區。在 Ubuntu/Debian 中,你可以執行 partprobe 來通知核心重新讀取分割表,或直接使用 lsblk 確認新分割區 /dev/sdb1 是否出現。
parted 實戰:輕鬆處理大容量磁碟
對於大於 2TB 的磁碟,或者希望快速建立 GPT 分割表,parted 是更好的選擇。
步驟一:建立 GPT 分割表
sudo parted /dev/sdb
進入 parted 互動模式後,首先建立 GPT 分割表:
(parted) mklabel gpt
步驟二:建立分割區
使用 mkpart 指令。語法為 mkpart <名稱> <檔案系統類型> <起始位置> <結束位置>。注意,parted 的檔案系統類型參數僅供記錄,不會實際格式化。
(parted) mkpart primary ext4 1MiB 100%
這裡我們建立了一個名為 "primary" 的分割區,佔用整個磁碟空間,起始位置為 1MiB 以避免對齊問題。
步驟三:離開並格式化
輸入 quit 離開 parted。此時分割區已建立,但尚未格式化。我們使用 mkfs 將其格式化為 ext4 檔案系統:
sudo mkfs.ext4 /dev/sdb1
常見問題與解決方案
Q1: fdisk 無法儲存變更,提示 "Device or resource busy"
這通常發生在該磁碟分割區正被系統使用(例如已掛載或作為 swap 使用)。請先檢查並解除掛載:
sudo umount /dev/sdb1
若仍無法解除,可嘗試使用 lsof 找出佔用該裝置的進程並終止它。
Q2: parted 建立分割區後,lsblk 看不到新分割區?
parted 有時需要手觸發核心重新讀取分割表。你可以執行:
sudo partprobe
若無效,重啟系統是最保險的方式。此外,確保你的核心支援 GPT(現代核心皆支援)。
小結
fdisk 與 parted 各有千秋:fdisk 適合處理傳統 MBR 分割與精細調整,而 parted 則是大容量 GPT 磁碟的最佳夥伴。在實戰中,建議先使用 lsblk 或 fdisk -l 確認目標磁碟,並謹慎執行寫入指令。掌握這兩款工具,將讓你在 Linux 儲存管理上更加自信與專業。