Ext4 Internals
AdvancedAdvanced

Ext4 Internals

Keywords

ext4block groupextent treedelayed allocationJBD2ordered modefast commitfeature flagsinode tableAsk ChatGPT

Prerequisites

Related Papers

Progress

Sign in to track your progress.

在理解了 journaling 的原理之後,我們將深入探討 Linux 上最廣泛使用的檔案系統 ext4 是如何將這些概念實作出來的。Ext4 將磁碟劃分為多個 block group,每個 group 包含各自的 inode table 與 data block,藉此提升資料的 locality。在 metadata 管理上,ext4 使用 extent tree 來高效地描述大型檔案的連續區塊配置,並透過 delayed allocation 策略將 block 分配延後到實際 writeback 時才執行,以獲得更好的連續配置效果。Journaling 的部分由獨立的 JBD2 層負責,它實作了 physical journaling,並支援 ordered mode 來保證 data 在 metadata commit 之前已經寫入磁碟。在這堂課中,我們也會介紹 ext4 superblock 中的 feature flags 機制,以及近年來 fast commit 等優化如何減少 journaling 的延遲開銷。

Key Concepts

我理解 ext4 的 block group layout,每個 group 包含各自的 inode table 與 data block,藉此提升資料存取的 locality

我理解 extent tree 如何高效地描述大型檔案的連續區塊配置,相比傳統 indirect block pointer 的優勢

我理解 delayed allocation 策略如何將 block 分配延後到 writeback 時執行,以獲得更好的連續配置效果

我理解 JBD2 journaling 層的運作方式,包括 ordered mode 如何保證 data 在 metadata commit 之前已寫入磁碟

我了解 fast commit 優化如何減少 journaling 的延遲開銷

我知道 ext4 superblock 中的 feature flags 機制,如何讓檔案系統在不同版本間保持向前與向後相容

Recommended Resources

Test Your Understanding