檔案系統是作業系統管理資料的基石。本文系統梳理 Linux 檔案系統的 空間分配策略、inode 機制、連結類型、VFS 架構、主流檔案系統特性 (ext2/ext3/ReiserFS) 等核心知識,為效能調校與故障診斷打下理論基礎。
| 策略 | 機制 | 優點 | 缺點 |
|---|---|---|---|
| 區塊分配 | 按需分配單一區塊 | 空間利用率高,無內部碎片 | 檔案擴充易產生外部碎片,頻繁寫入 meta-data 降低效能 |
| 範圍分配 | 一次分配連續區塊群 | 減少 meta-data 寫入,循序讀取極快 | 隨機讀取無優勢,可能造成外部碎片 |
ext2/3 採區塊分配,ext4 引入 Extent (範圍) 機制大幅改善大檔案效能。
| 類型 | 特色 | 適用場景 |
|---|---|---|
| ext2 | 經典、無日誌 | /boot、USB 隨身碟 (減少寫入) |
| ext3 | ext2 + 日誌 | 通用伺服器、桌面 (預設有序模式) |
| ext4 | Extent、延遲配置、更大容量 | 現代 Linux 預設、大檔案/大分區 |
| ReiserFS | B*樹、小檔案極快、尾部壓縮 | 海量小檔案 (郵件隊列、新聞組) |
| XFS | 高平行、大檔案、線上擴容 | 大型儲存、影音串流、資料倉儲 |
| Btrfs/ZFS | COW、快照、內建 RAID、校驗和 | 新一代企業級、資料完整性優先 |
| vfat/ntfs | Windows 相容 | 雙系統共享、外接硬碟 |
核心層介面,向上提供統一 open/read/write 系統呼叫,向下掛載具體檔案系統驅動。屏蔽底層差異,實現「一切皆檔案」。
| 模式 | 資料日誌 | 元資料日誌 | 效能 | 一致性 |
|---|---|---|---|---|
| writeback | 無 | 有 | 最快 | 可能資料舊值 |
| ordered (預設) | 無 | 有 (資料先寫入) | 中等 | 資料/元資料一致 |
| journal | 全量 | 全量 | 最慢 | 最強一致性 |
掛載選項指定:mount -o data=ordered /dev/sda1 /mnt
tune2fs -j /dev/sda6 # 加入日誌
# 修改 /etc/fstab 類型為 ext3
tune2fs -l /dev/sda1 # 查看超級區塊資訊 (inode數、區塊大小、日誌狀態)
dumpe2fs -h /dev/sda1 # 同樣資訊
df -T # 列出掛載點檔案系統類型
lsblk -f # 含 UUID、類型、掛載點
理解分配策略、inode、日誌模式、VFS 等核心概念,能讓你在選型 (ext4 vs XFS vs Btrfs)、調校 (掛載選項、日誌模式)、排障 (inode 耗盡、日誌回放) 時做出科學決策。現代生產環境推薦:通用 ext4、大檔案 XFS、企業級資料完整性 Btrfs/ZFS、海量小檔案 ReiserFS (或 ext4 + dir_index)。