mkfs 格式化:建立各種檔案系統 文章首圖

mkfs 格式化:建立各種檔案系統

mkfs 格式化:建立各種檔案系統

在 Linux 系統管理與開發中,格式化磁碟或分割區是建立檔案系統的關鍵步驟。雖然我們常聽到 mkfs 這個指令,但它實際上是一個「前端指令」,負責根據參數自動呼叫底層對應的格式化程式(如 mkfs.ext4mkfs.xfs 等)。對於剛接觸 Linux 的管理者而言,理解 mkfs 的運作機制與選項,能幫助你在不同情境下選擇最適合的檔案系統,並避免資料遺失的風險。

mkfs 指令解析與核心選項

mkfs 的全名是 "make file system"。當你執行 mkfs 時,系統會根據你指定的檔案系統類型,尋找並執行對應的程式。例如,指定 ext4 時,它會呼叫 mkfs.ext4;指定 xfs 時,則呼叫 mkfs.xfs

以下是 mkfs 最常用且實用的選項:

  • -t <type>:指定檔案系統類型。這是 mkfs 最重要的選項,可選值包括 ext2ext3ext4xfsbtrfsvfat 等。
  • -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)或在其他程序中使用。 解決方案:

  1. 使用 df -hlsblk 確認分割區是否已掛載。
  2. 若已掛載,先使用 sudo umount /dev/sdb1 卸載。
  3. 若仍無法卸載,可檢查是否有程序佔用: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 系統維護更加得心應手。