ext4

Linux系統下的日誌檔案系統

第四代擴充套件檔案系統(英語:Fourth extended filesystem,縮寫為ext4)是Linux系統下的日誌檔案系統,是ext3檔案系統的后继版本。

ext4
开发者Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh, others
全称Fourth extended file system
发布穩定版: 2008年10月21日
不穩定版: 2006年10月10日 (Linux 2.6.28, 2.6.19)
分区标识0x83(MBR
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(GPT
结构
目录内容链表, hashed B-tree
文件分配Extents/Bitmap
坏块表格
限制
最大文件尺寸16 TiB(for 4k block filesystem)
最大文件数量40億(在檔案系統建立時指定)
最长文件名256位元組
最大卷容量1 EiB
文件名字符集除NULL('\0')和 '/'外之所有字元(大小寫敏感)
功能
日期记录修改(mtime),屬性修改(ctime),讀取(atime),刪除(dtime),建立(crtime)
日期范围1901年12月14日 - 2514年4月25日
日期分辨率纳秒
岔流
属性extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev
文件系统权限POSIX
透明压缩
透明加密
单一实例存储(SIS)
操作系统支持LinuxAndroidWindows(通过Ext2Fsd

歷史

编辑

ext4原始的開發目標是一系列的向下兼容ext3、移除其64位元限制與提升其效能的延伸套件[1]。然而,某些Linux開發者因穩定性原因而拒絕將這些延伸套件應用在ext3上[2],並要求其作為ext3的分支,改名為ext4並另行開發,以免影響到目前的ext3使用者。該要求被接受以後,ext3維護者曹子德(Theodore Ts'o)在2006年6月28日公開了ext4的開發計畫[3]

在Linux核心2.6.19版中,首次導入ext4的一個先期開發版本[4]。在2008年10月11日,ext4被當成穩定版本,加入Linux 2.6.29版的原始碼中,ext4的開發階段進入尾聲[5]。2008年12月25日,Linux 2.6.29版公開釋出之後,ext4成為Linux官方的建議預設檔案系統。

2010年1月15日,Google宣布將他們公司使用的檔案系統,由ext2,升級為ext4。在同年12月14日,Google也宣布他們將在Android 2.3版中,使用ext4來取代之前的YAFFS

特色

编辑
大型檔案系統
ext4檔案系統可支援最高1 EB大小的分割區[6]與最大16 TB大小的檔案。
Extents
ext4引進了Extent檔案儲存方式,以取代ext2/3使用的block mapping方式。Extent指的是一連串的連續實體block,這種方式可以增加大型檔案的效率並減少分裂檔案。ext4支援的單一Extent,在單一block為4KB的系統中最高可達128MB[1]。單一inode中可儲存4筆Extent;超過四筆的Extent會以Htree方式被索引。
向下相容
ext4向下相容於ext3ext2,因此可以將ext3和ext2的檔案系統掛載為ext4分割區。由於某些ext4的新功能可以直接運用在ext3和ext2上,直接掛載即可提升少許效能。
ext3檔案系統可以部分向上兼容於ext4(也就是說ext4檔案系統可以被掛載為ext3分割區)。然而若是使用到Extent技術的ext4將無法被掛載為ext3。
預留空間
ext4允許對一檔案預先保留磁碟空間。目前大多數檔案系統做到這點的方式是直接產生一個填滿0的檔案;ext4和XFS可以使用Linux核心中的一個新的系統呼叫「fallocate()」取得足夠的預留空間。
延遲取得空間
ext4使用一種稱為allocate-on-flush英语Allocate on flush的方式,可以在資料將被寫入磁碟(sync)前才開始取得空間;大多數檔案系統會在之前便取得需要的空間。這種方式可以增加效能並減少檔案分散程度。
突破32000子目錄限制
ext3的一個目錄下最多只能有32000個子目錄。ext4的子目錄最高可達64000,且使用「dir_nlink」功能後可以達到更高(雖然父目錄的link count會停止增加)。為了避免效能受到大量目錄的影響,ext4預設開啟Htree英语Htree(一種特殊的B树)索引功能。該功能已經實作於Linux核心2.6.23版。
日志校验和
Ext4使用校验和特性来提高文件系统可靠性,因为日志是磁盘上被读取最频繁的部分之一。这个特性还有一个好处就是可以安全地避免日志处理时磁盘I/O的等待,而稍微提高一些性能。日志校验和的技术源于威斯康辛大学的一篇名为IRON File Systems的研究论文(见第六节transaction checksums校验和处理)[7]
在线磁盘整理
对于在线磁盘整理工具有许多草案,但是这些草案都没有被包含在主流的内核当中。即使Ext4包含有许多避免磁盘碎片的技术,但是磁盘碎片还是难免会在一个长时间使用过的文件系统中存在。Ext4将会有一个具有磁盘整理功能的工具[8]
快速文件系统检查
Ext4将未使用的区块标记在inode当中,这样可以使诸如e2fsck之类的工具在磁盘检查时将这些区块完全跳过,而节约大量的文件系统检查的时间。这个特性已经在2.6.24版本的Linux内核中实现。

参见

编辑

參考資訊

编辑
  1. ^ 1.0 1.1 Mathur, Avantika; Cao, MingMing; Bhattacharya, Suparna; Dilger, Andreas; Tomas, Alex; Vivier, Laurent. The new ext4 filesystem: current status and future plans (PDF). Proceedings of the Linux Symposium. Ottawa, ON, CA: Red Hat. 2007 [2008-01-15]. [永久失效連結]
  2. ^ Torvalds, Linus. extents and 48bit ext3. LKML. 2006-06-09 [2009-10-23]. (原始内容存档于2017-08-22). 
  3. ^ Ts'o, Theodore. Proposal and plan for ext2/3 future development work. LKML. 2006-06-28 [2009-10-23]. (原始内容存档于2009-02-19). 
  4. ^ Leemhuis, Thorsten. Higher and further: The innovations of Linux 2.6.28(page 2). Heise Online. 2008-12-23 [2010-01-09]. (原始内容存档于2009-01-03). 
  5. ^ ext4: Rename ext4dev to ext4. Linus' kernel tree. [2008-10-20]. (原始内容存档于2019-12-10). 
  6. ^ Migrating to Ext4. DeveloperWorks. IBM. [2008-12-14]. (原始内容存档于2008-12-01). 
  7. ^ Vijayan Prabhakaran; et al. IRON File Systems (PDF). CS Dept, University of Wisconsin. [2009-10-23]. (原始内容存档 (PDF)于2010-06-15). 
  8. ^ ext4新功能#在线磁盘碎片整理. [2010-09-07]. (原始内容存档于2018-01-10). 

相关介绍

编辑

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy