mkfs 格式化:建立各種檔案系統
在 Linux 系統管理與開發中,格式化磁碟或分割區是建立檔案系統的關鍵步驟。雖然我們常聽到 mkfs 這個指令,但它實際上是一個「前端指令」,負責根據參數自動呼叫底層對應的格式化程式(如 mkfs.ext4、mkfs.xfs 等)。對於剛接觸 Linux 的管理者而言,理解 mkfs 的運作機制與選項,能幫助你在不同情境下選擇最適合的檔案系統,並避免資料遺失的風險。
mkfs 指令解析與核心選項
mkfs 的全名是 "make file system"。當你執行 mkfs 時,系統會根據你指定的檔案系統類型,尋找並執行對應的程式。例如,指定 ext4 時,它會呼叫 mkfs.ext4;指定 xfs 時,則呼叫 mkfs.xfs。
以下是 mkfs 最常用且實用的選項:
-t <type>:指定檔案系統類型。這是mkfs最重要的選項,可選值包括ext2、ext3、ext4、xfs、btrfs、vfat等。-L <label>:設定卷標(Label),方便在檔案管理器中識別磁碟。-E <option>:傳遞給底層格式化程式的額外選項,用於調整區塊大小、日誌大小等進階參數。-f:強制格式化。當目標裝置已經是掛載狀態或已有檔案系統時,必須加上此參數才能執行。-v:詳細模式,顯示格式化過程的詳細資訊。
實戰範例:建立常見的檔案系統
以下範例將以 Ubuntu 22.04 或 Debian 12 為基礎,假設我們有一個未使用的磁碟分割區 /dev/sdb1。請務必注意,格式化會清除該分割區上的所有資料,操作前請確認目標裝置正確無誤。
1. 建立 Ext4 檔案系統(Linux 標準推薦)
Ext4 是目前 Linux 發行版最預設且穩定的檔案系統,支援大容量檔案與高可靠性。
sudo mkfs.ext4 -L "DataDisk" /dev/sdb1
預期輸出:
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
2. 建立 XFS 檔案系統(高效能與大檔案首選)
XFS 適合處理大量小檔案或單一超大檔案,常見於企業級伺服器與資料庫環境。
sudo mkfs.xfs -f -L "XFS_Disk" /dev/sdb1
預期輸出:
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
註:由於 /dev/sdb1 可能已有 ext4 標頭,mkfs.xfs 預設會拒絕覆蓋,因此必須加上 -f 參數。
3. 建立 VFAT 檔案系統(跨平台相容性)
若需與 Windows 或 macOS 共享資料,VFAT(FAT32)是最佳選擇,但單一檔案不可超過 4GB。
sudo mkfs.vfat -F 32 -n "SharedData" /dev/sdb1
預期輸出:
mkfs.fat 4.2 (2021-01-31)
常見問題與解決方案
Q1:執行 mkfs 時出現 "Device or resource busy" 錯誤
原因: 目標分割區目前正被系統掛載(mounted)或在其他程序中使用。 解決方案:
- 使用
df -h或lsblk確認分割區是否已掛載。 - 若已掛載,先使用
sudo umount /dev/sdb1卸載。 - 若仍無法卸載,可檢查是否有程序佔用:
lsof +D /mnt/your_mount_point,並終止相關程序後再嘗試格式化。
Q2:格式化後檔案系統容量顯示異常
原因: 預設情況下,mkfs 會保留約 5% 的空間給 root 用戶使用,以確保系統在磁碟滿載時仍能正常運作(如寫入日誌)。
解決方案:
若此磁碟僅供一般資料存儲,無需保留給系統,可使用 tune2fs 調整保留空間比例:
sudo tune2fs -m 0 /dev/sdb1
此指令將 ext4 檔案系統的保留空間比例設為 0%,釋放所有空間給使用者使用。
小結
mkfs 是 Linux 系統管理中不可或缺的工具。選擇正確的檔案系統類型至關重要:一般日常使用推薦 ext4,高效能伺服器推薦 xfs,而跨平台需求則選用 vfat。記住,格式化是不可逆的破壞性操作,務必在執行前再次確認裝置路徑(如 /dev/sdb1)而非整個磁碟(如 /dev/sdb),以免誤刪重要資料。掌握這些基礎指令,將讓你的 Linux 系統維護更加得心應手。