學習筆記:EXT4文件系統特性

圖:



大型文件系統

ext4文件系統可支持最高1 Exbibyte的分區與最大16 Tebibyte的文件。

 

  • 1 EB = 1024 * 1024 TB
  • block size: 4 bytes


向下兼容

ext4向下兼容於ext3與ext2,因此可以將ext3和ext2的文件系統掛載爲ext4分區。由於某些ext4的新功能可以直接運用在ext3和ext2上,直接掛載即可提升少許性能。

ext3文件系統可以部分向上兼容於ext4(也就是說ext4文件系統可以被掛載爲ext3分區)。然而若是使用到Extent技術的ext4將無法被掛載爲ext3。


拓展子目錄數量

在一個目錄中

  • Ext3 支持 32000 個子目錄
  • Ext4 支持 64000 個子目錄


拓展塊大小(Extents)

Ext3 爲每個文件維護一個 block 表,用於保存這個文件在磁盤上的塊號,因爲一個 block 只有 4kb 的大小,所以對於一個大文件來說的話,需要維護的 block 表佔用的空間就比較可觀了,刪除和截斷等操作的效率也就比較低。

ext4引進了Extent文件存儲方式,以取代ext2/3使用的block mapping方式。Extent指的是一連串的連續實體block,這種方式可以增加大型文件的效率並減少分裂文件。ext4支持的單一Extent,在單一block爲4KB的系統中最高可達128MB。單一inode中可存儲4筆Extent;超過四筆的Extent會以Htree(一種特殊的B樹)方式被索引。該功能已經實現於Linux核心2.6.23版。


預留空間

ext4允許對一文件預先保留磁盤空間。目前大多數文件系統做到這點的方式是直接產生一個填滿0的文件;ext4和XFS可以使用Linux核心中的一個新的系統調用“fallocate()”獲取足夠的預留空間。


延遲獲取空間

ext4使用一種稱爲allocate-on-flush的方式,可以在數據將被寫入磁盤(sync)前纔開始獲取空間;大多數文件系統會在之前便獲取需要的空間。這種方式可以增加性能並減少文件分散程度。


日誌校驗和

Ext4使用校驗和特性來提高文件系統可靠性,因爲日誌是磁盤上被讀取最頻繁的部分之一。這個特性還有一個好處就是可以安全地避免日誌處理時磁盤I/O的等待,而稍微提高一些性能。


在線磁盤整理

這個特性正在開發中,會包含到之後的版本中。

通過使用延遲分配、extents 和 多塊分配能夠有效減少磁盤碎片,但是文件內容變動(可以需要另外的 block 來存放數據,這個 block 可能會離原來的地方比較遠,從而引發一次額外的尋道)也會帶來很多碎片,磁盤碎片整理可以將文件儘可能的重分配到連續的 block 中,從而減少磁盤碎片,提高訪問效率。


快速文件系統檢查

Ext4將未使用的區塊標記在inode當中,這樣可以使諸如e2fsck之類的工具在磁盤檢查時將這些區塊完全跳過,而節約大量的文件系統檢查的時間。


Inode 相關特性

更大的 inodes:Ext3 支持配置inode 大小,默認爲 128 bytes,Ext4 默認爲 256 bytes。增加了一些額外的域(比如納秒級的 timestamps 或 inode 版本),剩餘的空間用來保存拓展屬性。這種方式可以使訪問這些屬性的速度更快,從而提高應用程序的性能。

當創建目錄時,直接爲其創建幾個保留的 inode 節點,當在這個目錄中創建新文件時,就可以直接使用這些保留的 inode 節點,從而提高文件創建和刪除的效率。

Ext3 的時間屬性是秒級的,Ext4 的時間屬性是納秒級的。




https://zh.wikipedia.org/wiki/Ext4

https://github.com/c-rainstorm/blog/blob/master/os/FileSystem-Ext4.md


發佈了135 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章