Ext4 Internals
Keywords
Prerequisites
Related Papers
- Fast Commit for Ext4(USENIX ATC 2024)
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 機制,如何讓檔案系統在不同版本間保持向前與向後相容