Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 檔案系統核心架構深度解析:物理磁碟結構、Superblock、Inode、Data Block、目錄項、掛載流程

編輯:關於 Linux

Linux 檔案系統將原始區塊裝置轉為階層式命名空間。本文從物理磁碟幾何結構 (磁頭、磁軌、扇區、柱面) 切入,層層推導至 Superblock、Inode Table、Data Block 三大核心資料結構,並說明目錄項 (dentry) 如何將檔名映射至 Inode,以及 mount 系統呼叫如何掛載檔案系統。

檔案系統架構圖

一、物理磁碟幾何與容量計算

  • 盤片 (Platter) 雙面塗磁性介質,每面一磁頭。
  • 磁軌 : 同心圓;柱面 : 所有盤片相同半徑磁軌組成的圓柱面。
  • 扇區 : 最小儲存單位,傳統 512 bytes,新式 4K (Advanced Format)。
  • 容量公式:磁頭數 × 柱面數 × 每軌扇區數 × 每扇區位元組數。
  • 定址:柱面號、磁頭號、扇區號 (CHS) 或邏輯區塊定址 (LBA)。

二、檔案系統三大區塊

  1. Superblock (超級區塊):檔案系統元資料總表。含:檔案系統類型、大小、狀態、Inode 總數/剩餘、區塊大小、空閒區塊/Inode 位圖位置、掛載時間、最近寫入時間。
    備份 Superblock 分散於磁碟多處 (如 mkfs.ext4 -n /dev/sda1 查看備份位置)。
  2. Inode Table (索引節點表):每個檔案/目錄對應一個 Inode。含:檔案模式/權限、擁有者 UID/GID、時間戳 (atime/ctime/mtime)、連結計數、指向資料區塊的指標 (12 直接 + 1 單間接 + 1 雙間接 + 1 三間接)、檔案大小、Flags (extent、壓縮、不可變等)。
    Inode Number = 陣列索引,ls -i 查看。
  3. Data Block (資料區塊):實際檔案內容。大檔案跨越多個不連續區塊。目錄也是檔案,內容為 (inode#, filename) 陣列 (dentry)。

三、目錄項 (Dentry) 與路徑解析

  • VFS 層維護 Dentry Cache (dcache),加速路徑查找。
  • /home/user/file.txt 解析:
    根目錄 Inode (固定 2) → 查找 home dentry → 得到 Inode → 查找 user → 查找 file.txt → 取得目標 Inode → 讀取資料區塊。

四、掛載流程


mount -t ext4 /dev/sda1 /mnt
# 1. 核心讀取 /dev/sda1 Superblock 驗證魔數
# 2. 建立 super_block 結構體掛載至 VFS
# 3. 根目錄 dentry 掛載至 /mnt 路徑
# 4. 更新 /proc/mounts、/etc/mtab

五、常見檔案系統特性對比

FS最大檔案最大卷日誌Extent快照適用場景
ext416 TB1 EB有序是LVM通用 Linux 根分區
XFS8 EB8 EBMetadata是原生大檔案、高並發、資料倉儲
Btrfs16 EB16 EBCopy-on-Write是原生快照、去重、壓縮、RAID
ZFS256 ZB256 ZBIntent Log是原生企業級儲存、資料完整性

理解檔案系統底層結構,可精準排查 Inode 耗盡、Superblock 損壞、資料區塊損毀等嚴重故障。

Copyright © Windows教程網 All Rights Reserved