ext4 文件系统新特性
?????? Ext4的名稱來源于4th extended filesystem,它是廣泛應(yīng)用于Linux的Ext3文件系統(tǒng)的后繼。同Ext3類似,Ext4也是日志文件系統(tǒng)。而與Ext3僅僅是將日志功能加入到Ext2中不同,Ext4對Ext3做了很多深層次的改進,文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)也有變化。目前的Ext4文件系統(tǒng)設(shè)計更合理、性能有所提高、可靠性得到增強,還引入了一些新功能。
新特性
做為新一代文件系統(tǒng),Ext4文件系統(tǒng)具有很多新特性:
新功能
?
?
?
?
?
?
?
大文件系統(tǒng)與大文件支持
?
Ext4文件系統(tǒng)最大支持1 exabyte(10006B=10003GB)的卷,最大文件可達16TB。
?
?
?
?
?
在線碎片整理(Online defragmentation)
?
?
(開發(fā)中)盡管ext4引入了很多避免碎片產(chǎn)生的技術(shù),一個用了很長時間的文件系統(tǒng)總歸要產(chǎn)生一些碎片。Ext4將提供一個可以為單個文件及整個文件系統(tǒng)進行碎片整理的工具。雖然目前已經(jīng)有不少在線整理磁盤的解決方法,但主流內(nèi)核還未加入對他們的支持。
?
?
?
?
打破子文件夾數(shù)限制
?
?
ext3中一個文件夾的子文件夾數(shù)不能超過32000,在ext4中,這一限制被取消。
?
?
?
?
時間戳的改進
?
由于計算機總是越來越快,不過任務(wù)對時間精度的要求不斷提升,精確到“秒”的時間戳越來越顯得不夠用了。為此,Ext4引入了精確到“納秒”的時間戳。另外,ext4還在將秒的表示增加了2個比特,這就避免了“2038年問題”,使時間的表示范圍增加了約500年。ext4還引了對文件創(chuàng)建時間戳的支持。不過正如Theodore Ts'o所指出的,要使更多的程序支持這一特性,可能還需要修改諸如stat()之類的系統(tǒng)調(diào)用函數(shù),而如glibc等依賴于它們的庫也需要做相應(yīng)的更新。正因如此,“文件創(chuàng)建時間戳”走入用戶應(yīng)用程序可能還需要一段時間。
?
?
?
?
?
無日志模式
?
?
有些特殊應(yīng)用可能希望通過取消日志來提高性能,Ext4提供無日志模式以適應(yīng)這些特殊需求(從2.6.29內(nèi)核開始支持)。
?
性能提升
?
?
?
?
?
?
?
更快速的文件系統(tǒng)檢查
?
fsck檢查磁盤速度慢的一個重要原因是它在第一步要掃描所有的inode。ext4對未分配的inode做了適當(dāng)標記,這讓fsck檢查磁盤時可以將它們整塊地忽略掉,大大加快了磁盤檢查的時間。
?
?
?
?
?
Extents
?
?
Ext2/3等老Linux文件系統(tǒng)使用間接塊映射模式(block mapping),文件的每一個塊都要被記錄下來,這使得對大文件的操作(如刪除)效率低下。Ext4引入Extents這一概念來代替ext2/3使用的傳統(tǒng)的塊映射(block mapping)方式。“extent”是一個大的連續(xù)的物理塊區(qū)域,它的引入加快了處理大文件的性能、減少了碎片。當(dāng)塊大小為4KB時,ext4中的一個extent最大可以映射128MB的連續(xù)物理存儲空間。
?
?
?
?
持續(xù)預(yù)分配空間(Persistent pre-allocation)
?
?
ext4文件系統(tǒng)允許為文件預(yù)分配磁盤空間。目前多數(shù)文件系統(tǒng)實現(xiàn)這一功能的方法是在要分配的空間中添滿0。 在ext4中不再采用這一方法,而是用一個新的fallocate()內(nèi)核系統(tǒng)調(diào)用來實現(xiàn)(支持ext4和XFS),且其分配的空間很可能是連續(xù)的。這一技術(shù)在流媒體、P2P等多種場合中都有廣泛應(yīng)用。
?
?
?
?
延時分配(Delayed allocation)
?
?
該技術(shù)也稱為allocate-on-flush,可以提升文件系統(tǒng)的性能。只有數(shù)據(jù)將要被真正寫入磁盤時,文件系統(tǒng)才為其分配塊,這與其它文件系統(tǒng)在早期就分配好必要的塊是不同的。另外,由于ext4的這種做法可以根據(jù)真實的文件大小做塊分配決策,它還減少了碎片的產(chǎn)生。
?
?
?
?
多塊分配(Multiblock allocator)
?
?
Ext3文件系統(tǒng)為每次寫操作最多分配一個4K塊(block),在處理大文件時會導(dǎo)致性能的下降。Ext4在一次操作中可以分配多個塊,并盡力讓這些塊連續(xù),這有助于減少磁盤碎片。當(dāng)啟用了延時分配或使用O_DIRECT時這一功能即被啟用。
?
可靠性增強
?
?
?
?
?
?
?
日志校驗
?
?
日志通常用于在硬件故障發(fā)生后恢復(fù)數(shù)據(jù),它是日志文件系統(tǒng)中最重要的部分之一,按照損壞的日志執(zhí)行恢復(fù)操作可能導(dǎo)致嚴重的后果。所以Ext4為日志增加了校驗和以提升可靠性。這一特性還可以安全地避免寫日志進程的磁盤I/O等待時間,并略微提高了性能。
?
兼容性
?
?
?
?
?
?
?
前向兼容
?
?
ext4文件系統(tǒng)與ext3部分向前兼容。即只要不啟用extents(ext4的一項新特性),ext4文件系統(tǒng)就可以做為ext3文件系統(tǒng)掛載。
?
?
?
?
后向兼容
?
?
ext4后向兼容與ext3和ext2,即可以將ext3或ext2文件系統(tǒng)做為ext4分區(qū)掛載。由于此時可以使用ext4的一些新特性(如新的塊分配算法),這樣做時還可以稍稍提升性能。
?
轉(zhuǎn)載于:https://blog.51cto.com/michaelkang/951434
總結(jié)
以上是生活随笔為你收集整理的ext4 文件系统新特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 数据存储到什么地方?
- 下一篇: NSTableView使用笔记(一)